推薦系統概述

11/1/2017 6:31:39 PM算法

1、爲何要有推薦系統

什麼是稀缺資源

對於傳統零售商而言,貨架空間是稀缺資源。網絡

而到了如今,互聯網使得零成本產品品信息傳播成爲可能,「貨架空間」從稀缺變得豐富。人們逐漸從信息匱乏的時代走入了信息過載的時代。這時,注意力便成了稀缺資源app

推薦系統的價值

推薦系統的目的是向用戶提供建議。用戶是否採納這個建議,則是另一回事了。機器學習

將正確的商品在正確的時間推薦給正確的人,這在商業上有巨大的價值。在閱讀網站上,一個合適的推薦遠比首頁上的圖書更吸引用戶。性能

推薦系統的應用很是多,生活中最多見的即是在線商城中的推薦和電影推薦。學習

推薦的分類

按照推薦結果是否因人而異,推薦方法可分爲大衆化推薦和個性化推薦。大數據

大衆化推薦 在一樣的外部條件下,不一樣用戶得到的推薦是同樣的。好比查詢推薦,它每每只與當前的查詢條件有關,而不多與用戶直接相關。優化

個性化推薦 不一樣的人在不一樣的外部條件下,能夠得到與其自己興趣愛好、歷史記錄等相匹配的推薦。網站

本文主要介紹個性化推薦。spa

2、推薦系統算法概述

推薦方法大體上可分爲3類:

  • 基於人口統計學的推薦
  • 基於內容的推薦
  • 基於協同過濾的推薦

基於人口統計學的推薦

基於人口統計學的推薦的主要思想是,「一個用戶可能會喜歡與其類似的用戶所喜歡的東西」。所以,此方法的目標是找到類似的用戶。

首先,系統記錄每一用戶的性別、年齡、活躍時間等元數據。當系統須要對一個用戶進行個性化推薦時,它會利用元數據計算該用戶與其餘用戶之間的類似度,選出最類似的幾個用戶,進而利用這些用戶的購買記錄進行推薦。

基於人口統計學的推薦方法其優勢是計算簡單。但推薦結果的可信度較低,由於即使是性別、年齡等元數據屬性都相同的用戶,也頗有可能在物品上有大相徑庭的偏好。

所以,基於人口統計學的方法在實際推薦系統中不多做爲一個特定的方法單獨使用,而是經常與其餘方法結合。

基於內容的推薦

基於內容的推薦是根據物品的內容信息進行推薦。它的主要思想是「用戶可能會喜歡和他曾經喜歡過的物品類似的物品」。所以,此方法是經過判斷物品的類似性進行推薦。

一種簡單的實施方法是,首先統計目標用戶曾經購買或瀏覽過的全部物品,而後將這些物品的內容信息加權整合做爲該用戶的畫像。而後計算此用戶畫像和其餘物品之間的類似度。進而,將與該用戶畫像類似度高的物品,推薦給該用戶。

這種方法很是直觀,推薦的結果有比較好的解釋性。並且很好地解決新物品的冷啓動問題(新上架的商品,尚未用戶購買)。但存在如下問題:

  • 爲了獲得物品的特徵,系統須要複雜的模塊甚至手工的方法來對物品信息進行預處理。不具備較好的可擴展性,須要針對不一樣領域構建幾乎徹底不一樣的物品屬性。
  • 很難發現用戶並不熟悉可是具備潛在興趣的物品,即新穎性不強。

基於協同過濾的推薦

基於的協同過濾的推薦(Collaborative Filtering-Based Recommendation)是推薦系統中應用最先和最爲成功的技術之一。

與基於內容的方法不一樣的是,它利用羣體的智慧,爲當前用戶提供個性化的推薦。
基於協同過濾的推薦大體包括基於記憶的協同過濾和基於模型的協同過濾。而基於記憶的協同過濾又分爲基於用戶的協同過濾、基於物品的協同過濾。

下一節將對基於協同過濾的推薦進行詳細介紹。

3、基於協同過濾的算法

基於用戶的協同過濾

咱們首先來介紹基於用戶的協同過濾(User-based Collaborative Filtering)。

