推薦算法初步_算法總覽

目錄

1. 什麼是推薦算法

2. 推薦算法的目的

3. 推薦算法的條件

4. 推薦算法分類

4.1 基於流行度的推薦算法

4.2 基於內容的推薦算法

4.3 基於關聯規則的推薦算法

4.4 基於協同過濾的推薦

4.4.1 基於用戶(User-based)的推薦

4.4.2 基於物品(Item-based)的推薦

4.4.3 協同過濾算法總結

4.5 基於模型的推薦算法

4.6 混合推薦算法


 

1. 什麼是推薦算法


推薦算法計算機專業中的一種算法,通過一些數學算法,推測出用戶可能喜歡的東西,目前應用推薦算法比較好的地方主要是互聯網,例如淘寶、頭條新聞等。所謂推薦算法就是利用用戶的一些行爲,通過一些數學算法,推測出用戶可能喜歡的東西。

推薦算法最早在1992年就提出來了,但是火起來實際上是最近這些年的事情,因爲互聯網的爆發,有了更大的數據量可以供我們使用,推薦算法纔有了很大的用武之地。

 

2. 推薦算法的目的


猜你喜歡、個性歌單、熱點微博,這些都是推薦系統的輸出內容。推薦系統得主要目的包含以下幾項:

目的1:幫助用戶找到想要的商品(新聞/音樂/……),發掘長尾

幫用戶找到想要的東西,談何容易。商品茫茫多,甚至是我們自己,也經常點開淘寶,面對眼花繚亂的打折活動不知道要買啥。在經濟學中,有一個著名理論叫長尾理論(The Long Tail)。

 

套用在互聯網領域中,指的就是最熱的那一小部分資源將得到絕大部分的關注,而剩下的很大一部分資源卻鮮少有人問津。這不僅造成了資源利用上的浪費,也讓很多口味偏小衆的用戶無法找到自己感興趣的內容。

  目的2:降低信息過載

  互聯網時代信息量已然處於爆炸狀態,若是將所有內容都放在網站首頁上用戶是無從閱讀的,信息的利用率將會十分低下。因此我們需要推薦系統來幫助用戶過濾掉低價值的信息。

  目的3:提高站點的點擊率/轉化率

  好的推薦系統能讓用戶更頻繁地訪問一個站點,並且總是能爲用戶找到他想要購買的商品或者閱讀的內容。

  目的4:加深對用戶的瞭解,爲用戶提供定製化服務

  可以想見,每當系統成功推薦了一個用戶感興趣的內容後,我們對該用戶的興趣愛好等維度上的形象是越來越清晰的。當我們能夠精確描繪出每個用戶的形象之後,就可以爲他們定製一系列服務,讓擁有各種需求的用戶都能在我們的平臺上得到滿足。

  ……

 

3. 推薦算法的條件


現在的各種各樣的推薦算法,但是不管怎麼樣,都繞不開幾個條件,這是推薦的基本條件:

1.根據和你共同喜好的人來給你推薦 

2.根據你喜歡的物品找出和它相似的來給你推薦 

3.根據你給出的關鍵字來給你推薦,這實際上就退化成搜索算法了 

4.根據上面的幾種條件組合起來給你推薦

 

4. 推薦算法分類


4.1 基於流行度的推薦算法

基於流行度的推薦算法比較簡單粗暴,主要是對熱點商品或者信息的推薦。它主要是根據PV、UV、日均PV或分享率等數據來按某種熱度排序來推薦給用戶。這種算法既有優點也有缺點。

優點:簡單,適用於剛註冊的新用戶,能夠解決對新用戶進行推薦的冷啓動問題;

缺點:無法針對用戶提供個性化的推薦。基於這種算法也可做一些優化,比如加入用戶分羣的流行度排序,例如把熱榜上的體育內容優先推薦給體育迷,把政要熱文推給熱愛談論政治的用戶。

 

4.2 基於內容的推薦算法

基於內容的推薦是在推薦引擎出現之初應用最爲廣泛的推薦機制,它的核心思想是根據推薦物品或內容的元數據,發現物品或者內容的相關性,然後基於用戶以往的喜好記錄,推薦給用戶相似的物品。比如你看了哈利波特I,基於內容的推薦算法發現哈利波特II-VI,與你以前觀看的在內容上面(共有很多關鍵詞)有很大關聯性,就把後者推薦給你。

