基於協同過濾的推薦算法

前言

之前寫來基於內容的推薦方法,現在想要分析一下基於協同過濾的推薦方法,網上與很多文章介紹來,但是站在不同的角度思考同一個問題,或許讓你更加理解。

基於協同過濾的推薦:概念

協同過濾(Collaborative Filtering)技術,是推薦系統中應用最爲廣泛的技術之一,它基於一組興趣相同的用戶進行推薦。協同過濾基於這樣的假設:爲用戶找到他真正感興趣的內容的好方法是,首先找他與他興趣相似的用戶,然後將這些用戶感興趣的內容推薦給此用戶。類似朋友們推薦,畢竟生活場景下大家都會向朋友諮詢,而得到朋友的推薦,協同過濾就是朋友,它來幫你推薦。

wiki上的定義則是:協同過濾(英語:Collaborative Filtering),簡單來說是利用某興趣相投、擁有共同經驗之羣體的喜好來推薦使用者感興趣的資訊,個人透過合作的機制給予資訊相當程度的迴應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選資訊,迴應不一定侷限於特別感興趣的,特別不感興趣資訊的紀錄也相當重要。

協同過濾技術可以分爲三類:基於用戶(User-based)的協同過濾;基於項目(Item-based)的協同過濾;基於模型(Model- based)的協同過濾。

不同點

如果你要問我跟基於內容有什麼區別?我可能就會想到是角度不一樣,一個是基於商品來推薦,協同是基於用戶來推薦。

  • 基於內容的推薦,主要構建內容特徵,不需要用戶特徵,需要一個關聯關係:用戶與內容的關聯,包括用戶瀏覽、購買內容的關聯關係。一個商品被用戶購買、收藏、瀏覽等行爲,會讓我們推薦該商品相似的其他商品給用戶。
  • 協同過濾:利用用戶人口統計特徵、商品特徵一起構建特徵,這個特徵可以是放到用戶側或者內容側,然後計算相似度,把一個用戶購買、瀏覽的商品推薦給他相似的用戶。如果是單純的基於用戶推薦可能不會關注商品特徵,直接拿人口統計特徵來構建用戶特徵。這裏的協同應該是共同的意思,用戶、內容共同起作用。

協同過濾有那些方法

參考很多博客種,大家都提到的協同過濾有3種:

  • 基於用戶的協同過濾
    基於用戶其實就是構建用戶特徵,內容特徵也要融入用戶特徵,計算用戶與用戶之間的相似度,得到用戶的相鄰用戶,從而開始推薦其他用戶有興趣的內容。

  • 基於項目的協同過濾
    基於項目其實就是構建內容特徵,這裏的項目就是內容,用戶特徵要融入內容特徵,計算內容與內容之間的相似度,得到內容的相似內容,從而開始推薦把用戶推薦給內容,哈哈,反過來了,但是呈現的用戶端效果還是把商品推薦給用戶。

  • 基於模型的協同過濾
    說的直白一點,這就是用機器學習、深度學習等模型來做推薦,好吧,上面兩種方法可能不能算機器學習模型吧,主要解決的問題:稀疏數據如何來推薦?商品很多,用戶很多,但是兩者關聯起來的數據就比較少,大部分都是兩者沒有關聯的,用模型來預測它們的關聯關係,把關聯關係最強的內容推薦給用戶,從而完成推薦,這也是當前主流的推薦算法, 主流方法有:用關聯算法,聚類算法,分類算法,迴歸算法,矩陣分解,神經網絡,圖模型以及隱語義模型來解決。這個下面會持續詳解。

基於模型的協同過濾:聚類算法

基於聚類算法其實跟基於內容、基於用戶的協同過濾是差不多的,聚類主要分從用戶角度、內容角度兩方面做聚類:

  • 基於用戶聚類
    基於用戶聚類考慮用戶,以一定的距離度量方式來對用戶聚類,這裏就可以採用相似度度量方式,然後把同一個類簇中的用戶的商品推薦給其他用戶,可以把這些用戶的商品聚集,然後取TOP n 做用戶推薦,如果一個用戶從來沒有購買,但是同一個類簇中其他用戶購買的商品會被推薦給該用戶,適合做新用戶的推薦。
  • 基於內容聚類
    基於內容聚類同基於用戶類似,只不過把用戶推薦給商品,商品類簇中的所有用戶共享這些商品,雖然有些商品從來沒有被購買,但是這種方式可以幫助找到目標人羣,適合新商品的推薦。

相應的聚類算法都可以用上,思想都是上述這樣的。
缺點:一個類簇都是新內容、新用戶,這些用戶、內容就永遠不會有推薦,比如新用戶是一個類簇羣體,這些新用戶沒有購買過商品,也就無法爲他們推薦,不過在後期的購買過程中可能會購買商品,只要用戶有所行爲,後期可以爲用戶推薦。

