1. 程式人生 > >協同過濾推薦演算法的優化(稀疏矩陣的處理)

協同過濾推薦演算法的優化(稀疏矩陣的處理)

簡單的協同過濾演算法流程如下

(1)、計算其他使用者和你的相似度,可以使用反差表忽略一部分使用者

(2)、根據相似度的高低找出K個與你最相似的鄰居

(3)、在這些鄰居喜歡的物品中,根據鄰居與你的遠近程度算出每一件物品的推薦度

(4)、根據每一件物品的推薦度高低給你推薦物品。

其中計算相似度,本文采用的是Jaccard演算法,這個演算法就是並集除以交集,計算使用者打分的電影集的相似度。

協同推薦過程遇到的問題

最近鄰協同過濾推薦需要在整個使用者空間上搜索目標使用者的最近鄰居,隨著資料的不斷增多、系統規模的擴大,在整個使用者空間上搜索目標使用者的最近鄰居的計算量成線性增大,系統的實時效能越來越差,大資料的稀疏性成為協同過濾推薦系統發展的瓶頸。

在採用協同過濾演算法構建個性化推薦的系統中,經常面臨使用者評價資料稀疏問題,這將嚴重降低個性化推薦的準確度.針對此問題,提出了一種混合加權預測填充演算法,從使用者訪問的資源特徵以及該資源在整個使用者群體中被訪問的熱度出發,對使用者訪過的但未給出評價的資料進行預測並填充,從而降低了由於使用者評價資料缺失所造成的評價矩陣稀疏程度,提高推薦準確度.在MovieLens資料集上的試驗結果表明,該演算法能夠明顯地提高推薦準確度.

針對上述問題,即為了降低資料的稀疏性問題給推薦系統帶來的影響,人們專門研究了很多的解決方法。其中從不同角度對使用者和產品資訊進行分析、處理、降低資料的稀疏程度。基於專案的協同過濾推薦、降維法、智慧Agent方法可以在一定程度上緩解資料稀疏性問題。BP神經網路緩解協同過濾推薦演算法的稀疏性問題,將奇異值分解應用到協同過濾推薦演算法,通過奇異值分解演算法得到低維正交矩陣,較好地解決了資料稀疏性問題,但是推薦的準確性會有一定的下降。在採用神經網路模型進行聚類處理的總思路下,通過尋找基於物件屬性資訊的專案類間隱性聯絡化解資料稀疏性對高維資料聚類的影響。此外,應用聚類演算法是解決使用者—專案評分矩陣稀疏性的比較有效的方法。

基於物品的協同過濾

step1.如果使用者i對專案j沒有評過分,就把ri,j置為0。找到與物品j最相似的k個近鄰(採用餘弦距離)

step2.然後用這K個鄰居對專案j的評分的加權平均來預測使用者i對專案j的評分。

I1=(r1,1,r2,1...rm,1)

I2=(r1,2,r2,2...rm,2)

每一項減去各個使用者評分的均值:

I1=(r1,1−r1¯,r2,1−r2¯...rm,1−rm¯)

I2=(r1,2−r1¯,r2,2−r2¯...rm,2−rm¯)

商品i和j之間的相似度採用餘弦計算:

預測使用者u對商品i的評分:

其中N是商品i的近鄰。

由於物品之間的相似度比較穩定,可以離線先算好,定期更新即可。在電商行業這種演算法用的比較多。

混合協同過濾

所謂的混合演算法,主體思路還是基於使用者的協同過濾,只是在計算兩個使用者的相似度時又嵌套了item-based CF思想。度量使用者i和使用者j相似度更好的方法是:

1.使用者i參與評分的專案集合為Ii,使用者j參與評分的專案集合為Ij,找到它們的並集Uij=Ii∪Ij

2.在集合Uij中使用者i未評分的專案是Ni=Uij−Ii,採用item-based CF方法重新估計使用者i對Ni中每個專案的評分。

3.這樣使用者i和j對Uij的評分就都是非0值了,在此情況下計算他們的相似度。

(4)、基於混合協同過濾之後,我們對使用者未評分的選項(電影)進行預測而且評分,從而得到一個新的矩陣,這個矩陣資料都是密集的,因為它包含了所有使用者對所有電影的打分情況,從而很好的解決了資料的稀疏性問題。

(4)、其中演算法的主要部分在於計算使用者的相似性和矩陣的預測評分其中時間複雜度為:如果想計算每兩個使用者的相似度需要的時間複雜度為O(n*n*d)