摘要:SlopeOne算法基于簡單的線性回歸模型,通過減少響應時間和維護難度,顯著提高了推薦性能。然而SlopeOne算法沒有考慮用戶內部的關聯,同等地使用各個用戶數據進行預測,容易造成偏差,影響推薦質量。本文提出了一種改進的Slope One算法,它將用戶相似度納入考慮并且對評分偏差計算公式進行了修正。基于項目的Slope One算法結合基于用戶的協同過濾算法,提出新的混合推薦算法US-Slope One。在MovieLens數據集上的實驗結果表明,該算法與原Slope One算法相比具有更好的預測準確度和推薦質量。
關鍵詞:協同過濾;用戶相似度;SlopeOne;數據挖掘;個性化推薦
中圖分類號:TP391 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2016.04.015
0 引言
當今互聯網信息量不斷擴大,網絡經濟發展迅猛,信息過載成為社會性問題。個性化推薦系統是解決這一問題的一種有效工具。協同過濾技術在推薦系統,尤其是在電子商務中得到了廣泛的應用,幾乎所有大型電子商務平臺都使用了各種推薦系統,對用戶的特征和喜好進行分析,并提供更具個性化的推薦。協同過濾利用具有相似經驗的用戶群體的偏好信息為特定用戶進行商品或信息的推薦。根據模型的不同,協同過濾可分為基于用戶的協同過濾和基于項目的協同過濾。
Slope One算法是一種基于項目的協同過濾算法,它使用一個線性回歸模型進行預測,在與其他復雜的協同過濾推薦具有同等推薦精度的前提下,花銷更少,更加易于實現。它的簡潔高效使得采用Slope One算法的推薦系統更加易于實現和維護。然而,Slope One算法在進行推薦時,沒有考慮到用戶的作用,用戶間的內在關聯對預測結果起著重要影響。Slope One算法不加區分地采用所有用戶評分數據來計算項目之間的偏差,這就導致一些與當前活躍用戶偏好不同甚至相反的用戶數據同等參與了預測,這會削弱擁有高相似度的用戶的作用效果,使得預測精度降低。采用聚類或動態k近鄰可以去除部分噪聲數據,但卻造成了數據丟失。數據稀疏性問題是當前推薦系統所面臨的主要問題之一。在數據極端稀疏的情況下,數據的缺失將使得推薦效果很不理想。
因此本文提出了一種改進的Slope One算法(US-Slope One),利用用戶相似度對用戶評分差值進行加權,使得擁有不同相似度的用戶數據以不同權重參與預測,實現在盡可能保證不丟失評分信息的前提下,在非稠密數據集中的推薦精度得到提升。
1 Slope one算法理論
1.1 SlopeOne算法
假設推薦系統中有m個用戶和n個項目,分別建立兩個集合U={u1,u2,…,um}和I={i1,i2,…,in},U代表用戶集合,I代表項目集合。推薦算法常用矩陣Rm×n來表示不同用戶對每個項目的評分。行向量Rm表示每個用戶的評分,列向量Rn表示每個項目的得分。為了使計算更加明確,采用ri,j(1≤i≤m,1≤j≤n)表示用戶i對項目j的評分。
SlopeOne算法采用f(x)=x+b進行預測,其中參數6是用戶對兩項目的平均評分偏差。Slope One算法先計算項目ii與其他項目ik之間的平均評分偏差devjk,再預測當前活躍用戶u對目標項目,的可能評分Predictionu,j。定義Sjk為給項目ij和項目ik都評過分的用戶集合,Rj為與項目ij同時被評分的項目集合,count(X)為集合X中的元素個數。SlopeOne算法如下:
(1)
(2)
1.2 加權Slope One算法
為平衡每個項目對目標項目的影響,同時對項目ij和ik評過分的用戶數目sjk將作為權重加入兩項目評分偏差的計算,其中sjk=count(Sjk)。
(3)
1.3 雙極Slope One算法
雙極Slope One算法考慮到用戶對物品的喜好,將項目集合Ijk府劃分為兩部分,一個是用戶評分高于其評分均值的項目集合Ilikejk,剩下的構成Idislikejk。從而分別計算出喜歡偏差devlikejk和不喜歡偏差devdislikejk。
(4)
同樣的方法,我們可以計算不喜歡偏差devdislikejk。最后得出評分預測如下:
(5)
2 US-Slope one算法設計
如前一章所述,Slope One算法采用所有用戶評分數據而不考慮相似度問題,當存在大量噪聲數據時,預測準確度會大大降低,導致最終的推薦結果不理想。然而在數據極度稀疏的情況下,往往又希望保留盡可能多的數據,US-Slope One算法針對這一問題,采用用戶相似度進行加權,使得相似度不同的用戶數據以不同權重加入預測。常用的用戶相似性度量方法有余弦相似性,修正余弦相似性,皮爾遜相關系數以及斯皮爾曼相似性等。考慮到不同用戶的評分尺度問題,本文采用修正余弦相似性計算用戶間相似度。若用戶ua和ub的共同評分的項目集合為Iab,用戶ua和ub對項目ic的評分分別為rac和rbc,ra和rb分別表示用戶ua和ub的評分均值,則用戶ua和ub之間的相似度sim(ua,ub)為:
(6)
將用戶相似度作為評分偏差計算的權值,US-Slope One算法如下:
(7)
3 實驗結果及分析
3.1 實驗所用數據集
本實驗所用的數據集是由GroupLens研究產品組田松瑞:基于用戶相似度加權的Slope One算法提供的電影評分數據集Movielens(http://movielens.umn.edu),該數據包括943個用戶對1682部電影的共計100000條評分記錄,其中每位用戶至少對20部電影進行了評分。評分值范圍是1到5分,分值越高代表用戶對電影的評價越好。該數據稀疏度為6.30%。實驗時從該數據集中按一定規則隨機抽取80%的數據作為訓練集,其余20%作為測試集。
3.2 度量標準
用于推薦系統的推薦質量評價的度量標準主要包括統計精度度量方法和決策支持精度度量方法兩種。其中統計精度度量方法的平均絕對誤差MAE(Means AbsoIute Error)和均方根誤差RMSE(RootMean Square Error)由于更易于理解并且能夠更直觀地對推薦質量進行度量,因此成為推薦質量評價最常用的方法。MAE和RMSE的值越小,代表推薦質量越高。本文實驗采用MAE和RMSE作為推薦質量的度量標準。
假設兩個分組P和Q分別代表預測評分集合和實際評分集合,P={p1,P2,…,pN},Q={q1,q2,…,qN}。MAE和RMSE的定義如下:
(8)
(9)
3.3 實驗結果
本實驗將US-slope One算法與基本Slope One算法和加權slope One算法以及雙極Slope One算法進行比較,得到的MAE值和RMsE值分別如圖1和圖2所示。經統計學分析,實驗結果具有代表性。
實驗結果表明,在稀疏數據集上,US-slope One算法的MAE值和RMsE值均明顯低于Slope One算法、加權Slope One算法和雙極Slope One算法,其推薦精度更高。US-Slope One算法總體推薦性能更好,使用用戶相似度進行加權能夠在保證數據量盡可能完整的基礎上顯著提高了預測精度。
4 結論
本文分析了Slope One推薦算法及其改進算法,針對其在數據稀疏情況下利用有限用戶評分數據做出更合理的推薦問題,提出了將用戶相似度作為權重融入預測的US-Slope One算法,在盡可能保證不丟失原始數據的基礎上,更加合理地運用數據。最后,對本算法以及已有算法在稀疏數據集上進行試驗,比較結果表明本算法提升了現有算法對于稀疏數據集的適應性,提高了預測精度和推薦性能。