《現代推薦算法》傳統協同過濾(user-CF, item-CF)

關注公眾號 長歌大腿,發送“機器學習”關鍵字,可獲取包含機器學習(包含深度學習),統計概率,優化算法等系列文本與視頻經典資料,如《ESL》《PRML》《MLAPP》等。
《現代推薦算法》傳統協同過濾(user-CF, item-CF)

協同過濾簡介

協同過濾算法發展以來,與矩陣分解密切相關,多有時將矩陣分解系列也歸于協同過濾種類,我們這里將其分開來對待,這篇文章講傳統的協同過濾算法,主要包含基于用戶的協同過濾算法與基于物品的協同過濾算法兩種。

  • 基于用戶的協同過濾算法的關鍵是找到相同偏好的用戶,找到了偏好最近的幾個用戶,他們偏好的物品便是要給你推薦的目標。這個算法也簡稱“User-CF”,協同過濾算法的關鍵是解決相似度問題。

  • 基于物品的協同過濾算法的關鍵是計算其它物品和歷史物品的相似度,相似度最近的幾個物品便是要推薦的物品。這個算法也簡稱“Item-CF”,協同過濾算法的關鍵也是解決相似度問題。

故我們先重點介紹一下常用的簡單的相似度計算方法,更復雜的關于神經網絡相似度方法那些我們以后再專門開一個章節來介紹相似度的計算。

傳統user-cf與item-cf算法簡單明了,這里就進行文字敘述而不進行數學公式的模型描述。

相似度的計算

余弦相似度

cos(x1,x2) = \frac{\sum_{k=1}^{n}x_{1k}x_{2k}}{\sqrt{\sum_{k=1}^{n}x_{1k}^2}\sqrt{\sum_{k=1}^{n}x_{2k}^2}}
兩向量越相似,向量夾角越小,cosine絕對值越大;值為負,兩向量負相關。只能分辨個體在維之間的差異,沒法衡量每個維數值的差異。

調整余弦相似度Adjusted Cosine Similarity

sim(x1,x2) = \frac{\sum_{k=1}^{n}(x_{1k}-\bar{x_{k}})(x_{2k}-\bar{x_{k}})}{\sqrt{\sum_{k=1}^{n}(x_{1k}-\bar{x_{k}})^2}\sqrt{\sum_{k=1}^{n}(x_{2k}-\bar{x_{k}})^2}}

余弦相似度對數值的不敏感導致了結果的誤差,調整余弦相似度修正了這種不合理性。

Jaccard相似度

Jaccard(X,Y) = \frac{X\cap Y}{X\cup Y}

Jaccard系數主要用于計算符號度量或布爾值度量的個體間的相似度,無法衡量差異具體值的大小,只能獲得“是否相同”這個結果,所以Jaccard系數只關心個體間共同具有的特征是否一致這個問題。Jaccard系數等于樣本集交集與樣本集合集的比值。

歐幾里距離

通常計算時候需要進行距離標準化,即將各個維度的數據進行標準化。
SED(x1,x2) = \sqrt{\sum_{k=1}^{n}(\frac{x_{1k}-x_{2k}}{s_{k}})^{2}}

基于用戶的協同過濾算法

用戶A對物品Y的喜好程度=鄰居用戶j對物品Y的喜歡*用戶A與用戶j的相似度。
算法流程如下:

  1. 計算其他用戶和目標用戶的相似度。
  2. 根據相似度的高低找出K個目標用戶最相似的鄰居。
  3. 在這些鄰居喜歡的電影中,根據鄰居與你的遠近程度算出每個電影的推薦度。
  4. 根據每一件物品的推薦度高低給你推薦物品。

基于物品的協同過濾算法

用戶A對物品Y的喜好程度=用戶A對所有交互物品j的喜歡*物品j與物品Y的相似度。
算法流程如下:

  1. 計算物品之間的相似度。
  2. 根據物品之間的相似度以及用戶歷史行為給用戶生成推薦列表。

算法Trick 與比較

  • User-CF適用于物品增長很快,同時物品之間相似度頻繁變化的網站,這樣是因為用戶是小變量,物品是大變量,針對于這種情況,使用基于用戶的協同過濾
  • Item-CF物品有限,用戶增長很快,這樣是因為物品是小變量,用戶是大變量,針對于這種情況,使用基于物品的協同過濾

優點:算法可解釋性強。
缺點:使用“用戶”和“物品”兩個變量,并且只是根據相似性這個變量計算,是基于統計的低階推薦算法,不具有精準推薦。而且對于
新物品的曝光,協同過濾效果差。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容