推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。
推薦演算法概述
1)基於內容的推薦:這一類一般依賴於自然語言處理nlp的一些知識,通過挖掘文字的tf-idf特徵向量,來得到使用者的偏好,進而做推薦。這類推薦演算法可以找到使用者獨特的小眾喜好,而且還有較好的解釋性。這一類由於需要nlp的基礎,本文就不多講,在後面專門講nlp的時候再討論。
2)協調過濾推薦:本文後面要專門講的內容。協調過濾是推薦演算法中目前最主流的種類,花樣繁多,在工業界已經有了很多廣泛的應用。它的優點是不需要太多特定領域的知識,可以通過基於統計的機器學習演算法來得到較好的推薦效果。最大的優點是工程上容易實現,可以方便應用到產品中。目前絕大多數實際應用的推薦演算法都是協同過濾推薦演算法。
3)混合推薦:這個類似我們機器學習中的整合學習,博才眾長,通過多個推薦演算法的結合,得到乙個更好的推薦演算法,起到三個臭皮匠頂乙個諸葛亮的作用。比如通過建立多個推薦演算法的模型,最後用投票法決定最終的推薦結果。混合推薦理論上不會比單一任何一種推薦演算法差,但是使用混合推薦,演算法複雜度就提高了,在實際應用中有使用,但是並沒有單一的協調過濾推薦演算法,比如邏輯回歸之類的二分類推薦演算法廣泛。
協調過濾推薦概述
協同過濾的模型一般為m個物品,m個使用者的資料,只有部分使用者和部分資料之間是有評分資料的,其它部分評分是空白,此時我們要用已有的部分稀疏資料來**那些空白的物品和資料之間的評分關係,找到最高評分的物品推薦給使用者。
一般來說,協同過濾推薦分為三種型別。第一種是基於使用者(user-based)的協同過濾,第二種是基於專案(item-based)的協同過濾,第三種是基於模型(model based)的協同過濾。
基於模型(model based)的協同過濾是目前最主流的協同過濾型別了,我們的一大堆機器學習演算法也可以在這裡找到用武之地。下面我們就重點介紹基於模型的協同過濾。
基於模型的協同過濾
基於模型的協同過濾作為目前最主流的協同過濾型別,其相關演算法可以寫一本書了,當然我們這裡主要是對其思想做有乙個歸類概括。我們的問題是這樣的m個物品,m個使用者的資料,只有部分使用者和部分資料之間是有評分資料的,其它部分評分是空白,此時我們要用已有的部分稀疏資料來**那些空白的物品和資料之間的評分關係,找到最高評分的物品推薦給使用者。
對於這個問題,用機器學習的思想來建模解決,主流的方法可以分為:用關聯演算法,聚類演算法,分類演算法,回歸演算法,矩陣分解,神經網路,圖模型以及隱語義模型來解決。下面我們分別加以介紹。
3.1 用關聯演算法做協同過濾
一般我們可以找出使用者購買的所有物品資料裡頻繁出現的項集活序列,來做頻繁集挖掘,找到滿足支援度閾值的關聯物品的頻繁n項集或者序列。如果使用者購買了頻繁n項集或者序列裡的部分物品,那麼我們可以將頻繁項集或序列裡的其他物品按一定的評分準則推薦給使用者,這個評分準則可以包括支援度,置信度和提公升度等。
apriori演算法原理總結
fp tree演算法原理總結
prefixspan演算法原理總結
3.2 用聚類演算法做協同過濾
用聚類演算法做協同過濾就和前面的基於使用者或者專案的協同過濾有些類似了。我們可以按照使用者或者按照物品基於一定的距離度量來進行聚類。如果基於使用者聚類,則可以將使用者按照一定距離度量方式分成不同的目標人群,將同樣目標人群評分高的物品推薦給目標使用者。基於物品聚類的話,則是將使用者評分高物品的相似同類物品推薦給使用者。
k-means聚類演算法原理
birch聚類演算法原理
dbscan密度聚類演算法
譜聚類(spectral clustering)原理總結
3.3 用分類演算法做協同過濾
如果我們根據使用者評分的高低,將分數分成幾段的話,則這個問題變成分類問題。比如最直接的,設定乙份評分閾值,評分高於閾值的就是推薦,評分低於閾值就是不推薦,我們將問題變成了乙個二分類問題。雖然分類問題的演算法多如牛毛,但是目前使用最廣泛的是邏輯回歸。為啥是邏輯回歸而不是看起來更加高大上的比如支援向量機呢?因為邏輯回歸的解釋性比較強,每個物品是否推薦我們都有乙個明確的概率放在這,同時可以對資料的特徵做工程化,得到調優的目的。目前邏輯回歸做協同過濾在bat等大廠已經非常成熟了。
邏輯回歸原理小結
樸素貝葉斯演算法原理小結
3.4 用回歸演算法做協同過濾
用回歸演算法做協同過濾比分類演算法看起來更加的自然。我們的評分可以是乙個連續的值而不是離散的值,通過回歸模型我們可以得到目標使用者對某商品的**打分。
線性回歸原理小結
決策樹演算法原理(下)
支援向量機原理(五)線性支援回歸
3.5 用矩陣分解做協同過濾
用矩陣分解做協同過濾是目前使用也很廣泛的一種方法。由於傳統的奇異值分解svd要求矩陣不能有缺失資料,必須是稠密的,而我們的使用者物品評分矩陣是乙個很典型的稀疏矩陣,直接使用傳統的svd到協同過濾是比較複雜的。
目前主流的矩陣分解推薦演算法主要是svd的一些變種,比如funksvd,biassvd和svd++。這些演算法和傳統svd的最大區別是不再要求將矩陣分解為usigma v^t
uσvt
的形式,而變是兩個低秩矩陣p^tq
pt q的乘積形式。對於矩陣分解的推薦演算法,後續我會專門開篇來講。
3.6 用神經網路做協同過濾
用神經網路乃至深度學習做協同過濾應該是以後的乙個趨勢。目前比較主流的用兩層神經網路來做推薦演算法的是限制玻爾茲曼機(rbm)。在目前的netflix演算法比賽中, rbm演算法的表現很牛。當然如果用深層的神經網路來做協同過濾應該會更好,大廠商用深度學習的方法來做協同過濾應該是將來的乙個趨勢。後續我會專門開篇來講講rbm。
3.7 用圖模型做協同過濾
用圖模型做協同過濾,則將使用者之間的相似度放到了乙個圖模型裡面去考慮,常用的演算法是simrank系列演算法和馬爾科夫模型演算法。對於simrank系列演算法,它的基本思想是被相似物件引用的兩個物件也具有相似性。演算法思想有點類似於大名鼎鼎的pagerank。而馬爾科夫模型演算法當然是基於馬爾科夫鏈了,它的基本思想是基於傳導性來找出普通距離度量演算法難以找出的相似性。後續我會專門開篇來講講simrank系列演算法。
3.8 用隱語義模型做協同過濾
隱語義模型主要是基於nlp的,涉及到對使用者行為的語義分析來做評分推薦,主要方法有隱性語義分析lsa和隱含狄利克雷分布lda,這些等講nlp的再專門講。
協同過濾的一些新方向
a) 基於整合學習的方法和混合推薦:這個和混合推薦也靠在一起了。由於整合學習的成熟,在推薦演算法上也有較好的表現。乙個可能取代邏輯回歸的演算法是gbdt。目前gbdt在很多演算法比賽都有好的表現,而有工業級的並行化實現類庫。
b)基於矩陣分解的方法:矩陣分解,由於方法簡單,一直受到青睞。目前開始漸漸流行的矩陣分解方法有分解機(factorization machine)和張量分解(tensor factorization)。
c) 基於深度學習的方法:目前兩層的神經網路rbm都已經有非常好的推薦演算法效果,而隨著深度學習和多層神經網路的興起,以後可能推薦演算法就是深度學習的天下了?目前看最火爆的是基於cnn和rnn的推薦演算法。
協同過濾總結
協同過濾作為一種經典的推薦演算法種類,在工業界應用廣泛,它的優點很多,模型通用性強,不需要太多對應資料領域的專業知識,工程實現簡單,效果也不錯。這些都是它流行的原因。
當然,協同過濾也有些難以避免的難題,比如令人頭疼的「冷啟動」問題,我們沒有新使用者任何資料的時候,無法較好的為新使用者推薦物品。同時也沒有考慮情景的差異,比如根據使用者所在的場景和使用者當前的情緒。當然,也無法得到一些小眾的獨特喜好,這塊是基於內容的推薦比較擅長的。
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...
協同過濾推薦演算法
協同過濾推薦演算法 分為基於使用者的協同過濾推薦usercf和基於物品的協同過濾推薦itemcf。介紹見 協同過濾的實現步驟 1 指導思想 這種過濾演算法的有效性基礎在於 1 使用者偏好具有相似性,即使用者可分類。這種分類的特徵越明顯,推薦準確率越高 2 物品之間具有相似性,即偏好某物品的人,都很可...
協同過濾推薦演算法
協同過濾是通過將使用者和其他使用者和的資料進行對比來實現推薦。我們不利用專家所給出的重要屬性來描述物品從而計算他們之間的相似度,而是利用使用者對他們的意見來計算相似度,這就是協同過濾中所使用的方法。它不關心物品的描述屬性,而是嚴格的按照許多使用者的觀點來計算相似度。相似度的度量一種是歐式距離,一種是...