洪繼煒,王佳斌,劉 成
(華僑大學(xué)工學(xué)院,泉州 362021)
互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,數(shù)據(jù)量的劇增,信息爆炸和大數(shù)據(jù)技術(shù)的普及,促進(jìn)了個性化推薦技術(shù)的不斷發(fā)展。用戶在使用互聯(lián)網(wǎng)時,面對數(shù)以萬計的信息、大量的數(shù)據(jù),可以快速得到自己想要的信息變成了一個非常值得研究的課題。推薦系統(tǒng)[1-2]隨之而來,也成為各大互聯(lián)網(wǎng)公司研究的重點,各大互聯(lián)網(wǎng)公司通過自家業(yè)務(wù)的特點,研究出適合自家公司業(yè)務(wù)的推薦算法,從而提高用戶滿意度,提升公司收益。推薦系統(tǒng)的核心是推薦算法,一個優(yōu)秀的推薦算法可以給用戶舒適的體驗感,提升用戶的留存和公司收益。反之,一個劣質(zhì)的推薦算法會造成用戶流失和公司收益逐漸走低。推薦系統(tǒng)也在各種場合發(fā)揮著重要的作用[3-4]。協(xié)同過濾是應(yīng)用最廣泛的模型,因為其模型的簡單,應(yīng)用起來十分高效。2005 年,Lemire 等[5]提出了Slope One 推薦算法,它是一種基于項目的協(xié)同過濾算法。加權(quán)Slope One 算法對于傳統(tǒng)Slope One算法的改進(jìn),在數(shù)據(jù)集較為密集時,效果并不明顯,因此本文提出項目相似度的加權(quán)Slope One算法。
早在1992年,Xerox研究中心開發(fā)了一種基于協(xié)同過濾的郵件篩選系統(tǒng)[6]。協(xié)同過濾一直是研究熱點和業(yè)界使用最多的推薦算法。協(xié)同過濾分為基于用戶的協(xié)同過濾算法(UserCF)和基于物品的協(xié)同過濾算法(ItemCF)[7]。不論是UserCF 還是ItemCF 都是通過計算用戶之間(或者物品之間)的相似度進(jìn)行推薦。相似性度量方法主要有杰卡德(Jaccard)相似系數(shù)、余弦相似度、Person 相關(guān)系數(shù)[8]。當(dāng)遇到較為稀疏的數(shù)據(jù)時,Slope One 算法比傳統(tǒng)的協(xié)同過濾算法推薦結(jié)果更加準(zhǔn)確、執(zhí)行效率更高、更容易實現(xiàn)和維護(hù)。
Slope One 算法預(yù)測評分進(jìn)行推薦,主要分為以下兩步:
第一步:計算項目之間的平均評分差值,公式如下:
其中:rui、ruj分別表示用戶u對項目i、j的評分;|Sij|表示同時對項目i和j都有評分的用戶個數(shù)。
第二步:計算項目之間的平均評分差值后,對項目i進(jìn)行預(yù)測評分,公式如下:
其中:S(u)表示用戶u評分的項目集合;S(u)-{i} 表示至少有一個與項目i同時被用戶u評分的項目集合。
Lemire 等[5]還提出了一種加權(quán)Slope One 算法,在上述Slope One 算法計算過程中,存在著一定的局限性,同時被評分的當(dāng)前項目的數(shù)量多和數(shù)量少都具有同樣的權(quán)重,并沒有考慮評分?jǐn)?shù)量,從而使推薦準(zhǔn)確度有所偏差。
加權(quán)Slope One 算法,對共同評分的數(shù)量在預(yù)測評分公式中進(jìn)行加權(quán)計算。預(yù)測評分公式如下:
其中:|Sij|表示同時對項目i和j進(jìn)行評分的用戶個數(shù)。
加權(quán)Slope One 算法在Slope One 算法基礎(chǔ)上,考慮了共同評分的數(shù)量,但是當(dāng)數(shù)據(jù)集中用戶評分矩陣較為密集時,加權(quán)Slope One 算法改進(jìn)效果并不明顯。針對此問題,葉飛等[9]利用SVD++算法對評分矩陣進(jìn)行填充,緩解數(shù)據(jù)的稀疏性問題,再使用融合相似度的加權(quán)Slope One 算法進(jìn)行二次預(yù)測,提高推薦準(zhǔn)確性。陸勝偉等[10]在加權(quán)Slope One 評分預(yù)測公式中考慮了時間因子,擁有了更高的準(zhǔn)確率。韓影[11]采用項目屬性相似度的加權(quán)Slope One 算法進(jìn)行推薦預(yù)測,提高了推薦精度。孫樂[12]提出將用戶相似度與加權(quán)Slope One 算法相結(jié)合的改進(jìn)算法,使推薦結(jié)果更加準(zhǔn)確。
本文提出項目相似度的加權(quán)Slope One 算法,使用Person 相關(guān)系數(shù)計算兩個項目的相似度,并將Person 相關(guān)系數(shù)做了歸一化處理再與加權(quán)Slope One 評分預(yù)測公式結(jié)合。使用Movielens 100k 數(shù)據(jù)集進(jìn)行實驗,通過對比Slope One算法、加權(quán)Slope One 算法和改進(jìn)后算法的平均絕對誤差MAE的值,分析改進(jìn)后的算法推薦準(zhǔn)確度。
其中:pij∈[-1,1]表示項目i和項目j的Person 相似度;U為所有用戶集合;rˉi表示項目i評分的平均值。
其中:Wp∈[0,1]表示項目i和項目j的相關(guān)程度。
其中:Wp表示Person相關(guān)系數(shù)歸一化處理后的值。
本文使用的是Movielens 數(shù)據(jù)集[13],選用的是ml-100k的數(shù)據(jù)集,包含943個用戶對1682部電影的1~5 的評分,數(shù)據(jù)集的數(shù)據(jù)稀疏度為93.7%。將ml-100k 的數(shù)據(jù)集隨機(jī)劃分為不相交的五份訓(xùn)練集和測試集,每份訓(xùn)練集、測試集中分別有80000 條數(shù)據(jù)和20000 條數(shù)據(jù),需要反復(fù)實驗五次,最終結(jié)果是反復(fù)實驗五次推薦指標(biāo)(MAE)數(shù)值的均值。
為了評估改進(jìn)算法是否有效、客觀。實驗采用平均絕對誤差MAE[14-15]來驗證本文提出項目相似度加權(quán)Slope One 算法所得的預(yù)測結(jié)果與用戶真實評分的差距。MAE計算公式如下:
MAE的值與預(yù)測評分和真實評分有關(guān),預(yù)測評分和真實評分誤差越小,MAE值越小,說明推薦越準(zhǔn)確,推薦的質(zhì)量也就越高。
使用Movielens數(shù)據(jù)集中的ml-100k,隨機(jī)劃分為不相交的五份訓(xùn)練集和測試集,對這五份數(shù)據(jù)集進(jìn)行五次實驗,五次實驗的推薦指標(biāo)(MAE)結(jié)果見表1。
表1 3種算法實驗的MAE結(jié)果
圖1 不同算法五次實驗結(jié)果對比
實驗結(jié)果如圖1 所示,從圖1 可以看出,在Movielens 100k 的數(shù)據(jù)集實驗中,項目相似度的加權(quán)Slope One 算法五次實驗的MAE平均值與加權(quán)Slope One 算法相比下降了0.68,與Slope One算法相比下降了1.08。本文改進(jìn)算法的MAE值更小,推薦誤差明顯減小,預(yù)測評分更接近真實值,推薦效果更準(zhǔn)確,推薦質(zhì)量更高。
本文介紹了傳統(tǒng)Slope One 和加權(quán)Slope One算法,為了提高推薦準(zhǔn)確度,提出了項目相似度的加權(quán)Slope One 算法,通過Person 相關(guān)系數(shù)計算出項目的相關(guān)性,然后對Person 相關(guān)系數(shù)進(jìn)行歸一化處理與加權(quán)Slope One 算法結(jié)合。通過Movielens 100k 數(shù)據(jù)集中五份不相交的測試集和訓(xùn)練集,進(jìn)行五次實驗,分析比較結(jié)果表明:項目相似度的加權(quán)Slope One 算法MAE值更小,推薦效果更準(zhǔn)確。說明本文改進(jìn)算法具有實踐意義和學(xué)術(shù)研究的價值。雖然改進(jìn)算法取得一定的成效,但是仍然存在一定的提升空間,今后也將繼續(xù)在此方面進(jìn)行研究,以期達(dá)到更準(zhǔn)確的推薦。