協同過濾分爲memory based和model based。user cf 和 item cf 都是基於此的緩存
列是user,行是item。目的是計算用戶之間的類似度,來填補圖中item5的評分。性能
找類似spa
用皮爾遜相關係數,cosine等來計算類似度。排序
計算物品評分,並排序。
公式以下。
$$p(u,i) = \overline{r_u} + \frac{\sum_{v \in N} sim(u,v) \times (r_{v,i} - \overline{r_v})}{\sum_{v \in N}sim(u,v)}$$ip
這裏p(u,i) 表明用戶u,對物品i的評分。sim(u,v)表明用戶u,v類似度。
$r_{v,i}$表明用戶v對物品i的打分。 $\overline{r_v}$表明了it
這樣咱們就能夠計算出小明對其餘物品的打分預測值(這裏每次計算都須要用戶之間的類似度,因此能夠緩存起來)。class
推薦方法分爲兩種。一種是top-n推薦,一種是關鍵推薦。top-n推薦的意思就是統計在前k個用戶中,統計出現頻率最高且在目標用戶中沒有出現過的。關聯規則,就是在這前k個用戶中,挖掘關聯規則,相似於‘買了xx的用戶還買了哪些’cli
1.類似度
行是物品,列是user。
首先找到最類似的物品。擴展
2.計算用戶對全部物品的評分。
根據最類似的物品的評分來計算未被評分的物品。sed
$$\frac{\sum_{j \in rel(u)}sim(j,i)\times r_{u,j}}{\sum_{j \in rel(u)}sim(j,i)}$$
表達出來就是類似度* 評分。
首先兩者都是稀疏矩陣,爲了減小計算量,能夠預先聚類一下。
場景: user-based. 按理說更適合新聞這種,item量遠大於用戶的。對於咱們來講,由於咱們是取1周內的文章,因此相對來講,item 量沒有過大的擴展。item-based更適合item量較小的。
性能及複雜度: user-based 的缺點也比較明顯。類似用戶的穩定度要小於物品的穩定度程度,因此須要在線更新。 而item-based離線計算就可以得到比較好的複雜度。
推薦多樣性和精度: 從單一用戶角度,確定是user-based 更加多樣,但同時也更加容易推薦比較熱的東西。item-based,是根據用戶的歷史記錄來推薦,因此相對來講,更容易擬合。item-based, 對於新用戶(讀取量下於10的時候的推薦效果更好。)。 item-based ,更容易發現長尾數據,由於只要有一些用戶買了這個長尾的物品,那麼這兩個物品就有很高的相關性).
稀疏性: 從穩定性上講,user-based,item-based 對於新聞應用,固定item的狀況下,類似度的穩定性上,item-based 更好一些。