它的基本思想是「用戶可能喜歡和他具備類似愛好的用戶所喜歡的物品」。這與基於人口統計的推薦類似,但這裏的「類似用戶」不是經過用戶的人口統計信息直接計算獲得的,而是根據用戶的購買記錄和瀏覽記錄獲得的。

咱們關心的首要問題是如何衡量用戶的類似度

首先,咱們經過必定的策略得到每一個用戶對商品的一個打分表。好比對於每一個用戶,每件商品的分數是從0到10;用戶瀏覽了一個商品,那麼它對商品的分數 +0.1;當他購買了這件商品,分數 +1。

如今,咱們獲得了一張表

接下來,咱們使用向量\(a_1=[10,7,2,4,0]\)做爲用戶00001的特徵,\(a_2=[8,7,8,5,8]\)做爲用戶00002的特徵,那麼他們之間的類似度

\[{\rm sim}(U_{00001},U_{00002})={\rm cos}(a_1,a_2)=\frac{a_1\cdot a_2}{|a_1|\cdot|a_2|} \approx 0.89\]

這裏選用的是餘弦類似度,你也可使用其餘的度量方式。

定義了用戶之間的類似度以後,咱們須要找到目標用戶的類似用戶

咱們能夠定義一個最小類似度minS,只要用戶間的類似度大於minS,咱們就認爲這兩個用戶是類似的。咱們也可使用KNN的方法,找到與目標用戶最類似的k個用戶。

基於用戶的方法優勢在於,在數據集完善、內容豐富的條件下可以得到較高的準確率。然而,基於用戶的方法存在的許多的問題。主要來自兩個方面:

  • 算法擴展性:隨着系統用戶數量的增長,系統的計算量會顯著增加。這致使此算法難以適應大型系統,從而限制了算法的擴展性。
  • 數據稀疏性:當系統種中商品較多,單個用戶購買的商品每每不到全部商品的1%,這使得用戶與商品的打分表很是稀疏。這致使了用戶之間的類似性可能不許確。

所以,研究人員提出了基於物品的協同過濾(Sarwar,et al. 2001)。

基於物品的協同過濾

基於物品的協同過濾(Item-based Collaborative Filtering)的基本思想則與基於內容的推薦類似,都是「用戶可能會喜歡和他曾經喜歡過的物品類似的物品」。

固然其對物品類似性的度量方法,與基於內容的推薦不一樣。簡要來講,兩個物品的類似性是由購買兩者的用戶羣體之間的類似度決定的。這個句話有些長,讓咱們舉了例子說明一下。

下表爲一個系統中用戶消費狀況。其中,第一行表示用戶A購買了物品a、b和d。

咱們首先從新組織一下表格

咱們使用\(b_1=[1,0,0,0,1]\)做爲物品a的特徵,\(b_2=[1,1,0,1,0]\)做爲物品b的特徵,那它們之間的類似度

\[{\rm sim}(a,b)={\rm cos}(b_1,b_2)=\frac{b_1\cdot b_2}{|b_1|\cdot|b_2|}\approx 0.41\]

因爲有些物品的購買量比較多,也就是平均評分比較高,這致使了這些物品與其餘物品的類似度會偏高。下面,咱們對物品之間的類似性進行調整

在計算類似性以前,咱們將上表中每一個數減去所在列的均值,使得每列的和爲0。

因而物品a的特徵\(c_1=[0.6,-0.4,-0.4,-0.4,0.6]\),物品b的特徵\(c_2=[0.4,0.4,-0.6,0.4,-0.6]\),它們的餘弦類似性爲

\[{\rm sim}(a,b)={\rm cos}(c_1,c_2)=\frac{c_1\cdot c_2}{|c_1|\cdot|c_2|}\approx -0.17\]

獲得物品之間的類似度後,咱們接下來預測用戶是否會購買某一物品。這裏咱們定義,用戶對它未購買的一件物品的喜愛程度爲這個物品與所它購買物品類似度的加權和。

例如,用戶A對於物品b的喜愛程度

\[{\rm fond}(A,c)=\frac{{\rm sim}(a,c)\*1+{\rm sim}(b,c)\*1+{\rm sim}(d,c)\*1}{1+1+1}\]

當此數值大於咱們設定的閾值時,咱們將物品b推薦給A。

