參考來源: https://blog.csdn.net/u011748319/article/details/90269818
1、推薦算法
1.1、協同過濾
協同過濾是目前應用最廣泛的推薦算法,它僅僅通過了解用戶與物品之間的關系進行推薦,而根本不會考慮到物品本身的屬性。
可分成兩類:
1、基於用戶(user-based)的協同過濾
2、基於商品(item-based)的協同過濾
1.1.1、基於用戶的協同過濾
基本思想:
基於用戶對物品的偏好找到鄰居用戶(相似用戶),然后將鄰居用戶(相似用戶)喜歡的東西推薦給當前用戶。
(用戶喜歡那些和他有相似愛好的用戶喜歡的東西)
計算方法:
將一個用戶對所有物品的偏好作為一個向量,計算用戶之間的相似度。找到鄰居后,根據鄰居的相似度權重以及他們對物品的偏好,預測
當前用戶未涉及的物品,計算得到一個排序的物品列表作為推薦。
相似度即為兩個向量之間的距離。距離越小相似度越大。
比如:用戶A與用戶B相似,那么就會給用戶A推薦 “用戶A未涉及但是用戶C喜歡的東西” ,也就是物品D了。
缺點:
基於用戶的協同過濾難以形成有意義的鄰居集合。
在很多時候,很多用戶兩兩之間只有很少幾個共同評分,也就是用戶之間的重合度並不高。而僅有的共同打了分的物品,往往是一些很常見的物品(如票房大片,如生活必需品)
再者,用戶之間的距離可能會變得很快,這種離線算法難以瞬間更新推薦結果。
1.1.2、基於物品的協同過濾
算法思想:
基於用戶對物品的偏好找到相似的物品,然后根據用戶的歷史偏好,推薦相似的物品。
(用戶喜歡跟他過去喜歡的物品相似的物品)
計算方法:
將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度。
得到物品的相似物品后,根據用戶歷史的偏好預測當前用戶還沒有涉及的物品的偏好,計算得到一個排序的物品列表作為推薦。
比如:物品A和物品C都被用戶A和用戶B所查看,所以物品A和物品C比較相似。又由於用戶C看了物品A,所以我們就會推薦與之相似的物品C給用戶C。
優點:
物品之間的距離可能是根據成千上萬的用戶的評分計算得出,往往能在一段時間內保持穩定。因此,這種算法可以預先計算距離,
其在線部分能更快的生產推薦列表。
缺點:
不同領域的最熱門物品之間經常具有較高的相似度。比如,基於算法,我們可能會給喜歡《算法導論》的同學推薦《哈利波特》,也就是
推薦不同領域的暢銷作品,這樣的推薦結果可能並不是我們想要的。
1.1.3、實現協同過濾的步驟
1、收集用戶偏好
2、找到相似的用戶或物品
計算相似度的方式
歐式距離
余弦距離
Tanimoto系數
k近鄰或基於相似度門檻
3、計算推薦
額外考慮時間因素:
1、在基於商品的協同過濾中:
(1)同一個用戶在間隔很短的時間內喜歡的兩件商品之間,可以給予更高的相似度。
(2)在描述目標用戶偏好時,給其最近喜歡的商品較高權重。
2、在基於用戶的協同過濾中:
(1)如果兩個用戶同時喜歡了相同的物品,那么可以給這兩個用戶更高的相似度。
(2)在描述鄰居用戶的偏好時,給其最近喜歡的物品較高權重。
1.2.基於內容的推薦
基本思想:
根據推薦物品或內容的元數據,發現物品或者內容的相關性,然后基於用戶以往的喜好記錄,推薦給用戶相似的物品。
例子:
電影A和C的類型都是愛情和浪漫,那么就會給看過電影A的人推薦電影C
1.3.三種推薦算法的區別
基於用戶的協同過濾:
適於物品比用戶多、物品時效性較強的情形,否則計算慢。
推薦結果的個性化較弱,較寬泛,但能實現跨領域、精細度高的結果。
基於物品的協同過濾:
應用最廣泛,尤其以電商行業為典型。
適於用戶多,物品少的情形,否則計算慢。
在物品冷啟動、數據稀疏時效果不佳
推薦精度高,更具個性化
傾向於推薦同類商品,推薦的多樣性不足,形成信息閉環。
基於內容的推薦:
是最直觀的算法
容易受限於對文本、圖像、音視頻的內容進行描述的詳細程序
常借助於文本相似度計算
不存在冷啟動的問題
但推薦精度通常墊底
主題過於集中,精細度不足。