一吏颖、基本原理
基于物品的 CF 的原理和基于用戶的 CF 類似,只是在計(jì)算鄰居時(shí)采用物品本身恨樟,而不是從用戶的角度半醉,即基于用戶對(duì)物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好劝术,推薦相似的物品給他缩多。從計(jì)算的角度看,就是將所有用戶對(duì)某個(gè)物品的偏好作為一個(gè)向量來(lái)計(jì)算物品之間的相似度养晋,得到物品的相似物品后衬吆,根據(jù)用戶歷史的偏好預(yù)測(cè)當(dāng)前用戶還沒(méi)有表示偏好的物品,計(jì)算得到一個(gè)排序的物品列表作為推薦绳泉。圖 3 給出了一個(gè)例子逊抡,對(duì)于物品 A,根據(jù)所有用戶的歷史偏好零酪,喜歡物品 A 的用戶都喜歡物品 C冒嫡,得出物品 A 和物品 C 比較相似拇勃,而用戶 C 喜歡物品 A,那么可以推斷出用戶 C 可能也喜歡物品 C孝凌。
圖 3.基于物品的 CF 的基本原理
二、算法實(shí)現(xiàn)
首先計(jì)算物品之間的相似度蟀架,然后根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表
步驟
1. 建立物品的同現(xiàn)矩陣
2. 建立用戶對(duì)物品的評(píng)分矩陣
3. 矩陣計(jì)算推薦結(jié)果
拿Mahout In Action中的案例說(shuō)明
測(cè)試數(shù)據(jù):
1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0
針對(duì)這樣一個(gè)原始數(shù)據(jù)瓣赂,我們采取以下處理方式,按步驟獲取用戶3的推薦列表:
第一片拍,我們整理出物品評(píng)分矩陣钩述,這其實(shí)是原始數(shù)據(jù)。
第二穆碎,我們整理出物品同現(xiàn)矩陣,這是item CF的思想所在:同現(xiàn)高的物品职恳,相關(guān)性高所禀。
第三,我們整理出用戶評(píng)分矩陣放钦,這顯示了用戶偏好色徘。
第四,我們使用物品的相似度操禀,與用戶當(dāng)前的瀏覽記錄進(jìn)行關(guān)聯(lián)褂策,計(jì)算得到推薦列表。
這樣就計(jì)算得到了用戶3的物品待推薦物品及評(píng)分颓屑,我們可以根據(jù)實(shí)際情況按得分降序選擇推薦物品斤寂。
從上面我們可以看出,Item CF算法對(duì)新用戶是友好的揪惦,只要用戶偏好矩陣不為0遍搞,即用戶有歷史偏好記錄,就能夠很快得到推薦器腋。但對(duì)新物品不友好溪猿,因?yàn)樾挛锲窙](méi)有歷史數(shù)據(jù),難以得到推薦纫塌。這可以應(yīng)用到音樂(lè)項(xiàng)目中诊县,因?yàn)橐魳?lè)曲庫(kù)相對(duì)來(lái)說(shuō)比較固定,新物品相對(duì)較少措左,這可以使得新用戶快速獲得符合自己口味的音樂(lè)依痊。