協同過濾推薦算法總結

    推薦算法具備很是多的應用場景和商業價值,所以對推薦算法值得好好研究。推薦算法種類不少,可是目前應用最普遍的應該是協同過濾類別的推薦算法,本文就對協同過濾類別的推薦算法作一個歸納總結,後續也會對一些典型的協同過濾推薦算法作原理總結。html

1. 推薦算法概述

    推薦算法是很是古老的,在機器學習尚未興起的時候就有需求和應用了。歸納來講,能夠分爲如下5種:算法

    1)基於內容的推薦:這一類通常依賴於天然語言處理NLP的一些知識,經過挖掘文本的TF-IDF特徵向量,來獲得用戶的偏好,進而作推薦。這類推薦算法能夠找到用戶獨特的小衆喜愛,並且還有較好的解釋性。這一類因爲須要NLP的基礎,本文就很少講,在後面專門講NLP的時候再討論。網絡

    2)協調過濾推薦:本文後面要專門講的內容。協調過濾是推薦算法中目前最主流的種類,花樣繁多,在工業界已經有了不少普遍的應用。它的優勢是不須要太多特定領域的知識,能夠經過基於統計的機器學習算法來獲得較好的推薦效果。最大的優勢是工程上容易實現,能夠方便應用到產品中。目前絕大多數實際應用的推薦算法都是協同過濾推薦算法。機器學習

    3)混合推薦:這個相似咱們機器學習中的集成學習,博才衆長,經過多個推薦算法的結合,獲得一個更好的推薦算法,起到三個臭皮匠頂一個諸葛亮的做用。好比經過創建多個推薦算法的模型,最後用投票法決定最終的推薦結果。混合推薦理論上不會比單一任何一種推薦算法差,可是使用混合推薦,算法複雜度就提升了,在實際應用中有使用,可是並無單一的協調過濾推薦算法,好比邏輯迴歸之類的二分類推薦算法普遍。post

    4)基於規則的推薦:這類算法常見的好比基於最多用戶點擊,最多用戶瀏覽等,屬於大衆型的推薦方法,在目前的大數據時代並不主流。學習

    5)基於人口統計信息的推薦:這一類是最簡單的推薦算法了,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,而後進行推薦,目前在大型系統中已經較少使用。大數據

2. 協同過濾推薦概述

    協同過濾(Collaborative Filtering)做爲推薦算法中最經典的類型,包括在線的協同和離線的過濾兩部分。所謂在線協同,就是經過在線數據找到用戶可能喜歡的物品,而離線過濾,則是過濾掉一些不值得推薦的數據,比好比推薦值評分低的數據,或者雖然推薦值高可是用戶已經購買的數據。網站

    協同過濾的模型通常爲m個物品,m個用戶的數據,只有部分用戶和部分數據之間是有評分數據的,其它部分評分是空白,此時咱們要用已有的部分稀疏數據來預測那些空白的物品和數據之間的評分關係,找到最高評分的物品推薦給用戶。htm

    通常來講,協同過濾推薦分爲三種類型。第一種是基於用戶(user-based)的協同過濾,第二種是基於項目(item-based)的協同過濾,第三種是基於模型(model based)的協同過濾對象

    基於用戶(user-based)的協同過濾主要考慮的是用戶和用戶之間的類似度,只要找出類似用戶喜歡的物品,並預測目標用戶對對應物品的評分,就能夠找到評分最高的若干個物品推薦給用戶。而基於項目(item-based)的協同過濾和基於用戶的協同過濾相似,只不過這時咱們轉向找到物品和物品之間的類似度,只有找到了目標用戶對某些物品的評分,那麼咱們就能夠對類似度高的相似物品進行預測,將評分最高的若干個類似物品推薦給用戶。好比你在網上買了一本機器學習相關的書,網站立刻會推薦一堆機器學習,大數據相關的書給你,這裏就明顯用到了基於項目的協同過濾思想。

    咱們能夠簡單比較下基於用戶的協同過濾和基於項目的協同過濾:基於用戶的協同過濾須要在線找用戶和用戶之間的類似度關係,計算複雜度確定會比基於基於項目的協同過濾高。可是能夠幫助用戶找到新類別的有驚喜的物品。而基於項目的協同過濾,因爲考慮的物品的類似性一段時間不會改變,所以能夠很容易的離線計算,準確度通常也能夠接受,可是推薦的多樣性來講,就很難帶給用戶驚喜了。通常對於小型的推薦系統來講,基於項目的協同過濾確定是主流。可是若是是大型的推薦系統來講,則能夠考慮基於用戶的協同過濾,固然更加能夠考慮咱們的第三種類型,基於模型的協同過濾。

    基於模型(model based)的協同過濾是目前最主流的協同過濾類型了,咱們的一大堆機器學習算法也能夠在這裏找到用武之地。下面咱們就重點介紹基於模型的協同過濾。