基於物品的推薦方法其優勢主要有一下兩點:

  • 計算簡單 容易實現實時響應並提升效率。因爲在常見的系統中物品被評分的變化要比用戶低的多,所以物品類似度的計算通常能夠採用離線完成、按期更新的方式,從而減小了線上計算,實現實時響應並提升效率。尤爲在用戶數遠大於商品數的狀況下更爲顯著。

  • 可解釋性比較好 用戶可能不瞭解其餘人的購物狀況,可是對本身的購物歷史老是很清楚的。基於物品的推薦方法很容易讓用戶理解爲何推薦了某個商品,而且當用戶在興趣列表中添加或刪除商品時,能夠調整系統的推薦結果,這也是其餘方法很難作到的一點。

然而基於物品的推薦也有其缺點:以物品爲基礎的信息過濾系統較少考慮用戶之間的差異,所以精度與基於用戶的方法每每稍微遜色一些。除此以外,數據稀疏性和冷啓動仍有待解決。

基於用戶的推薦和基於物品的推薦的對比

因爲基於用戶的推薦和基於物品的推薦具備某種對稱性,且均爲個性化推薦系統中最爲基礎的入門方法,所以在這裏咱們對這兩種最基本的協同過濾方法進行對比。

在計算複雜度上,基於用戶的方法每每在線計算量大,難以實時響應。對於一個用戶數量大大超過物品數量而物品數量相對穩定的應用,通常而言基於物品的方法從性能和複雜度上都比基於用戶的方法更優。這是由於物品類似度的計算不但計算量小,並且沒必要頻繁更新。而對於諸如新聞、博客或者微內容等物品數量巨大且頻繁更新的應用,基於用保護的方法每每更具優點,推薦系統的設計者須要根據本身應用的特色選擇適合本身的算法。

在適用場景上,內容之間的內在聯繫是非社交網站中很重要的推薦原則,每每比基於類似用戶的推薦原則更加有效。例如在購書網站上,若是向用戶推薦圖書並解釋某個與該用戶有類似興趣的人也購買了被推薦的圖書,是很難讓目標用戶信服的,由於該用戶可能根本不認識推薦理由中「有類似興趣的」用戶;但若是解釋爲被推薦的圖書與用戶以前看過的圖書類似,則更容易被用戶接受,由於用戶每每對本身的歷史行爲記錄是很是熟悉和承認的。相反,在社交性網站中,基於用戶的方法以及相關的基於用戶網絡的方法則是更不錯的選擇。由於基於用戶的推薦方法加上社交網站中社會網絡信息,能夠大大增長用戶對推薦解釋的信服度。

在一個綜合的推薦系統中,通常不多隻用某一種推薦策略,考慮到基於用戶和基於物品的推薦方法之間的互補性,不少推薦系統將兩者結合起來做爲系統的基礎推薦算法。

基於模型的協同過濾

基於用戶和基於物品的方法共有的缺點就是計算規模龐大,難以處理大規模數據量下的實時即若是。
而基於模型的協同過濾(Model-based Collaborative Filtering)則致力於改進該問題。

基於模型的協同過濾的基本思路是:首先利用歷史數據訓練一個模型,而後再用此模型進行預測。

基於模型的方法普遍使用的技術包括語義分析、貝葉斯網絡、矩陣分解等等。例如將用戶屬性和物品屬性的各個特徵做爲輸入,以用戶打分做爲輸出創建一個擬合模型,或者將打分做爲類別轉化爲一個多分類問題。這種方法不是基於一些啓發式規則進行預測計算,而是對於已有數據應用統計和機器學習獲得的模型進行預測。

基於模型的方法的優勢在於快速響應,即只要訓練除了模型就能夠對新用戶或新物品進行實時快速計算;並且因爲因爲將用戶打分做爲優化目標,每每能夠得到較高的預測精度。然而,其問題在於如何將用戶實時或者新增的信號信息反饋給訓練好的模型,從而在系統擴展的過程當中維持推薦的準確度,即模型的增量訓練問題

4、推薦方法的組合

因爲各類推薦方法都有優缺點,因此在實際應用,將多種推薦方法組合在一塊兒,以得到更好的效果。在組合方式上,研究人員提出了7種方案。

