分類
- 基于領(lǐng)域的協(xié)同過(guò)濾。(又可以細(xì)分為基于用戶和基于項(xiàng))。
- 基于模型的協(xié)同過(guò)濾。
描述
協(xié)同過(guò)濾算法(Collaborative Filtering, CF) 是一種比較常用的推薦算法。CF是對(duì)用戶行為數(shù)據(jù)進(jìn)行分析,找到特定模式從而對(duì)用戶產(chǎn)生有效推薦。比如基于用戶的協(xié)同過(guò)濾算法是通過(guò)用戶的行為數(shù)據(jù)計(jì)算出相似的用戶,通過(guò)其相似用戶的喜好推薦內(nèi)容?;陧?xiàng)的協(xié)同過(guò)濾是通過(guò)分析商品的相似性,將相似的商品推薦給用戶。協(xié)同過(guò)濾算法的特點(diǎn)是推薦行為不依賴于項(xiàng)的內(nèi)容。比如商品的價(jià)格,描述等內(nèi)容信息。
基于用戶的協(xié)同過(guò)濾算法
我們以美甲款式的推薦為例。
比如有U1,U2,U3 ,U4 4個(gè)用戶,有S1,S2,S3,S4 ,S5 5種款式。三個(gè)用戶對(duì)5種款式的喜好為
由上圖可以得到下面的表格
| User | Style |
|:|:--|
|U1|S1,S2,S3|
|U2|S2,S4|
|U3|S2,S4|
|U4|S1,S2,S5|
|U5|S3|
根據(jù)用戶對(duì)不同款式的喜愛(ài)得出用戶之前的相似度,如下表。(相似度如何計(jì)算,后面會(huì)詳細(xì)說(shuō)明,此處不做討論)。
| User | U1 |U2|U3|U4|U5|
|:|
|U1|1|0.25|0.25|0.5|0.3|
|U2|0.25|1|1|0.25|0|
|U3|0.25|1|1|0.25|0|
|U4|0.5|0.25|0.25|1|0|
|U5|0.3|0|0|0|1|
對(duì)于用戶U4來(lái)說(shuō),與其相似程度最高的用戶為U1,U1與U4的并集為S1,S2,S3,S5。所以給用戶推薦的款式為S3
基于項(xiàng)的協(xié)同推薦算法
還是以上面美甲款式為例。
不同的款式喜愛(ài)的用戶如下表:
|Style|User|
|:||
|S1|U1,U4|
|S2|U1,U2,U3,U4|
|S3|U1,U5|
|S4|U2,U3|
|S5|U4|
假設(shè)兩個(gè)不同款式被同樣的用戶喜愛(ài),則認(rèn)為這兩個(gè)款式具有相似性。
不同款式之間的相似度如下表:
|User|S1|S2|S3|S4|S5|
|:|
|S1|1|0.5|0.3|0|0.5|
|S2|0.5|1|0.2|0.5|0.25|
|S3|0.3|0.2|1|0|0|
|S4|0|0.5|0|1|0|
|S5|0.5|0.25|0|0|1|
用戶U4 喜歡的款式為S1,S2,S5,而與款式S1,S2,S5 相似度最大的款式為S4
通過(guò)以上的例子,可以看到,基于項(xiàng)的CF和基于用戶的CF算法其實(shí)很相似,只是從兩個(gè)不同緯度來(lái)計(jì)算推薦結(jié)果,但是同樣的,我們也能發(fā)現(xiàn)這兩者的推薦結(jié)果是不一樣的。在實(shí)際的推薦中,往往將兩者相結(jié)合。
計(jì)算相似度
計(jì)算相似度的算法很多,下面將介紹常見(jiàn)的幾種算法。
Jaccard算法
Jaccard算法是比較簡(jiǎn)單的算法,通俗的講就是交集除以并集。公式如下:
$$J(A,B) = \frac{|\quad A\quad \bigcap \quad B\quad |}{|\quad A \quad \bigcup \quad B\quad |}$$
A,B分別代表符合某種條件的集合
歐幾里德距離(Euclidean Distance)
假設(shè) x,y 是 n 維空間的兩個(gè)點(diǎn),它們之間的歐幾里德距離是:
$$d(x,y)=\sqrt{(\sum(x_i-y_i)^2}$$
余弦相似性
余弦相似性通過(guò)測(cè)量?jī)蓚€(gè)向量的夾角的余弦值來(lái)度量它們之間的相似性。
$$similarity=cos(\Theta)=\frac{AB}{||A||||B||}$$