3. 基於模型的協同過濾

    基於模型的協同過濾做爲目前最主流的協同過濾類型,其相關算法能夠寫一本書了,固然咱們這裏主要是對其思想作有一個歸類歸納。咱們的問題是這樣的m個物品,m個用戶的數據,只有部分用戶和部分數據之間是有評分數據的,其它部分評分是空白,此時咱們要用已有的部分稀疏數據來預測那些空白的物品和數據之間的評分關係,找到最高評分的物品推薦給用戶。

    對於這個問題,用機器學習的思想來建模解決,主流的方法能夠分爲:用關聯算法,聚類算法,分類算法,迴歸算法,矩陣分解,神經網絡,圖模型以及隱語義模型來解決。下面咱們分別加以介紹。

3.1 用關聯算法作協同過濾

    通常咱們能夠找出用戶購買的全部物品數據裏頻繁出現的項集活序列,來作頻繁集挖掘,找到知足支持度閾值的關聯物品的頻繁N項集或者序列。若是用戶購買了頻繁N項集或者序列裏的部分物品,那麼咱們能夠將頻繁項集或序列裏的其餘物品按必定的評分準則推薦給用戶,這個評分準則能夠包括支持度,置信度和提高度等。

    經常使用的關聯推薦算法有Apriori,FP Tree和PrefixSpan。若是你們不熟悉這些算法,能夠參考個人另外幾篇文章:

    Apriori算法原理總結

    FP Tree算法原理總結

    PrefixSpan算法原理總結 

3.2 用聚類算法作協同過濾

    用聚類算法作協同過濾就和前面的基於用戶或者項目的協同過濾有些相似了。咱們能夠按照用戶或者按照物品基於必定的距離度量來進行聚類。若是基於用戶聚類,則能夠將用戶按照必定距離度量方式分紅不一樣的目標人羣,將一樣目標人羣評分高的物品推薦給目標用戶。基於物品聚類的話,則是將用戶評分高物品的類似同類物品推薦給用戶。

    經常使用的聚類推薦算法有K-Means, BIRCH, DBSCAN和譜聚類,若是你們不熟悉這些算法,能夠參考個人另外幾篇文章:

    K-Means聚類算法原理

    BIRCH聚類算法原理

    DBSCAN密度聚類算法

    譜聚類(spectral clustering)原理總結

3.3 用分類算法作協同過濾

    若是咱們根據用戶評分的高低,將分數分紅幾段的話,則這個問題變成分類問題。好比最直接的,設置一份評分閾值,評分高於閾值的就是推薦,評分低於閾值就是不推薦,咱們將問題變成了一個二分類問題。雖然分類問題的算法多如牛毛,可是目前使用最普遍的是邏輯迴歸。爲啥是邏輯迴歸而不是看起來更加高大上的好比支持向量機呢?由於邏輯迴歸的解釋性比較強,每一個物品是否推薦咱們都有一個明確的機率放在這,同時能夠對數據的特徵作工程化,獲得調優的目的。目前邏輯迴歸作協同過濾在BAT等大廠已經很是成熟了。

    常見的分類推薦算法有邏輯迴歸和樸素貝葉斯,二者的特色是解釋性很強。若是你們不熟悉這些算法,能夠參考個人另外幾篇文章:

    邏輯迴歸原理小結

    樸素貝葉斯算法原理小結

3.4 用迴歸算法作協同過濾

    用迴歸算法作協同過濾比分類算法看起來更加的天然。咱們的評分能夠是一個連續的值而不是離散的值,經過迴歸模型咱們能夠獲得目標用戶對某商品的預測打分。

    經常使用的迴歸推薦算法有Ridge迴歸,迴歸樹和支持向量迴歸。若是你們不熟悉這些算法,能夠參考個人另外幾篇文章:

    線性迴歸原理小結

    決策樹算法原理(下)

    支持向量機原理(五)線性支持迴歸

