1. 程式人生 > >推薦算法學習筆記

推薦算法學習筆記

sent ges 智慧 mms 容易 轉換 ext 集合 view

推薦算法舉個簡單的例子,比如有個用戶進來看了一堆內容,我們把他看的所有的歷史行為,嵌入到推薦引擎當中去。這個推薦引擎就會生成個性化的頻道,下次這個用戶再登錄,或者都不用下一次,過幾分鐘之後,他看到的內容就會根據他最近發生的歷史行為發生變化,這就是推薦系統的基本邏輯。這種方法叫基於用戶行為的推薦,當然是有一定局限性的。比如你只有一個用戶行為的時候,你就不知道他會不會看一個從來沒人看過的內容,這其實就是長尾問題。當你可以積累越來越多的用戶,用戶的歷史行為會有助於你對長尾內容的理解。

推薦系統本質是在用戶需求不明確的情況下,解決信息過載的問題,聯系用戶和信息,一方面幫助用戶發現對自己有價值的信息,另一方面讓信息能夠展現在對它感興趣的用戶面前,從而實現信息消費者和信息生產者的雙贏(這裏的信息的含義可以非常廣泛,比如圖書、電影和商品等,下文中統稱為item)。

推薦系統實際上在為三類不同的利益相關方在服務:

第一個:用戶。用戶是為了能夠更方便找到他想看的東西。

第二個:平臺本身。平臺希望連接服務提供商、內容提供商和用戶,他希望賺錢。

第三個:內容提供商,因為內容提供商如果能有更多露出,他在這個渠道上,就會獲得點擊量或者/和品牌效應,那麽他就可以通過一些方法變現,無論是廣告的方法還是在一些離線渠道收買的方法。

所以一個推薦算法要同時服務三個利益各不相同的相關方,這本身導致了一個矛盾性。

解決方法之一是協同濾波,比如用一個 interactive 的方法train,兩邊互相學,然後收鏈,這是一個比較標準的方法:

Top picks for you 這是一個最標準的 record train,就是推薦 train。

第二個是 you may also like,你可能也會喜歡,這也是一個推薦的 train。

第三個就是一個子類別。比如說電影一般大的類別就是言情、動作片,其實這個類別還分了一些小類別,比如說這個叫做法庭判案,實際上是動作片下面的一個主類別,這個也可以用推薦算法來產生。

推薦引擎是用深度學習的方法,展示的有效性很大程度上是取決於你有沒有打動用戶,你要給她一個很好的理由,所以深度學習就是一個工具,可以用來做很多的事,掌握好這個工具,靈活性更大。

比如一些淺層的分布式表示模型。目前在文本領域,淺層分布式表示模型得到了廣泛的使用,例如word2vec、GloVec等 。與傳統詞袋模型對比,詞嵌入模型可以將詞或者其他信息單元(例如短語、句子和文檔等)映射到一個低維的隱含空間。在這個隱含空間中,每個信息單元的表示都是稠密的特征向量。詞嵌入表示模型的基本思想實際還是上來自於傳統的“Distributional semantics”,概括起來講就是當前詞的語義與其相鄰的背景詞緊密相關。因此,詞嵌入的建模方法就是利用嵌入式表示來構建當前詞和背景詞之間的語義關聯。相比多層神經網絡,詞嵌入模型的訓練過程非常高效,而且實踐效果很好、可解釋性也不錯,因此得到了廣泛的應用。

-----------------------------------------------------------------------------------------------

基於背景或者特征的推薦 (Context-aware recommendation)

