推薦算法分類

1、Item based collective filtering

總結:物以類聚

很多網站的核心算法之一

原因:item的增長速度遠小於user的增長速度

方法:離線計算item的相似度矩陣供線上使用

缺點:由於基於item的相似性,故推薦的item相似,缺乏多樣性

 

2、user based collective filtering

總結:人以羣分

找和用戶有相同品味的其他用戶

適用範圍:item更新頻繁的應用

方法:通過相似用戶喜歡的item推薦給該用戶

缺點:相似用戶羣比較敏感,要頻繁地計算出用戶的相似用戶矩陣,運算量會非常大。  推薦的大多是大家都喜歡的熱門推薦,有點趨於大衆化了

 

3、content based

方法:提取關鍵詞計算相似性      可以提前諮詢用戶的偏好

好處:沒有數據稀疏問題

 

4、slope one

方法:

Slope One的基本概念很簡單, 例子1, 用戶X, Y和A都對Item1打了分. 同時用戶X,Y還對Item2打了分, 用戶A對Item2可能會打多少分呢?

User Rating to Item 1 Rating to Item 2
X 5 3
Y 4 3
A 4 ?

根據SlopeOne算法, 應該是:4 - ((5-3) + (4-3))/2 = 2.5.

優點:簡單,快速

 

5、svd

Singular Value Decomposition(奇異值分解)

總結:擒賊先擒王。 抓主要矛盾,忽略次要矛盾

這個方法是提取一般實矩陣“特徵值”的算法,(這裏特徵值加引號是因爲,特徵值是針對方陣來定義的,而一般的m*n的實矩陣是沒有特徵值的。)

將一個m*n的實矩陣和它的轉置相乘,就會得到一個方陣,然後對這個方陣做特徵值分解,得到的特徵值就是所謂的奇異值的平方。

拿到奇異值後,我們就可以抓到主要的成分,丟掉次要和非常次要的成分進行分析。也就是說,我們可以對原來的龐大的常常又非常稀疏的矩陣進行降維和分解,而分解後得到的矩陣都是稠密矩陣。最終我們會得到一個表示user特性的矩陣和一個表示item特性的矩陣。拿到這些數據之後,我們就可以進行推薦了,而且也可以很容易地進行聚類分析。

好處在於,可以解決rating矩陣的稀疏性問題,同時可以降低矩陣的維度,提高運算速度。但它的缺點是付出的空間代價太大

 

6、聚類算法

這裏用到的聚類算法,是用來降低維度以及爲並行計算作準備的。

拿到rating矩陣之後,可以通過這些評分將用戶自然地聚成幾簇,然後用上述的算法對各個簇做推薦算法並行計算,充分地利用好所有計算資源。

當然你也可以在svd分解之後,拿到user和item矩陣之後,對這兩個矩陣分別作聚類分析,你可以得到user的簇以及item的簇。這樣的結果會非常有意義,你可以作好友推薦,相似item推薦等等。

在基於內容的算法中,因爲很多資訊之間並不是那麼的相關,把他們都相互計算相似度,會得到很多的0,所以沒有必要。因此可以在計算之前,對整個item做個聚類,然後分別對各簇來做相似度計算。

最簡單的就是k-means。

 

7、組合算法

總結:博採衆長

任何一個算法都有它獨特的優勢和固有的缺陷,因此單用一個算法的web應用很少,往往是將各種算法組合起來用。

1:將多種算法計算出來的結果,加權之後排序推薦給用戶。

2:將多種算法計算出來的結果,各取前幾個推薦給用戶,這樣做的好處是結果很豐富多彩。

3:用svd算法填充後的矩陣作爲輸入,用普通cf做計算來輸出,然後排序推薦。這種叫做層次推薦,可以得到兩種方法的好處。

4:對新用戶做基於內容的推薦,因爲新用戶沒有任何評分數據,對老用戶用cf來做。

。。。。

 

論文方向:

推薦系統,學術界,許多大牛的論文和研究方向就是不斷地改進計算速度,精度和提出新的算法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章