協同過濾 collaborative filteringhtml
人以類聚,物以羣分算法
類似度網絡
1. Jaccard 類似度函數
定義爲兩個集合的交併比:post
Jaccard 距離,定義爲 1 - J(A, B),衡量兩個集合的區分度:學習
爲何 Jaccard 不適合協同過濾?—— 只考慮用戶有沒有看過,沒考慮評分大小 優化
2. 餘弦類似度spa
根據兩個向量夾角的餘弦值來衡量類似度:3d
爲何餘弦類似度不適合協同過濾?—— 不一樣用戶各自評分總和不同,致使評分佔總比不同,可能計算出和事實相反的結果。htm
3. Pearson 類似度
解決餘弦類似度中的類似度差別問題,又稱中心餘弦算法。先中心化,再算餘弦類似度,這樣正值表示正相關,負值表示負相關。
基於用戶的協同過濾
經過用戶對物品的喜好程度進行度量和打分。根據不一樣用戶對相同商品或內容的態度進行商品推薦。
舉例說明,每一個行向量表示某個用戶對全部電影的評分
先把數據中心化
而後計算用戶 A 和其餘用戶的 Pearson 相關係數:
能夠發現用戶 A 和用戶 B 喜愛接近,所以能夠將 B 喜歡但 A 沒看過的密室推薦給 A,同時也能夠將 A 喜歡但 B 沒看過的火焰杯推薦給 B。
用戶法存在的問題:
1. 數據稀疏性。物品太多,不一樣用戶之間買的物品重疊性較低,致使沒法找到一個偏好類似的用戶
2. 算法擴展性。最近鄰算法的計算量隨着用戶和物品數量的增長而增長,不適合數據量大的狀況使用。
基於物品的協同過濾
經過計算不一樣用戶對於不一樣物品的評分,得到物品間的關係。基於物品間的關係對用戶進行類似物品的推薦。
舉例說明,每個行向量表示某個物品被各個用戶的評分,先中心化
如何預測用戶 E 對 哈利波特的喜愛程度?計算哈利波特和其餘電影之間的 Pearson 相關係數
選擇相關性較大的其餘電影,拿出用戶 E 對這些電影的評分,利用 Pearson 相關係數作 weighted sum:
從原理上看,基於用戶或基於物品都是能夠的,但實踐中以物品爲基礎效果更好,且須要不多的數據就能夠進行預測,用戶法須要大量數據。
基於模型的協同過濾
主流方法主要有如下幾種。先佔坑,慢慢補吧
1. 關聯算法
Apriori,FP Tree 和 PrefixSpan
劉建平老師的博客:
2. 聚類
K-means,譜聚類, BIRCH 和 DBSCAN
以後本身總結一下 k-means 和譜聚類
3. 矩陣分解
Matrix Factorization
要處理的數據樣式
要先作 encoding,把 categorical features 轉換爲 numerical features。最簡單就是 one-hot encoding,把 id 映射成 binary vector。
某個用戶沒看過的電影,評分就是空出來的。
用線性網絡來預測評分的話,須要兩個矩陣(兩層的權重參數)。每個 user 在隱含層的輸出就至關於直接從 V 中查表。至關於作了一次映射、一次線性組合。
訓練的目標函數呢?—— 均方偏差唄
比較直接的想法就是,乾脆把 R 矩陣分解成兩個矩陣相乘的形式就行了。根據已有的評分來學習 W 和 V 的參數。
優化方法:
1. 目標函數以下所示,交替更新 W 和 V 的參數(若是把 R 轉置,其實 W 和 V 從形式上就是對稱的)。
這種優化方法叫作交替最小二乘,能獲得局部最優解。
2.直接用 SGD,更有效率。
梯度公式:
優化過程:
SVD 協同過濾
奇異值矩陣的特徵值按照從大到小排列且迅速減少,能夠把大矩陣用三個小矩陣來近似描述,實現降維和去噪,應用於協同過濾中能夠減小計算量。
用 K 維 SVD 分解作協同過濾,實際上就是找一組 latent variables,U 和 V 分別描述了物品與隱變量、用戶與隱變量之間的關係。 而後就能夠都在 latent space 中表示。
舉例說明,4 個用戶對 6 部電影的評分狀況
作二維 SVD 分解:
在 latent space 中表示用戶和電影,發現電影之間、用戶之間、電影和用戶之間,均可以衡量中心餘弦類似度。
若是出現一個新用戶,如何給他推薦他沒有看過的電影?
把新用戶投影到 latent space
找到和新用戶類似度高的用戶,把類似用戶評分高而新用戶沒看過的電影,按類似用戶的評分高低順序前後推薦給新用戶便可。
Factorization Machine
http://www.javashuo.com/article/p-erzdckir-bz.html
4. 分類算法
LR(可解釋性強,便於作特徵工程),樸素貝葉斯
GBDT
5. 迴歸算法
Ridge, 決策樹,支持向量迴歸
6. 神經網絡
YouTube Recommendation System 引出的一系列基於 NN 的推薦模型
7. 圖模型
SimRank,馬爾可夫模型
8. 隱語義模型
LSA,LDA