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

表1 3種算法實驗的MAE結果

圖1 不同算法五次實驗結果對比
實驗結果如圖1 所示,從圖1 可以看出,在Movielens 100k 的數據集實驗中,項目相似度的加權Slope One 算法五次實驗的MAE平均值與加權Slope One 算法相比下降了0.68,與Slope One算法相比下降了1.08。本文改進算法的MAE值更小,推薦誤差明顯減小,預測評分更接近真實值,推薦效果更準確,推薦質量更高。
本文介紹了傳統Slope One 和加權Slope One算法,為了提高推薦準確度,提出了項目相似度的加權Slope One 算法,通過Person 相關系數計算出項目的相關性,然后對Person 相關系數進行歸一化處理與加權Slope One 算法結合。通過Movielens 100k 數據集中五份不相交的測試集和訓練集,進行五次實驗,分析比較結果表明:項目相似度的加權Slope One 算法MAE值更小,推薦效果更準確。說明本文改進算法具有實踐意義和學術研究的價值。雖然改進算法取得一定的成效,但是仍然存在一定的提升空間,今后也將繼續在此方面進行研究,以期達到更準確的推薦。