1. 程式人生 > >達觀資料推薦演算法實現:協同過濾之item embedding

達觀資料推薦演算法實現:協同過濾之item embedding

推薦系統本質是在使用者需求不明確的情況下,解決資訊過載的問題,聯絡使用者和資訊,一方面幫助使用者發現對自己有價值的資訊,另一方面讓資訊能夠展現在對它感興趣的使用者面前,從而實現資訊消費者和資訊生產者的雙贏(這裡的資訊的含義可以非常廣泛,比如諮詢、電影和商品等,下文中統稱為item)。達觀資料相關推薦是達觀推薦系統中的重要組成部分,其價值在於,在沒有使用者畫像資訊的情況下,也能給使用者以好的推薦體驗,比如資訊類,通過達觀相關推薦演算法找到item相關的其他item,可以提供對某一類或者針對某一事件多角度多側面的深度閱讀。本文主要先簡單介紹相關推薦的一些常用演算法,然後介紹一下基於item embedding的協同過濾。

  1. 達觀相關推薦的常用演算法
    1.1 Content-based相關推薦
    基於內容的推薦一般依賴於一套好的標籤系統,通過計算item之間tag集合的相似性來衡量item之間的相似性,一套好的標籤系統需要各方面的打磨,一方面需要好的編輯,一方面也依賴於產品的設計,引導使用者在使用產品的過程中,對item提供優質的tag。
    1.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的相似度也由此轉換為在隱空間中的距離。

  2. item2vec:NEURAL ITEM EMBEDDING
    2.1 word2vec
    2013年中,Google釋出的word2vec工具引起了大家的熱捧,很多網際網路公司跟進,產出了不少成果。16年Oren Barkan以及Noam Koenigstein借鑑word2vec的思想,提出item2vec,通過淺層的神經網路結合SGNS(skip-gram with negative sampling)訓練之後,將item對映到固定維度的向量空間中,通過向量的運算來衡量item之間的相似性。下面對item2vec的做簡要的分享:
    由於item2vec基本上是參照了google的word2vec方法,應用到推薦場景中的item2item相似度計算上,所以首先簡單介紹word2vec的基本原理。
    Word2vec主要用於挖掘詞的向量表示,向量中的數值能夠建模一個詞在句子中,和上下文資訊之間的關係,主要包括2個模型:CBOW(continuous bag-of-word)和SG(skip-gram),從一個簡單版本的CBOW模型介紹,上下文只考慮一個詞的情形,如圖1所示,
    圖片描述


    圖1

假設只有一個隱層的神經網路,輸入層以及輸出層均為詞的one-hot編碼表示,詞表大小假設為V,隱層神經元個數為N,相鄰層的神經元為全連線,層間的權重用V*N的矩陣W表示,隱層到輸出層的activation function採用softmax函式,
圖片描述
其中wI,wj為詞表中不同的詞,yj為輸出層第j個神經元的輸出,uj為輸入層經過權重矩陣W到隱層的score,uj’為隱層經過權重矩陣W’到輸出層的score。訓練這個神經網路,用反向傳播演算法,先計算網路輸出和真實值的差,然後用梯度下降反向更新層間的權重矩陣,得到更新公式:
圖片描述
圖片描述
圖片描述
其中,η為更新的步長,ej為模型預測以及真實值之間的誤差,h為隱層向量。
圖2為上下文為多個詞時的情況,中間的隱層h計算由
圖片描述
改為
圖片描述
即輸入向量為多個上下文向量相加求平均,後續的引數學習與上文的單個詞的上下文情況類似。遍歷整個訓練集context-target詞對,經過多次迭代更新模型引數,對模型中的向量的影響將會累積,最終學到對詞的向量表示。
Skip-gram跟CBOW的輸入層和輸出層正好對調,區別就是CBOW是上下文,經過模型預測當前詞,而skip-gram是通過當前詞來預測上下文。
圖片描述
圖2

目前為止,對詞表中的每個詞,有兩種向量表示:input vector和output vector,對應輸入層到隱層權重矩陣W的行向量和隱層到輸出層權重矩陣W’的列向量,從等式4、5可以看出,對每一個訓練樣本,都需要遍歷詞表中的每一個詞,因此,學習output vector的計算量是非常大的,如果訓練集或者詞表的規模大的話,在實際應用中訓練不具可操作性。為解決這個問題,直覺的做法是限制每個訓練樣本需要更新的output vectors,google提出了兩個方法:hierarchical softmax和negative sampling,加快了模型訓練的速度,再次不做展開討論。

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

圖片描述
圖3

Oren Barkan and Noam Koenigstein以SVD作為baseline,SVD的隱類以及item2vec的維度都取40,用Microsoft Xbox Music service收集的 user-artists資料集,對結果進行聚類,如圖3所示,圖a是item2vec的聚合效果,圖b是SVD分解的聚合效果,看起來item2vec的聚合效果要更好些。
作者嘗試將item2vec應用到達觀資料的相關推薦當中,由於資訊、短視訊類的場景一般的連續item操作會比較多,因此天然的非常適合用item2vec來訓練item的向量表示,從實際的訓練結果和線上評估來看,item2vec對CTR提升是有明顯幫助的。

本文作者:
範雄雄,達觀資料個性化推薦引擎工程師,工作包括推薦系統的架構設計和開發、推薦效果優化等,所在團隊開發的個性化推薦系統曾創造上線後效果提升300%的記錄。復旦大學電腦科學與技術專業碩士,曾在愛奇藝開發多款大資料產品,對個性化推薦、資料探勘和分析、使用者行為建模、大資料處理有較深入的理解和實踐經驗。