這種推薦系統多用於一些資訊類的應用上,針對文章(電影音樂)本身抽取一些tag作爲該其關鍵詞,繼而可以通過這些tag來評價兩篇文章的相似度。

優點:

1、易於實現,不需要用戶數據因此不存在稀疏性和冷啓動問題。

2、基於物品本身特徵推薦,因此不存在過度推薦熱門的問題。

缺點:

1、抽取的特徵既要保證準確性又要具有一定的實際意義,否則很難保證推薦結果的相關性。豆瓣網採用人工維護tag的策略,依靠用戶去維護內容的tag的準確性。

2、推薦的Item可能會重複,典型的就是新聞推薦,如果你看了一則關於MH370的新聞,很可能推薦的新聞和你瀏覽過的,內容一致。

 

4.3 基於關聯規則的推薦算法

基於關聯規則的推薦更常見於電子商務系統中,並且也被證明行之有效。其實際的意義爲購買了一些物品的用戶更傾向於購買另一些物品。基於關聯規則的推薦系統的首要目標是挖掘出關聯規則,也就是那些同時被很多用戶購買的物品集合,這些集合內的物品可以相互進行推薦。目前關聯規則挖掘算法主要從Apriori和FP-Growth兩個算法發展演變而來。 基於關聯規則的推薦系統一般轉化率較高,因爲當用戶已經購買了頻繁集合中的若干項目後,購買該頻繁集合中其他項目的可能性更高。

缺點:

1.計算量較大,但是可以離線計算,因此影響不大。

2.由於採用用戶數據,不可避免的存在冷啓動和稀疏性問題。

3.存在熱門項目容易被過度推薦的問題。

 

4.4 基於協同過濾的推薦

協同過濾是一種在推薦系統中廣泛採用的推薦方法。這種算法基於一個“物以類聚,人以羣分”的假設,喜歡相同物品的用戶更有可能具有相同的興趣。基於協同過濾的推薦系統一般應用於有用戶評分的系統之中,通過分數去刻畫用戶對於物品的喜好。協同過濾被視爲利用集體智慧的典範,不需要對項目進行特殊處理,而是通過用戶建立物品與物品之間的聯繫。 目前,協同過濾推薦系統被分化爲兩種類型:基於用戶(User-based)的推薦和基於物品(Item-based)的推薦。

 

4.4.1 基於用戶(User-based)的推薦

基於用戶的協同過濾推薦的基本原理是,基於用戶對物品的偏好找到相鄰鄰居用戶,然後將鄰居用戶喜歡的推薦給當前用戶。計算上,就是將一個用戶對所有物品的偏好作爲一個向量來計算用戶之間的相似度,找到 K 鄰居後,根據鄰居的相似度權重以及他們對物品的偏好,預測當前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作爲推薦。

下圖給出了一個例子,對於用戶 A,根據用戶的歷史偏好,這裏只計算得到一個鄰居 - 用戶 C,然後將用戶 C 喜歡的物品 D 推薦給用戶 A。

優點:在於推薦物品之間在內容上可能完全不相關,因此可以發現用戶的潛在興趣,並且針對每個用戶生成其個性化的推薦結果。

缺點:在於一般的Web系統中,用戶的增長速度都遠遠大於物品的增長速度,因此其計算量的增長巨大,系統性能容易成爲瓶頸。因此在業界中單純的使用基於用戶的協同過濾系統較少。

 

4.4.2 基於物品(Item-based)的推薦

基於物品的協同過濾和基於用戶的協同過濾相似,只是在計算鄰居時採用物品本身,而不是從用戶的角度,即基於用戶對物品的偏好找到相似的物品,然後根據用戶的歷史偏好,推薦相似的物品給他。從計算的角度看,就是將所有用戶對某個物品的偏好作爲一個向量來計算物品之間的相似度,得到物品的相似物品後,根據用戶歷史的偏好預測當前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作爲推薦。基於物品的協同過濾可以看作是關聯規則推薦的一種退化,但由於協同過濾更多考慮了用戶的實際評分,並且只是計算相似度而非尋找頻繁集,因此可以認爲基於物品的協同過濾準確率較高並且覆蓋率更高。

