本章概要
本章主要介紹了兩種協同過濾(Collaborative Filtering)算法,用于個性化推薦:
- 基于用戶的協同過濾(User-Based Collaborative Filtering,又稱 K-Nearest Neighbor Collaborative Filtering)
- 基于條目的協同過濾(Item-Based Collaborative Filtering)
本章還介紹兩種向量相似性算法:
- 歐氏距離(Euclidean Distance)
- 皮爾斯稀疏(Pearson Coefficient)
?
協同過濾
協同過濾是在一大群用戶中尋找一些與你的用戶相似的用戶,然后將這些找到的用戶使用過但是你沒有使用過的物品(如電影,書籍,商品)推薦給你的用戶,因為你與這些用戶具有類似的愛好。
相似度算法
歐氏距離是平面幾何距離的n維擴展,值越大,越不相似,為了使得當距離越大時,越相似,需要對其歐氏距離轉換,轉換方式如下:
euc-dist(x,y) ?===> ? ?1/(1+euc-dist(x,y))
皮爾斯系數可以描述兩個向量的相關性,表示的兩個向量在二維坐標上分布為一條直線的程度,值在-1~1之間,越大,越相關。皮爾斯稀疏可以修復分數通脹(grade inflation)問題,舉個例子,A,B兩個用戶具有集齊相似的興趣,只是A打分相對較嚴格,一般比平均分低一分,但是A與B的pearson系數卻可以完美的為1.這種特性根據你的應用而定,可能會需要,至少在電影推薦的例子上是需要的,但是其他例子里面可能不需要.
User-Based Collaborative Filtering (or the K-Nearest Neighbor Collaborative Filtering)
計算你其他人所有人相似度,取前k個。
在k個人中,取出我沒有看過的電影,然后根據相似度與對應用戶對電影的打分成績,作加權平均值,分值越大,代表我可能越有興趣額。
這是一個通用算法,可以講商品,替換電影打分,那么就可以推斷我可能感興趣的商品。返回來也可以,可以根據商品推斷潛在購買者。抽象為下面的關系:
- 用戶:影評 --> 推薦電影
- 影評:用戶 --> 預測其他用戶影評(沒多大意義)
- 用戶:商品 --> 推薦商品
- 商品:用戶 --> 潛在購買用戶 ? ?商品之間的關系相對stable,相比于人之間的關系
Item-Based Collaborative Filtering(基于條目的系統過濾)
基于用戶的協同過濾最大的問題在于性能,計算量太大,當用戶陡增時無法做到實時推薦。因為每次推薦都要計算k個最近的用戶,開銷很大。
基本條目過濾的思路:計算出條目之間的相似性(相對穩定,可以在空閑時間計算),然后將根據用戶用過的條目和該條目對應用戶沒有用過的條目,計算加權平均值,推薦給用戶。
最大的好處是條目之間的關系相對穩定,可以提前計算。而且條目計算的結果可以優化,只計算每個條目最相似的k個條目,k << n(總體條目數)。
相比于基于用戶的協同顧慮,它更適合于稀疏矩陣。
基于條目的協同過濾,可以參見論文《Item-Based Collaborative Filtering Recommendation Algorithms》。
更具此問題,基于條目的協同過濾比基于用戶的系統過濾更準確。