1. 程式人生 > >推薦演算法學習-推薦系統老司機的十條經驗

推薦演算法學習-推薦系統老司機的十條經驗

推薦系統老司機的十條經驗節選

原文地址:http://geek.csdn.net/news/detail/124262

作者:陳開江@刑無刀,金融科技公司天農科技CTO,曾任新浪微博資深推薦演算法工程師,考拉FM演算法主管,先後負責微博反垃圾、基礎資料探勘、智慧客服平臺、個性化推薦等產品的後端演算法研發,為考拉FM從零構建了個性化音訊推薦系統。 

文章對Xavier Amatriain在Recsys2016上的分享做出解讀

一、隱式反饋比顯式反饋要爽

所謂隱式反饋,就是使用者發出這些行為時並不是為了表達興趣/態度,只是在正常使用產品而已,反之,顯式反饋就是使用者在做這個操作時就是要表達自己的態度,如評分,投贊成/反對票。

Xavier Amatriain列舉了隱式反饋的以下好處:

  • 資料比顯式反饋更加稠密。誠然,評分資料總體來說是很稀疏的,之前netflix的百萬美元挑戰賽給出的資料稀疏度大概是1.2%,畢竟評分資料是要消耗更多注意力的資料。
  • 隱式反饋更代表使用者的真實想法,比如你不是很贊成川普的觀點,但是還是想經常看到他的內容(以便吐槽他),這是顯式反饋無法捕捉的。而人們在Quora上投出一些贊成票也許只是為了鼓勵一下作者,或者表達一些作者的同情,甚至只是因為政治正確而投,實際上對內容很難說真正感興趣。
  • 隱式反饋常常和模型的目標函式關聯更密切,也因此通常更容易在AB測試中和測試指標掛鉤。這個好理解,比如CTR預估當然關注的是點選這個隱式反饋。

二、深刻理解資料


三、為模型定義好學習任務

一個機器學習模型有三個因素構成:

  • 訓練資料(隱式反饋或者顯式反饋)
  • 目標函式(比如使用者閱讀一篇回答的概率)
  • 衡量指標(比如準確率或者召回率)

Quora的首頁是結合了多個使用者隱式反饋的排序模型,給每一種使用者行為建立一個預測模型,預測它發生的概率,結合每一種行為帶來的長期價值大小,然後加權,即期望價值。這個例子裡面的三元素也可定義清楚:

  • 訓練資料:使用者的顯式反饋和隱式反饋
  • 目標函式:一個story的展示價值,量化定義為使用者行為的期望價值
  • 衡量指標:任何排序模型指標都可以

四、推薦可解釋比精準更有意義

這裡其實就是說推薦要展示出理由給使用者,讓使用者知道每一項推薦的專案是怎麼得到的。

五、矩陣分解大法好

Xavier Amatriain很推崇Matrix Factorization,因為它既有監督學習,又有無監督學習

兩種學習方法就這樣結合在一個演算法裡:

  • 它可以用來降維,這部分通常是PCA這樣的無監督學習演算法承擔的,矩陣分解得到的隱因子就是降維後的特徵,可以直接作為其他學習演算法的輸入;
  • 它還可以做聚類,比如Non-negative Matrix Factorization就常常用來做聚類;
  • SVD就是一種迴歸,標準的監督學習。

矩陣分解還有一些變種:ALS(交替最小二乘),SVD++(結合特徵的SVD),FM(因子機),TF(張量分解)。

總之,在推薦系統裡,使勁壓榨矩陣分解的效果。

六、萬能的整合方法

Netflix的冠軍模型,那可是100多種演算法整合在一起的,真是應了那句話:比你效果好的模型還比你更努力。

實際上任何推薦系統也不可能是單一演算法在起作用,而是多種演算法整合在一起。整合方法理論上不會比你其中那個最好的演算法差。在推薦系統中,你至少可以整合基於內容推薦和協同過濾兩種。

本質上,整合演算法是把某個模型的輸出變成另一個模型的特徵。如果你很難決策到底用哪個演算法時,千萬不要糾結,所有的都用,然後整合之。

整合還有一個好處就是:某個推薦演算法可能更適合某個場景下,這樣被整合的演算法就可以各自handle各自擅長的場景,最後集大成。

具體整合方法可選的很多,如logistic regression,GBDT,Random Forest,ANN