協同過濾是機器學習的其中一種方法么?
最近在不斷學習個性化推薦的知識,看了一些書和一些論文,但現在發現自己有個困惑的地方。貝葉斯,神經網路,決策樹,這些都是屬於機器學習,準確說是監督學習的方法。我的困惑在於:協同過濾(包括基於用戶過濾和基於物品過濾)是屬於機器學習的一種么?
我不認為Collaborative Filtering是機器學習的一種。
協同過濾(Collaborative Filtering)準確來說是一種方法論,它假設可以通過購買或使用歷史找出近似的用戶或商品。
機器學習指的是一種可以自動學習的演算法,這種演算法一般基於統計學,概率。它研究的是怎麼根據現有數據找到最優解。
因為很多時候會把基於Collaborative Filtering的假設的結果當成最優解,把數據丟給機器學習演算法算,才會有這種誤解。比如說用戶推薦不是機器學習,但常用的解SVD問題的Latent semantic analysis能算是機器學習。
也有人認為Collaborative Filtering的含義包括一系列解Collaborative Filtering的演算法,這就別論了首先,協同過濾是一類問題
就是只用群體用戶操作記錄的數據來解決推薦這個問題
與之相對的是基於內容的推薦比如傳統的tag,文本相似度怎麼只用用戶數據來做這個問題,那又是另一碼事
其中早期的嘗試,被命名為User-CF和Item-CF,那不過是方法這些方法,我覺得不能算機器學習,因為它沒學什麼
相似度是手工給的,算出個分說啥是啥,也沒什麼太大的道理事實上現在層出不窮的新演算法,尤其是基於機器學習中監督學習的演算法,比起純手工設計相似度,依靠直覺來計算的早期嘗試,已經在準確度上取得了不小的進步。但是你去搜近年的論文,很多標題和tag,還是帶有collaborative filtering這個詞。我認為是。根據Tom M. Mitchell的定義,A computer program is said to learn from experience E with
respect to some task T and some performance measure P if its
performance on T, as measured by P, improves with experience E.
我覺得協同過濾屬於kNN的一種應用, 和你上面舉的例子不能算並列.
在Coursera吳恩達老師機器學習公開課裡面,有一節課講協同過濾解決電影評分預測的問題。課程中採用了協同過濾的思想:模型訓練的時候,通過已有的部分評分數據來學習電影的特徵,對電影進行評分,再通過新的評分優化Hypothesis,最終獲得最優結果。上述學習過程使用的是線性回歸的機器學習演算法。
吳老師的原話如下:
The term of collaborative filtering refers to the obervation that when you run the algorithm with large set of users, what all of these users are effectively doing are sort of collaboratively - or collaborating to get better movie ratings for everyone because with some users rating on some set of the movies, every user is helping the algorithm a little bit to learn better features and by rating a few moves myself and I will help the system learn better features and the features can be used by the system to make better movie rate prediction for everyone else. And so this is the sense of collaboration where every user is helping the system learn better feature for the common good. And this is collaborative filtering.
覺得更多的算是一種思想
這篇文章應該能幫到你:DeepRecommender:基於自編碼器的協同過濾(Collaborative Filtering),英偉達論文選讀及其pytorch實現
推薦閱讀:
※網易新聞的推薦邏輯到底是什麼?
※如果阿里雲跟中石化合作,雲計算、大數據在石油行業可以幹什麼?
※深度學習的研究領域是否有被過度誇大?
※神經網路有哪些有意思,有趣的的應用案例?
※如何理解spark中RDD和DataFrame的結構?