A. 基於用戶協同過濾(User-CF)的推薦演算法
1. 數學必備知識(向量)
2. 構建矩陣模型
3. User-CF的思想和計算
在一個個性化推薦系統中,當一個用戶A需要個性化推薦時,可以先找和他有相似興趣的其他用戶,然後把那些用戶喜歡的、而用戶A沒有聽說過的物品推薦給A。這種方法成為基於用戶的協同過濾演算法(User-CF)
根據問題域中構建出來的用戶-行為評分矩陣(圖1-1),我們可以構建出用戶的向量.首先,把每一個用戶用一個向量表示,每個向量里有6個數字,分別代表該用戶對6本書喜愛程度的評分.0代表用戶沒看過這本書.圖示:
接下來,計算倆個用戶的相似性,這里使用的指標叫作餘弦相似度,計算公式如下:
其中,分子部分a·b表示兩個向量的點積,計算方法就是兩個向量對應元素先相乘再求和,比如:
用戶a=[4 3 0 0 5 0]和用戶b=[5 0 4 0 4 0]
a·b=4x5+3x0+0x4+0x0+5x4+0x0=40
分母部分的 代表向量a的模長, 就是a,b兩個向量模長的乘積.向量模長的計算方法就是把向量
中的每個元素平方後再求和最後再開根號.
於是,第一個用戶和第二個用戶的相似度就可以進行如下計算:
餘弦相似度的值在[0,1]閉區間內,值越大說明越相似,值越小說明越不相似.根據上面的計算公式,分別計算小白和其他5個同事的相似度,然後根據從大到小的順序排列.可以看到小白和前倆個同事相似度高而和最後一個同事完全不相似.
比如,和小白最相似的兩個同事的閱讀列表編號有1,3,4,5共4本書.其中1,5這兩本書小白已經看過,3,4這兩本書哪本可能更適合小白的口味呢?
可以計算這兩個同事對這兩本書的加權評分並作為小白的可能評分,權重就是他們之間的相似度,具體計算如
下圖.通過計算可以看出編號為3的書可能更適合小白的口味.
計算步驟:
1. 先確定第一個同事擁有的閱讀列表的圖書編號為1,3,5
2. 再確定第二個同事擁有的閱讀列表的圖書編號為1,3,4,5
3. 小白自己已經擁有的閱讀的圖書列表是1,2,5[這也是打叉的意義,自己已經有的,不需要再推薦給自己了]
4. 最後剩餘的只有編號為3和編號為4的兩本書了
5. 計算公式說明,0.75和0.63代表權重,也就是相似值.4,3,5代表的是該用戶對這本書的評分.
1. 性能:適用於用戶較少的場合,如果用戶過多,計算用戶相似度矩陣的代價較大
2. 領域:實效性要求高,用戶個性化興趣要求不高
3. 實時性:用戶有新行為,不一定需要推薦結果立即變化
4. 冷啟動:在新用戶對少的物品產生行為後,不能立即對他進行個性化推薦,因為用戶相似度是離線計算的
新物品上線後一段時間,一旦有用戶對物品產生行為,就可以將新物品推薦給其他用戶