推薦系統的經常使用算法原理和實現

推薦算法介紹

基於人口統計學的推薦算法

這是最爲簡單的一種推薦算法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,而後將類似用戶喜好的其餘物品推薦給當前用戶。數據結構

這裏寫圖片描述

系統首先會根據用戶的屬性建模,好比用戶的年齡,性別,興趣等信息。根據這些特徵計算用戶間的類似度。好比系統經過計算髮現用戶A和C比較類似。就會把A喜歡的物品推薦給C。.net

優缺點:blog

  • 不須要歷史數據,沒有冷啓動問題
  • 不依賴於物品的屬性,所以其餘領域的問題均可無縫接入。
  • 算法比較粗糙,效果很難使人滿意,只適合簡單的推薦

基於內容的推薦排序

與上面的方法相相似,只不過此次的中心轉到了物品自己。使用物品自己的類似度而不是用戶的類似度。圖片

這裏寫圖片描述

系統首先對物品(圖中舉電影的例子)的屬性進行建模,圖中用類型做爲屬性。在實際應用中,只根據類型顯然過於粗糙, 還須要考慮演員,導演等更多信息。經過類似度計算,發現電影A和C類似度較高,由於他們都屬於愛情類。系統還會發現用戶A喜歡電影A,由此得出結論,用戶 A極可能對電影C也感興趣。因而將電影C推薦給A。get

優缺點:it

  • 對用戶興趣能夠很好的建模,並經過對物品屬性維度的增長,得到更好的推薦精度
  • 物品的屬性有限,很難有效的獲得更多數據
  • 物品類似度的衡量標準只考慮到了物品自己,有必定的片面性
  • 須要用戶的物品的歷史數據,有冷啓動的問題

協同過濾ast

協同過濾是推薦算法中最經典最經常使用的,分爲基於用戶的協同過濾和基於物品的協同過濾。那麼他們和基於人口學統計的推薦和基於內容的推薦有什麼區別和聯繫呢?class

基於用戶的協同過濾——基於人口統計學的推薦

基於用戶的協同過濾推薦機制和基於人口統計學的推薦機制都是計算用戶的類似度,並基於「鄰居」用戶羣計算推薦,但它 們所不一樣的是如何計算用戶的類似度,基 於人口統計學的機制只考慮用戶自己的特徵,而基於用戶的協同過濾機制但是在用戶的歷史偏好的數據上計算用戶的類似度,它的基本假設是,喜歡相似物品的用戶 可能有相同或者類似的口味和偏好。

基於物品的協同過濾——基於內容的推薦

基於項目的協同過濾推薦和基於內容的推薦其實都是基於物品類似度預測推薦,只是類似度計算的方法不同,前者是從用戶歷史的偏好推斷,然後者是基於物品自己的屬性特徵信息。

協同過濾的優點:

  • 它不須要對物品或者用戶進行嚴格的建模,並且不要求物品的描述是機器可理解的,因此這種方法也是領域無關的。
  • 這種方法計算出來的推薦是開放的,能夠共用他人的經驗,很好的支持用戶發現潛在的興趣偏好

協同過濾的缺點:

  • 方法的核心是基於歷史數據,因此對新物品和新用戶都有「冷啓動」的問題
  • 推薦的效果依賴於用戶歷史偏好數據的多少和準確性
  • 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等
  • 對於一些特殊品味的用戶不能給予很好的推薦
  • 因爲以歷史數據爲基礎,抓取和建模用戶的偏好後,很難修改或者根據用戶的使用演變,從而致使這個方法不夠靈活

混合推薦算法

以上介紹的方法是推薦領域最多見的幾種方法。可是能夠看出,每一個方法都不是完美的。所以實際應用中都是混合使用各類推薦算法,各取所長。咱們的大量醫療數據中,也能夠多考慮一下什麼狀況下更適合使用哪一種推薦算法,能更好的爲醫生提供診斷信息

協同過濾推薦算法原理和實現

在推薦系統衆多方法中,基於用戶的協同過濾推薦算法是最先誕生的,原理也較爲簡單。該算法1992年提出並用於郵件過濾系統。能夠將基於用戶的協同過濾推薦算法拆分爲兩個步驟:

  1. 找到與目標用戶興趣類似的用戶集合
  2. 找到這個集合中用戶喜歡的、而且目標用戶沒有據說過的物品推薦給目標用戶

發現興趣類似的用戶

一般用 Jaccard 公式或者餘弦類似度計算兩個用戶之間的類似度。設 N(u) 爲用戶 u 喜歡的物品集合,N(v) 爲用戶 v 喜歡的物品集合,那麼 u 和 v 的類似度是多少呢:

Jaccard 公式:

這裏寫圖片描述

餘弦類似度:

這裏寫圖片描述

假設目前共有4個用戶: A、B、C、D;共有5個物品:a、b、c、d、e。用戶與物品的關係(用戶喜歡物品)以下圖所示:

這裏寫圖片描述

如何一會兒計算全部用戶之間的類似度呢?爲計算方便,一般首先須要創建「物品—用戶」的倒排表,以下圖所示:

這裏寫圖片描述

而後對於每一個物品,喜歡他的用戶,兩兩之間相同物品加1。例如喜歡物品 a 的用戶有 A 和 B,那麼在矩陣中他們兩兩加1。以下圖所示:

這裏寫圖片描述

計算用戶兩兩之間的類似度,上面的矩陣僅僅表明的是公式的分子部分。以餘弦類似度爲例,對上圖進行進一步計算:

這裏寫圖片描述

到此,計算用戶類似度就大功告成,能夠很直觀的找到與目標用戶興趣較類似的用戶。

推薦物品

首先須要從矩陣中找出與目標用戶 u 最類似的 K 個用戶,用集合 S(u, K) 表示,將 S 中用戶喜歡的物品所有提取出來,並去除 u 已經喜歡的物品。對於每一個候選物品 i ,用戶 u 對它感興趣的程度用以下公式計算:

這裏寫圖片描述

其中 rvi 表示用戶 v 對 i 的喜歡程度,在本例中都是爲 1,在一些須要用戶給予評分的推薦系統中,則要代入用戶評分。

舉個例子,假設咱們要給 A 推薦物品,選取 K = 3 個類似用戶,類似用戶則是:B、C、D,那麼他們喜歡過而且 A 沒有喜歡過的物品有:c、e,那麼分別計算 p(A, c) 和 p(A, e):

這裏寫圖片描述 
這裏寫圖片描述

看樣子用戶 A 對 c 和 e 的喜歡程度多是同樣的,在真實的推薦系統中,只要按得分排序,取前幾個物品就能夠了。

 

 

轉自:http://blog.csdn.net/xsl_bj/article/details/51120643

相關文章
相關標籤/搜索