基於人口統計學的推薦算法
這是最爲簡單的一種推薦算法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,而後將類似用戶喜好的其餘物品推薦給當前用戶。數據結構
系統首先會根據用戶的屬性建模,好比用戶的年齡,性別,興趣等信息。根據這些特徵計算用戶間的類似度。好比系統經過計算髮現用戶A和C比較類似。就會把A喜歡的物品推薦給C。.net
優缺點:blog
基於內容的推薦排序
與上面的方法相相似,只不過此次的中心轉到了物品自己。使用物品自己的類似度而不是用戶的類似度。圖片
系統首先對物品(圖中舉電影的例子)的屬性進行建模,圖中用類型做爲屬性。在實際應用中,只根據類型顯然過於粗糙, 還須要考慮演員,導演等更多信息。經過類似度計算,發現電影A和C類似度較高,由於他們都屬於愛情類。系統還會發現用戶A喜歡電影A,由此得出結論,用戶 A極可能對電影C也感興趣。因而將電影C推薦給A。get
優缺點:it
協同過濾ast
協同過濾是推薦算法中最經典最經常使用的,分爲基於用戶的協同過濾和基於物品的協同過濾。那麼他們和基於人口學統計的推薦和基於內容的推薦有什麼區別和聯繫呢?class
基於用戶的協同過濾——基於人口統計學的推薦
基於用戶的協同過濾推薦機制和基於人口統計學的推薦機制都是計算用戶的類似度,並基於「鄰居」用戶羣計算推薦,但它 們所不一樣的是如何計算用戶的類似度,基 於人口統計學的機制只考慮用戶自己的特徵,而基於用戶的協同過濾機制但是在用戶的歷史偏好的數據上計算用戶的類似度,它的基本假設是,喜歡相似物品的用戶 可能有相同或者類似的口味和偏好。
基於物品的協同過濾——基於內容的推薦
基於項目的協同過濾推薦和基於內容的推薦其實都是基於物品類似度預測推薦,只是類似度計算的方法不同,前者是從用戶歷史的偏好推斷,然後者是基於物品自己的屬性特徵信息。
協同過濾的優點:
協同過濾的缺點:
混合推薦算法
以上介紹的方法是推薦領域最多見的幾種方法。可是能夠看出,每一個方法都不是完美的。所以實際應用中都是混合使用各類推薦算法,各取所長。咱們的大量醫療數據中,也能夠多考慮一下什麼狀況下更適合使用哪一種推薦算法,能更好的爲醫生提供診斷信息
協同過濾推薦算法原理和實現
在推薦系統衆多方法中,基於用戶的協同過濾推薦算法是最先誕生的,原理也較爲簡單。該算法1992年提出並用於郵件過濾系統。能夠將基於用戶的協同過濾推薦算法拆分爲兩個步驟:
發現興趣類似的用戶
一般用 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 的喜歡程度多是同樣的,在真實的推薦系統中,只要按得分排序,取前幾個物品就能夠了。