一、UserCF
UserCF(User Collaboration Filter),又稱 基于用戶的協(xié)同過(guò)濾算法。
協(xié)同過(guò)濾:就是指眾多的用戶可以齊心協(xié)力,通過(guò)不斷地和網(wǎng)站互動(dòng),使 自己的推薦列表能夠不斷過(guò)濾掉自己不感興趣的物品,從而越來(lái)越滿足自己的需求。
而基于用戶是指通過(guò)分析用戶對(duì)商品的行為(如瀏覽、收藏、加入購(gòu)物車、購(gòu)買……)計(jì)算出哪些用戶是興趣相似的,然后把興趣相似的用戶所關(guān)注的商品相互推薦。
舉個(gè)例子:
| 用戶/商品 | 商品1 | 商品2 | 商品3 | 商品4 |
|---|---|---|---|---|
| 用戶A | √ | √ | √ | |
| 用戶B | √ | |||
| 用戶C | √ | √ | 推薦 |
由上表可以看出用戶A和用戶C比較相似,所以把用戶A感興趣的商品4推薦給用戶C。
步驟一般分為兩步:
- 計(jì)算物品之間的相似度
- 根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表
再舉個(gè)詳細(xì)點(diǎn)的例子:
假設(shè)我們這么一些數(shù)據(jù)(用戶(字母) 商品(數(shù)字)_行為,):
A 1_瀏覽
A 3_加入購(gòu)物車
A 4_收藏
B 2_收藏
B 5_收藏
C 1_加入購(gòu)物車
C 6_購(gòu)買
D 1_購(gòu)買
D 5_加入購(gòu)物車
E 3_加入購(gòu)物車
E 4_瀏覽
F 2_加入購(gòu)物車
F 3_收藏
F 6_瀏覽
我們可以給不同的行為賦予不同的評(píng)分(假設(shè)瀏覽1分、收藏3分、加入購(gòu)物車5分、購(gòu)買10分),得到以下數(shù)據(jù):
A 1_1
A 3_5
A 4_3
B 2_3
B 5_3
C 1_5
C 6_10
D 1_10
D 5_5
E 3_5
E 4_1
F 2_5
F 3_3
F 6_1
這樣看著比較累,而且也不方便計(jì)算,可以把它轉(zhuǎn)換為矩陣形式,稱之為評(píng)分矩陣:
| 用戶/商品 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| A | 1 | 5 | 3 | |||
| B | 3 | 3 | ||||
| C | 5 | 10 | ||||
| D | 10 | 5 | ||||
| E | 5 | 1 | ||||
| F | 5 | 3 | 1 |
計(jì)算相似度
計(jì)算相似度的方式有很多,如余弦相似度、切比雪夫距離、歐里幾得距離、曼哈頓距離、杰卡德距離、皮爾森系數(shù)……計(jì)算相似度的方式不同計(jì)算出來(lái)的相似度也不同。
這里只介紹余弦相似度,其他的請(qǐng)自行百度。
假設(shè)有二維向量a,b如下圖所示

則他們的余弦相似度為

推廣到多維向量a(a1,a2,a3,a4……),b(b1,b2,b3,b4……)

有了公式就能計(jì)算出用戶相似度了:

這些用戶之間的相似度可以轉(zhuǎn)換為一個(gè)矩陣,稱之為相似度矩陣
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| A | 1 | 0 | 0.08 | 0.15 | 0.93 | 0.43 |
| B | 0 | 1 | 0 | 0.32 | 0 | 0.6 |
| C | 0.08 | 0 | 1 | 0.4 | 0 | 0.15 |
| D | 0.15 | 0.32 | 0.4 | 1 | 0 | 0 |
| E | 0.93 | 0 | 0 | 0 | 1 | 0.5 |
| F | 0.43 | 0.6 | 0.15 | 0 | 0.5 | 1 |
推薦列表 = 相似度矩陣 X 評(píng)分矩陣
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| A | 2.9 | 2.2 | 11.0 | 3.9 | 0.8 | 1.2 |
| B | 3.2 | 6.0 | 1.8 | 0 | 4.6 | 0.6 |
| C | 9.1 | 0.8 | 0.9 | 0.2 | 2.0 | 10.2 |
| D | 11.2 | 1.0 | 0.8 | 0.5 | 6.0 | 4.0 |
| E | 0.9 | 2.5 | 11.2 | 3.8 | 0 | 0.5 |
| F | 1.2 | 6.8 | 7.7 | 1.8 | 1.8 | 2.5 |
由于用戶已經(jīng)對(duì)推薦列表中的一些商品有過(guò)行為,所以還要把這些商品給濾除掉

得到最終的推薦列表,其數(shù)值代表的意義是用戶對(duì)商品的感興趣程度:
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| A | 2.2 | 0.8 | 1.2 | |||
| B | 3.2 | 1.8 | 0 | 0.6 | ||
| C | 0.8 | 0.9 | 0.2 | 2.0 | ||
| D | 1.0 | 0.8 | 0.5 | 4.0 | ||
| E | 0.9 | 2.5 | 0 | 0.5 | ||
| F | 1.2 | 1.8 | 1.8 |
二、ItemCF
ItemCF(Item Collaboration Filter),又稱 基于商品(物品)的協(xié)同過(guò)濾算法。
其原理與UserCF類似,是基于用戶對(duì)商品的偏好找到相似的商品,然后推薦相似的商品品給他。
計(jì)算過(guò)程也非常相似,區(qū)別在于計(jì)算時(shí)把UserCF的評(píng)分矩陣轉(zhuǎn)置,再計(jì)算商品與商品之間的相似度得到商品之間的相似度矩陣。
最后的推薦列表 = 商品之間的相似度矩陣 X 評(píng)分矩陣轉(zhuǎn)置
UserCF與ItemCF的對(duì)比
對(duì)于電子商務(wù),用戶數(shù)量一般大大超過(guò)商品數(shù)量,此時(shí)Item CF的計(jì)算復(fù)雜度較低。
比如在購(gòu)書網(wǎng)站上,當(dāng)你看一本書的時(shí)候,推薦引擎會(huì)給你推薦相關(guān)的書籍,這個(gè)推薦的重要性進(jìn)進(jìn)超過(guò)了網(wǎng)站首頁(yè)對(duì)該用戶的綜合推薦??梢钥吹剑谶@種情況下,Item CF 的推薦成為了引導(dǎo)用戶瀏覽的重要手段?;谖锲返膮f(xié)同過(guò)濾算法,是目前電子商務(wù)采用最廣泛的推薦算法。
在非社交網(wǎng)絡(luò)的網(wǎng)站中,內(nèi)容內(nèi)在的聯(lián)系是很重要的推薦原則,它比基于相似用戶的推薦原則更加有效。在社交網(wǎng)絡(luò)站點(diǎn)中,User CF 是一個(gè)更好錯(cuò)的選擇,User CF 加上社會(huì)網(wǎng)絡(luò)信息,可以增加用戶對(duì)推薦解釋的信服程度。
推薦多樣性和精度,各有千秋。
參考:
Spark基于用戶的協(xié)同過(guò)濾算法https://www.toutiao.com/a6498952374487368205/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=15393016323&utm_medium=toutiao_android
推薦系統(tǒng)_itemCF和userCF
http://blog.csdn.net/u011263983/article/details/51498458