基於模型的協同過濾:分類算法

採用分類的思想,對商品構建訓練集,每個商品有一個標籤:推薦或不推薦,這樣可以來訓練一個模型,對其他商品做一個分類,電商平臺這種算法比較適用,商品訓練集比較容易構成,好評數高於一定的數量就是推薦,短期銷量高於閾值的就是推薦。一般採用來邏輯迴歸、樸素貝葉斯分類做這個操作。爲啥是邏輯迴歸而不是看起來更加高大上的比如支持向量機呢?因爲邏輯迴歸的解釋性比較強,每個物品是否推薦我們都有一個明確的概率放在這,同時可以對數據的特徵做工程化,得到調優的目的。目前邏輯迴歸做協同過濾在BAT等大廠已經非常成熟了。我再想,能不能把推薦的商品再跟用戶進行關聯,再過濾一次,將相關性高的商品推薦過來。

優點:

  • 算法簡單、分類快速
  • 可解釋強

缺點:

  • 似乎不考慮用戶特徵,完全構建商品相關特徵,當然也可以把用戶特徵作爲商品特徵,考慮進去。

基於模型的協同過濾:迴歸算法

用迴歸算法做協同過濾比分類算法看起來更加的自然。我們的評分可以是一個連續的值而不是離散的值,通過迴歸模型我們可以得到目標用戶對某商品的預測打分。推薦或不推薦,比較常見的例如:線性迴歸、迴歸樹、支持向量迴歸、GBDT等。

優點:

  • 更加靈活,打分只是評估,可以依據分數進行一個篩選
  • 可解釋性強

缺點:

  • 似乎不考慮用戶特徵,完全構建商品相關特徵,當然也可以把用戶特徵作爲商品特徵,考慮進去。

其他模型

  • 基於深度學習的推薦,比如比較主流的用兩層神經網絡來做推薦算法的是限制玻爾茲曼機(RBM),這裏其實用深度學習做分類或者回歸模型
  • 圖模型,這裏可以做用戶的圖模型,也可以做商品的圖模型,SimRank系列算法等,
  • 目前主流的矩陣分解推薦算法主要是SVD的一些變種,比如FunkSVD,BiasSVD和SVD++。這些算法和傳統SVD的最大區別是不再要求將矩陣分解爲UVTU\sum V^T的形式,而變是兩個低秩矩陣PTQP^TQ的乘積形式。

問題解答

  • 協同過濾的特徵只關注用戶或者只關注內容嘛?
    其實不是這樣的,只關於某個領域不是協同過濾,協同過濾算法要把兩者集合起來,可以側重用戶或內容,基於你的業務需求可以做選擇,兩者的優點、缺點上面都有。

  • 參考的博客是17年寫的,如今推薦技術有大的突破嘛?
    17年初的這篇文章是參考了一篇國外的會議文章結合我的學習與項目總結的。這幾年薦技術無大的突破,唯一就是能說深度學習用於推薦越來越普及,強化學習用於推薦也開始出現了。用戶畫像特徵、商品畫像也越來越精細。

  • 業務問題:如果品牌商新商品硬推,如何實現推薦算法與運營的結合?
    這個問題是非常具有意義的,品牌商的新商品需要推廣,傳統的推廣手段是廣告、優惠促銷、宣傳等,如何利用推薦等技術使得商品曝光度加大,甚至成爲爆品,這也是平臺所需要研究的,這一快如果粗略做法就是在精排系統中強行植入,直接算商品相似度,把新商品植入到排序中。

推薦模型的流程

  • 離線:召回,得到千級別的商品
  • 近線:粗排,得到百級別的商品
  • 在線:精排,得到十級別的商品

推薦的未來及總結

由於集成學習的成熟,在推薦算法上也有較好的表現,未來這一塊的發展也比較多,深度學習也會是推薦領域有比較大的發展。協同過濾也有一些問題:

  • 冷啓動的問題,針對新用戶、新商品沒有比較好的推薦策略,但是我覺得可以利用混合推薦的方法來解決該問題,基於用戶、內容的推薦算法可以解決該問題。
  • 用戶場景的問題
    用戶的獨特喜好比較難挖掘,某些小衆對需求,或者因爲用戶可能受文化影響,突然對某類感興趣,這個難以挖掘。

社招、校招內推時刻

本人在阿里巴巴工作,業餘時間做了社招、校招的公衆號,可以內推大家,免篩選直接面試,公衆號的一些文章也幫助大學、研究生的一些同學瞭解校招、瞭解名企,工作幾年的同學想換工作也可以找我走社招內推,同時大家對文章有問題,也可以公衆號找我,掃碼關注哦!

參考博客

協同過濾推薦算法總結
個性化推薦系統實踐應用

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