1. 加權融合(Weighted)

將多種推薦技術的結果加權混合產生推薦。最簡單的方式是基於感知器的線性混合,首先將協同過濾的推薦結果和基於內容的推薦結果賦予相同的權重值,而後比較用戶對物品的評價與系統的預測是否相符,進而不斷調整權值。

2. 變換(Switch)

根據問題背景和實際狀況採起不一樣的推薦技術。例如,系統首先使用基於內容的推薦技術,若是他不足以產生高可信度的推薦就轉而嘗試使用協同過濾技術。由於須要針對各類可能的狀況設計轉換標準,因此這種方法會增長算法的複雜度。固然這麼作的好處是對各類推薦技術的優勢和弱點比較靈敏,能夠根據特定場景充分發揮不一樣推薦算法的優點。

3. 混合(Mix)

將多種不一樣的推薦算法混合在一塊兒,其難點是如何進行結果的重排序。

4. 特徵混合(Feature Combination)

未來自不一樣推薦數據源的特徵組合起來,由另外一種推薦技術採用。這種方法通常會將協同過濾的信息做爲增長的特徵向量,而後在這增長的數據集上採用基於內容的推薦技術。特徵組合的混合方式使得系統再也不僅僅考慮協同過濾的數據源,因此它下降了用戶對物品評分數量的敏感度。相反,它容許系統擁有物品的內部類似信息,對協同系統是不透明的。

5. 級聯型(Cascade)

首先用一種推薦技術產生一個較爲粗略的候選結果,在此基礎上使用第二種推薦技術對其做出進一步精確的推薦。

6. 特徵遞增(Feature Augmentation)

將前一個推薦方法的輸出做爲後一個推薦方法的輸入。它與級聯型的不一樣支出在於,這種方法上一級產生的並非直接的推薦結果,而是爲下一級的推薦提供某些特徵。一個典型的例子是將聚類分析環節做爲關聯規則挖掘環節的預處理,從而將聚類所提供的類別特徵用於關聯規則挖掘。

7. 元層次混合(Meta-level Hybrid)

將不一樣的推薦模型在模型層面上進行深度的融合,而不只僅是將一個輸出結果做爲另外一個的輸入。例如,基於用戶的方法和基於物品的方法一種可能的組合方式爲:先計算目標物品的類似物品集,而後刪掉全部其餘(不類似的)物品,進而在目標物品的類似物品集上採用基於用戶的協同過濾算法。這種基於類似物品計算近鄰用戶的協同推薦方法,能很好地處理用戶多興趣下的個性化推薦問題,尤爲是在候選推薦物品的內容屬性相差很大的時候,該方法能夠得到較好的性能。

5、推薦算法的評價

根據評價角度的不一樣,有多種評價指標。一般分爲主觀指標和客觀指標,下面介紹幾種經常使用的指標。

主觀指標

1. 用戶滿意度

描述用戶對推薦結果的滿意程度。經過用戶問卷或者監測用戶線上行爲數據得到。

2. 預測準確率

描述推薦系統預測用戶行爲的能力。經過離線數據集上算法給出的推薦列表和用戶行爲的重合率來計算。

3. 驚喜度

若是推薦結果和用戶的歷史興趣不類似,但讓用戶很滿意,則這是一個驚喜的推薦。定性地經過推薦結果與用戶歷史興趣的類似度和用戶滿意度來衡量。

4. 新穎性

若是用戶沒有據說過推薦列表中的大部分物品,則說明該推薦系統的新穎性較好。經過推薦物品的平均流行度和用戶問卷來得到。

客觀指標

1. 覆蓋率

描述推薦系統對物品長尾的發掘能力。經過推薦物品佔總物品的比例和全部物品被推薦的機率分佈來計算。

2. 多樣性

描述推薦系統中推薦結果可否覆蓋用戶不一樣的興趣領域。經過推薦列表中物品兩兩之間不類似性來計算。

參考

[1] 王宏志. 機械工業出版社. 大數據分析原理與實踐.
[2] 劉知遠 崔安欣. 電子工業出版社. 大數據智能.

本文連接:www.superzhang.site/blog/recommender-system

相關文章
相關標籤/搜索