下圖給出了一個例子,對於物品 A、B,根據所有用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較相似,而用戶 C 喜歡物品 A,那麼可以推斷出用戶 C 可能也喜歡物品 C。

優點:同基於用戶的推薦相比,基於物品的推薦應用更爲廣泛,擴展性和算法性能更好。由於項目的增長速度一般較爲平緩,因此性能變化不大。

缺點:無法提供個性化的推薦結果。

 

4.4.3 協同過濾算法總結

基於用戶和基於物品兩個策略中應該如何選擇呢?其實基於物品的協同過濾推薦機制是 Amazon 在基於用戶的機制上改良的一種策略,因爲在大部分的 Web 站點中,物品的個數是遠遠小於用戶的數量的,而且物品的個數和相似度相對比較穩定;同時基於物品的機制比基於用戶的實時性更好。但也不是所有的場景都是這樣的情況,在一些新聞推薦系統中,也許物品,也就是新聞的個數可能大於用戶的個數,而且新聞的更新程度也很快,所以它的相似度依然不穩定。所以,推薦策略的選擇其實也和具體的應用場景有很大的關係。

基於協同過濾的推薦機制是現今應用最爲廣泛的推薦機制,它有以下幾個顯著的優點:

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

然後而它也存在以下幾個缺點:

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

 

4.5 基於模型的推薦算法

基於模型的方法有很多,主要是使用常用的機器學習算法對目標用戶建立推薦算法模型,然後對用戶的愛好進行預測推薦以及對推薦的結果打分排序等。 常用的模型包括Aspect Model,pLSA,LDA,聚類,SVD,Matrix Factorization,LR,GBDT等,這種方法訓練過程比較長,但是訓練完成後,推薦過程比較快且準確。因此它比較適用於實時性比較高的業務如新聞、廣告等。當然,而若是需要這種算法達到更好的效果,則需要人工干預反覆的進行屬性的組合和篩選,也就是我們常說的特徵工程。而由於新聞的時效性,系統也需要反覆更新線上的數學模型,以適應變化。

簡單的以LR爲例,來講一下推薦系統的運作原理。我們通過分析系統中用戶的行爲和購買記錄等數據,得到如下表:

表中的行是一種物品,x1~xn是影響用戶行爲的各種特徵屬性,如用戶年齡段、性別、地域、物品的價格、類別等等,y則是用戶對於該物品的喜好程度,可以是購買記錄、瀏覽、收藏等等。通過大量這類的數據,我們可以迴歸擬合出一個函數,計算出x1~xn對應的係數,這即是各特徵屬性對應的權重,權重值越大則表明該屬性對於用戶選擇商品越重要。   

在擬合函數的時候我們會想到,單一的某種屬性和另一種屬性可能並不存在強關聯。比如,年齡與購買護膚品這個行爲並不呈強關聯,性別與購買護膚品也不強關聯,但當我們把年齡與性別綜合在一起考慮時,它們便和購買行爲產生了強關聯。比如,20~30歲的女性用戶更傾向於購買護膚品,這就叫交叉屬性。通過反覆測試和經驗,我們可以調整特徵屬性的組合,擬合出最準確的迴歸函數。最後得出的屬性權重如下:

基於模型的算法由於快速、準確,適用於實時性比較高的業務如新聞、廣告等,而若是需要這種算法達到更好的效果,則需要人工干預反覆的進行屬性的組合和篩選,也就是常說的Feature Engineering。而由於新聞的時效性,系統也需要反覆更新線上的數學模型,以適應變化。

 

4.6 混合推薦算法

真正的現實應用中,其實基本上很少會使用單一的推薦算法去實現推薦任務。因此,大型成熟網站的推薦系統都是基於各種推薦算法的優缺點以及適合場景分析的情況下的組合使用的“混合算法”。當然,混合策略也會是十分豐富的,例如不同策略的算法加權、不同場景和階段使用不同的算法等等。具體的怎麼混合需要結合實際的應用場景進行分析與應用。由此可見推薦算法的類型還是相當之多的,尤其當應用場景發生變化時,推薦算法往往也需要作出較大的變動。

在混合方式上,有研究人員提出了七種混合思路:

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

 

參考文章:

推薦系統系列 - 引導 - 5類系統推薦算法

[機器學習]推薦系統之協同過濾算法

系列學習——推薦算法綜述

推薦系統中常用算法 以及優點缺點對比

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章