所謂推薦算法就是利用用戶的一些行爲,經過一些數學算法,推測出用戶可能喜歡的東西。推薦算法主要分爲兩種算法
基於內容的信息推薦方法的理論依據主要來自於信息檢索和信息過濾,所謂的基於內容的推薦方法就是根據用戶過去的瀏覽記錄來向用戶推薦用戶沒有接觸過的推薦項。主要是從兩個方法來描述基於內容的推薦方法:啓發式的方法和基於模型的方法。啓發式的方法就是用戶憑藉經驗來定義相關的計算公式,而後再根據公式的計算結果和實際的結果進行驗證,而後再不斷修改公式以達到最終目的。而對於模型的方法就是根據以往的數據做爲數據集,而後根據這個數據集來學習出一個模型。通常的推薦系統中運用到的啓發式的方法就是使用tf-idf的方法來計算,跟還有tf-idf的方法計算出這個文檔中出現權重比較高的關鍵字做爲描述用戶特徵,並使用這些關鍵字做爲描述用戶特徵的向量;而後再根據被推薦項中的權重高的關鍵字來做爲推薦項的屬性特徵,而後再將這個兩個向量最相近的(與用戶特徵的向量計算得分最高)的項推薦給用戶。在計算用戶特徵向量和被推薦項的特徵向量的類似性時,通常使用的是cosine方法,計算兩個向量之間夾角的cosine值。數據庫
基於協同過濾的推薦算法理論上能夠推薦世界上的任何一種東西。圖片、音樂、樣樣能夠。 協同過濾算法主要是經過對未評分項進行評分 預測來實現的。不一樣的協同過濾之間也有很大的不一樣。函數
基於用戶的協同過濾算法: 基於一個這樣的假設「跟你喜愛類似的人喜歡的東西你也頗有可能喜歡。」因此基於用戶的協同過濾主要的任務就是找出用戶的最近鄰居,從而根據最近鄰 居的喜愛作出未知項的評分預測。這種算法主要分爲3個步驟:性能
一,用戶評分。能夠分爲顯性評分和隱形評分兩種。顯性評分就是直接給項目評分(例如給百度裏的用戶評分),隱形評分就是經過評價或是購買的行爲給項目評分 (例如在有啊購買了什麼東西)。學習
二,尋找最近鄰居。這一步就是尋找與你距離最近的用戶,測算距離通常採用如下三種算法: 1.皮爾森相關係數。 2.餘弦類似性。 3調整餘弦類似性。 調整餘弦 類似性彷佛效果會好一些。spa
三,推薦。產生了最近鄰居集合後,就根據這個集合對未知項進行評分預測。把評分最高的N個項推薦給用戶。 這種算法存在性能上的瓶頸,當用戶數愈來愈多的時候,尋找最近鄰居的複雜度也會大幅度的增加。對象
於是這種算法沒法知足及時推薦的要求。基於項的協同過濾解決了這個問題。 基於項的協同過濾算法 根基於用戶的算法類似,只不過第二步改成計算項之間的類似度。因爲項之間的類似度比較穩定能夠在線下進行,因此解決了基於用戶的協同過濾算法存在的性能瓶 頸。圖片
基於關聯規則的推薦(Association Rule-based Recommendation)是以關聯規則爲基礎,把已購商品做爲規則頭,規則體爲推薦對象。關聯規則挖掘能夠發現不一樣商品在銷售過程當中的相關性,在零售業中已經獲得了成功的應用。管理規則就是在一個交易數據庫中統計購買了商品集X的交易中有多大比例的交易同時購買了商品集Y,其直觀的意義就是用戶在購買某些商品的時候有多大傾向去購買另一些商品。好比購買牛奶的同時不少人會同時購買麪包。ci
算法的第一步關聯規則的發現最爲關鍵且最耗時,是算法的瓶頸,但能夠離線進行。其次,商品名稱的同義性問題也是關聯規則的一個難點。文檔
基於效用的推薦(Utility-based Recommendation)是創建在對用戶使用項目的效用狀況上計算的,其核心問題是怎麼樣爲每個用戶去建立一個效用函數,所以,用戶資料模型很大程度上是由系統所採用的效用函數決定的。基於效用推薦的好處是它能把非產品的屬性,如提供商的可靠性(Vendor Reliability)和產品的可得性(Product Availability)等考慮到效用計算中。
基於知識的推薦(Knowledge-based Recommendation)在某種程度是能夠當作是一種推理(Inference)技術,它不是創建在用戶須要和偏好基礎上推薦的。基於知識的方法因它們所用的功能知識不一樣而有明顯區別。效用知識(Functional Knowledge)是一種關於一個項目如何知足某一特定用戶的知識,所以能解釋須要和推薦的關係,因此用戶資料能夠是任何能支持推理的知識結構,它能夠是用戶已經規範化的查詢,也能夠是一個更詳細的用戶須要的表示。
因爲各類推薦方法都有優缺點,因此在實際中,組合推薦(Hybrid Recommendation)常常被採用。研究和應用最多的是內容推薦和協同過濾推薦的組合。最簡單的作法就是分別用基於內容的方法和協同過濾推薦方法去產生一個推薦預測結果,而後用某方法組合其結果。儘管從理論上有不少種推薦組合方法,但在某一具體問題中並不見得都有效,組合推薦一個最重要原則就是經過組合後要能避免或彌補各自推薦技術的弱點。
在組合方式上,有研究人員提出了七種組合思路:
1)加權(Weight):加權多種推薦技術結果。
2)變換(Switch):根據問題背景和實際狀況或要求決定變換採用不一樣的推薦技術。
3)混合(Mixed):同時採用多種推薦技術給出多種推薦結果爲用戶提供參考。
4)特徵組合(Feature combination):組合來自不一樣推薦數據源的特徵被另外一種推薦算法所採用。
5)層疊(Cascade):先用一種推薦技術產生一種粗糙的推薦結果,第二種推薦技術在此推薦結果的基礎上進一步做出更精確的推薦。
6)特徵擴充(Feature augmentation):一種技術產生附加的特徵信息嵌入到另外一種推薦技術的特徵輸入中。
7)元級別(Meta-level):用一種推薦方法產生的模型做爲另外一種推薦方法的輸入。
各類推薦方法都有其各自的優勢和缺點,見表1。
表1 主要推薦方法對比 |
||
推薦方法 | 優勢 | 缺點 |
基於內容推薦 | 推薦結果直觀,容易解釋;
不須要領域知識 |
新用戶問題;
複雜屬性很差處理; 要有足夠數據構造分類器 |
協同過濾推薦 | 新異興趣發現、不須要領域知識;
隨着時間推移性能提升; 推薦個性化、自動化程度高; 能處理複雜的非結構化對象 |
稀疏問題;
可擴展性問題; 新用戶問題; 質量取決於歷史數據集; 系統開始時推薦質量差; |
基於規則推薦 | 能發現新興趣點;
不要領域知識 |
規則抽取難、耗時;
產品名同義性問題; 個性化程度低; |
基於效用推薦 | 無冷開始和稀疏問題;
對用戶偏好變化敏感; 能考慮非產品特性 |
用戶必須輸入效用函數;
推薦是靜態的,靈活性差; 屬性重疊問題; |
基於知識推薦 | 能把用戶需求映射到產品上;
能考慮非產品屬性 |
知識難得到;
推薦是靜態的 |