推薦系統的不斷發展進一步豐富了可供推薦算法使用的信息。如對於新聞推薦,物品的屬性則有可能是新聞的文本內容、關鍵詞、時間等,同時包括用戶的點擊、收藏和瀏覽行為等等。在電商網站上,還可能包含很多信息評論文本(Review Text)、用戶查看的歷史記錄、用戶購買的記錄等。還可能獲得用戶的反饋信息,總體上可以分為兩類:一是顯式的用戶反饋(Explicit Feedback),這是用戶對商品或信息給出的顯式反饋信息,評分、評論屬於該類;另一類是隱式的用戶反饋(Implicit Feedback),這類一般是用戶在使用網站的過程中產生的數據,它們也反映了用戶對物品的喜好,比如用戶查看了某物品的信息,用戶在某一頁面上的停留時間,等等。對於基於背景敏感的推薦,可以使用SVD++, SVDFeature , libFM 等基於特征的推薦算法。

復雜推薦任務

在真實的推薦中,往往要面臨很多復雜的推薦任務。例如,基於session的推薦任務。在這個任務中,用戶在一個時間片段內連續做出相應的操作和選擇,需要連續考慮用戶整體的興趣偏好和在一個特定session內的行為。這種任務的解決方法往往和序列模型相關。另一種復雜任務叫做基於頁面的推薦。上述所提到的推薦任務的返回結果都是一個單一列表,而實際上往往需要進行基於用戶UI方面的結果展示。例如,在一個電商平臺,如何將推薦產品合理地展示在頁面的各個部分,可能的策略如按照類別分類展示、重點區域突出個性化推薦結果。這種任務目前在研究中還很少被關註,主要原因是很難得到相關的科研數據。

達觀相關推薦的常用算法

1 Content-based相關推薦

基於內容的推薦一般依賴於一套好的標簽系統,通過計算item之間tag集合的相似性來衡量item之間的相似性,一套好的標簽系統需要各方面的打磨,一方面需要好的編輯,一方面也依賴於產品的設計,引導用戶在使用產品的過程中,對item提供優質的tag。

2 基於協同過濾的相關推薦

協同過濾主要分為基於領域以及基於隱語義模型,上面也有將到。

基於領域的算法中,ItemCF是目前業界應用最多的算法,其主要思想為“喜歡item A的用戶大都喜歡用戶 item B”,通過挖掘用戶歷史的操作日誌,利用群體智慧,生成item的候選推薦列表。主要統計2個item的共現頻率,加以時間的考量,以及熱門用戶以及熱門item的過濾以及降權。

LFM(latent factor model)隱語義模型是最近幾年推薦系統領域最為熱門的研究話題,該算法最早在文本挖掘領域被提出,用於找到文本隱含的語義,在推薦領域中,其核心思想是通過隱含特征聯系用戶和物品的興趣。主要的算法有pLSA、LDA、matrix factorization(SVD,SVD++)等,這些技術和方法在本質上是相通的,以LFM為例,通過如下公式計算用戶u對物品i的興趣:

技術分享

公式中pu,k和qi,k是模型的參數,其中pu,k度量了用戶u的興趣和第k個隱類的關系,而qi,k度量了第k個隱類和物品i之間的關系。而其中的qi,k可視為將item投射到隱類組成的空間中去,item的相似度也由此轉換為在隱空間中的距離。

item2vec:NEURAL ITEM EMBEDDING

1 word2vec

2013年中,Google發布的word2vec工具引起了大家的熱捧,很多互聯網公司跟進,產出了不少成果。16年Oren Barkan以及Noam Koenigstein借鑒word2vec的思想,提出item2vec,通過淺層的神經網絡結合SGNS(skip-gram with negative sampling)訓練之後,將item映射到固定維度的向量空間中,通過向量的運算來衡量item之間的相似性。

2 item2vec

由於wordvec在NLP領域的巨大成功,Oren Barkan and Noam Koenigstein受此啟發,利用item-based CF學習item在低維latent space的embedding representation,優化item的相關推薦。詞的上下文即為鄰近詞的序列,很容易想到,詞的序列其實等價於一系列連續操作的item序列,因此,訓練語料只需將句子改為連續操作的item序列即可,item間的共現為正樣本,並按照item的頻率分布進行負樣本采樣。

參考資料

https://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html

推薦算法學習筆記