3.5 用矩陣分解作協同過濾

    用矩陣分解作協同過濾是目前使用也很普遍的一種方法。因爲傳統的奇異值分解SVD要求矩陣不能有缺失數據,必須是稠密的,而咱們的用戶物品評分矩陣是一個很典型的稀疏矩陣,直接使用傳統的SVD到協同過濾是比較複雜的。

    目前主流的矩陣分解推薦算法主要是SVD的一些變種,好比FunkSVD,BiasSVD和SVD++。這些算法和傳統SVD的最大區別是再也不要求將矩陣分解爲$U\Sigma V^T$的形式,而變是兩個低秩矩陣$P^TQ$的乘積形式。對於矩陣分解的推薦算法,後續我會專門開篇來說。

3.6 用神經網絡作協同過濾

    用神經網絡乃至深度學習作協同過濾應該是之後的一個趨勢。目前比較主流的用兩層神經網絡來作推薦算法的是限制玻爾茲曼機(RBM)。在目前的Netflix算法比賽中, RBM算法的表現很牛。固然若是用深層的神經網絡來作協同過濾應該會更好,大廠商用深度學習的方法來作協同過濾應該是未來的一個趨勢。後續我會專門開篇來說講RBM。

3.7  用圖模型作協同過濾

    用圖模型作協同過濾,則將用戶之間的類似度放到了一個圖模型裏面去考慮,經常使用的算法是SimRank系列算法和馬爾科夫模型算法。對於SimRank系列算法,它的基本思想是被類似對象引用的兩個對象也具備類似性。算法思想有點相似於大名鼎鼎的PageRank。而馬爾科夫模型算法固然是基於馬爾科夫鏈了,它的基本思想是基於傳導性來找出普通距離度量算法難以找出的類似性。後續我會專門開篇來說講SimRank系列算法。 

3.8 用隱語義模型作協同過濾

    隱語義模型主要是基於NLP的,涉及到對用戶行爲的語義分析來作評分推薦,主要方法有隱性語義分析LSA和隱含狄利克雷分佈LDA,這些等講NLP的再專門講。

4. 協同過濾的一些新方向

    固然推薦算法的變革也在進行中,就算是最火爆的基於邏輯迴歸推薦算法也在面臨被取代。哪些算法可能取代邏輯迴歸之類的傳統協同過濾呢?下面是個人理解:

    a) 基於集成學習的方法和混合推薦:這個和混合推薦也靠在一塊兒了。因爲集成學習的成熟,在推薦算法上也有較好的表現。一個可能取代邏輯迴歸的算法是GBDT。目前GBDT在不少算法比賽都有好的表現,而有工業級的並行化實現類庫。

    b)基於矩陣分解的方法:矩陣分解,因爲方法簡單,一直受到青睞。目前開始漸漸流行的矩陣分解方法有分解機(Factorization Machine)和張量分解(Tensor Factorization)。

    c) 基於深度學習的方法:目前兩層的神經網絡RBM都已經有很是好的推薦算法效果,而隨着深度學習和多層神經網絡的興起,之後可能推薦算法就是深度學習的天下了?目前看最火爆的是基於CNN和RNN的推薦算法。

5. 協同過濾總結 

    協同過濾做爲一種經典的推薦算法種類,在工業界應用普遍,它的優勢不少,模型通用性強,不須要太多對應數據領域的專業知識,工程實現簡單,效果也不錯。這些都是它流行的緣由。

    固然,協同過濾也有些難以免的難題,好比使人頭疼的「冷啓動」問題,咱們沒有新用戶任何數據的時候,沒法較好的爲新用戶推薦物品。同時也沒有考慮情景的差別,好比根據用戶所在的場景和用戶當前的情緒。固然,也沒法獲得一些小衆的獨特喜愛,這塊是基於內容的推薦比較擅長的。   

    

    以上就是協同過濾推薦算法的一個總結,但願能夠幫你們對推薦算法有一個更深的認識,並預祝你們新年快樂!

(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com) 

相關文章
相關標籤/搜索