1. 程式人生 > >推薦演算法概述:基於內容的推薦演算法、協同過濾推薦演算法和基於知識的推薦演算法

推薦演算法概述:基於內容的推薦演算法、協同過濾推薦演算法和基於知識的推薦演算法

所謂推薦演算法就是利用使用者的一些行為,通過一些數學演算法,推測出使用者可能喜歡的東西。推薦演算法主要分為兩種

1. 基於內容的推薦

     基於內容的資訊推薦方法的理論依據主要來自於資訊檢索資訊過濾,所謂的基於內容的推薦方法就是根據使用者過去的瀏覽記錄來向用戶推薦使用者沒有接觸過的推薦項。主要是從兩個方法來描述基於內容的推薦方法:啟發式的方法和基於模型的方法。啟發式的方法就是使用者憑藉經驗來定義相關的計算公式,然後再根據公式的計算結果和實際的結果進行驗證,然後再不斷修改公式以達到最終目的。而對於模型的方法就是根據以往的資料作為資料集,然後根據這個資料集來學習出一個模型。一般的推薦系統中運用到的啟發式的方法就是使用

tf-idf的方法來計算,跟還有tf-idf的方法計算出這個文件中出現權重比較高的關鍵字作為描述使用者特徵,並使用這些關鍵字作為描述使用者特徵的向量;然後再根據被推薦項中的權重高的關鍵字來作為推薦項的屬性特徵,然後再將這個兩個向量最相近的(與使用者特徵的向量計算得分最高)的項推薦給使用者。在計算使用者特徵向量和被推薦項的特徵向量的相似性時,一般使用的是cosine方法,計算兩個向量之間夾角的cosine值。

2.基於協同過濾的推薦

    基於協同過濾的推薦演算法理論上可以推薦世界上的任何一種東西。圖片、音樂、樣樣可以。 協同過濾演算法主要是通過對未評分項進行評分 預測來實現的。不同的協同過濾之間也有很大的不同。

    基於使用者的協同過濾演算法: 基於一個這樣的假設“跟你喜好相似的人喜歡的東西你也很有可能喜歡。”所以基於使用者的協同過濾主要的任務就是找出使用者的最近鄰居,從而根據最近鄰 居的喜好做出未知項的評分預測。這種演算法主要分為3個步驟:      一,使用者評分。可以分為顯性評分和隱形評分兩種。顯性評分就是直接給專案評分(例如給百度裡的使用者評分),隱形評分就是通過評價或是購買的行為給專案評分 (例如在有啊購買了什麼東西)。     二,尋找最近鄰居。這一步就是尋找與你距離最近的使用者,測算距離一般採用以下三種演算法: 1.皮爾森相關係數。 2.餘弦相似性。 3調整餘弦相似性。 調整餘弦 相似性似乎效果會好一些。
    三,推薦。產生了最近鄰居集合後,就根據這個集合對未知項進行評分預測。把評分最高的N個項推薦給使用者。 這種演算法存在效能上的瓶頸,當用戶數越來越多的時候,尋找最近鄰居的複雜度也會大幅度的增長。      因而這種演算法無法滿足及時推薦的要求。基於項的協同過濾解決了這個問題。 基於項的協同過濾演算法 根基於使用者的演算法相似,只不過第二步改為計算項之間的相似度。由於項之間的相似度比較穩定可以線上下進行,所以解決了基於使用者的協同過濾演算法存在的效能瓶 頸。

3.基於關聯規則推薦

     基於關聯規則的推薦(Association Rule-based Recommendation)是以關聯規則為基礎,把已購商品作為規則頭,規則體為推薦物件。關聯規則挖掘可以發現不同商品在銷售過程中的相關性,在零售業中已經得到了成功的應用。管理規則就是在一個交易資料庫中統計購買了商品集X的交易中有多大比例的交易同時購買了商品集Y,其直觀的意義就是使用者在購買某些商品的時候有多大傾向去購買另外一些商品。比如購買牛奶的同時很多人會同時購買麵包。 演算法的第一步關聯規則的發現最為關鍵且最耗時,是演算法的瓶頸,但可以離線進行。其次,商品名稱的同義性問題也是關聯規則的一個難點。

4.基於效用推薦

    基於效用的推薦(Utility-based Recommendation)是建立在對使用者使用專案的效用情況上計算的,其核心問題是怎麼樣為每一個使用者去建立一個效用函式,因此,使用者資料模型很大程度上是由系統所採用的效用函式決定的。基於效用推薦的好處是它能把非產品的屬性,如提供商的可靠性(Vendor Reliability)和產品的可得性(Product Availability)等考慮到效用計算中。

5.基於知識的推薦

    基於知識的推薦(Knowledge-based Recommendation)在某種程度是可以看成是一種推理(Inference)技術,它不是建立在使用者需要和偏好基礎上推薦的。基於知識的方法因它們所用的功能知識不同而有明顯區別。效用知識(Functional Knowledge)是一種關於一個專案如何滿足某一特定使用者的知識,因此能解釋需要和推薦的關係,所以使用者資料可以是任何能支援推理的知識結構,它可以是使用者已經規範化的查詢,也可以是一個更詳細的使用者需要的表示。

6.組合推薦

   由於各種推薦方法都有優缺點,所以在實際中,組合推薦(Hybrid Recommendation)經常被採用。研究和應用最多的是內容推薦和協同過濾推薦的組合。最簡單的做法就是分別用基於內容的方法和協同過濾推薦方法去產生一個推薦預測結果,然後用某方法組合其結果。儘管從理論上有很多種推薦組合方法,但在某一具體問題中並不見得都有效,組合推薦一個最重要原則就是通過組合後要能避免或彌補各自推薦技術的弱點。

在組合方式上,有研究人員提出了七種組合思路:
   1)加權(Weight):加權多種推薦技術結果。
2)變換(Switch):根據問題背景和實際情況或要求決定變換採用不同的推薦技術。
3)混合(Mixed):同時採用多種推薦技術給出多種推薦結果為使用者提供參考。
4)特徵組合(Feature combination):組合來自不同推薦資料來源的特徵被另一種推薦演算法所採用。
5)層疊(Cascade):先用一種推薦技術產生一種粗糙的推薦結果,第二種推薦技術在此推薦結果的基礎上進一步作出更精確的推薦。
6)特徵擴充(Feature augmentation):一種技術產生附加的特徵資訊嵌入到另一種推薦技術的特徵輸入中。
7)元級別(Meta-level):用一種推薦方法產生的模型作為另一種推薦方法的輸入。

主要推薦方法的對比

各種推薦方法都有其各自的優點和缺點,見表1。
表1 主要推薦方法對比
推薦方法 優點 缺點
基於內容推薦        推薦結果直觀,容易解釋;                  不需要領域知識 新使用者問題;                          複雜屬性不好處理; 要有足夠資料構造分類器
協同過濾推薦 新異興趣發現、不需要領域知識; 隨著時間推移效能提高; 推薦個性化、自動化程度高; 能處理複雜的非結構化物件 稀疏問題; 可擴充套件性問題; 新使用者問題; 質量取決於歷史資料集; 系統開始時推薦質量差;
基於規則推薦 能發現新興趣點; 不要領域知識 規則抽取難、耗時; 產品名同義性問題; 個性化程度低;
基於效用推薦 無冷開始和稀疏問題; 對使用者偏好變化敏感; 能考慮非產品特性 使用者必須輸入效用函式; 推薦是靜態的,靈活性差; 屬性重疊問題;
基於知識推薦 能把使用者需求對映到產品上; 能考慮非產品屬性 知識難獲得; 推薦是靜態的