Embedding向量召回在蘑菇街的實踐
背景
對比傳統的i2i,simirank,swing等推薦相似召回技術,Embedding技術具有實現簡單,表達能力強等特點。在電商場景,計算商品和商品、用戶和商品之間的相似度是非常重要的課題。但是受限大部分數據是稀疏,傳統的i2i,simirank並不能很好的解決。按我們的經驗,在數據充足的頭部商品上,各大相似演算法的結果都差不多,但在中部和尾部商品,效果差別很大。並且,在關係鏈上很難建立大於3跳的關係(計算量太大了),商品之間間接相似的關係算的不好。
組裡的小夥伴一起嘗試了word2vec、node2vec以及基於點擊行為的監督式DNN模型。最後發現是監督式的方法效果最好,線下auc和線上ctr都有不錯的提升。其中原生的word2vec,偏向熱門商品和類目相似,不符合預期。node2vec對比基線有提升,但是node2vec依賴隨機遊走的策略,比較耗資源,且效果不如監督模型,本文重點描述下監督式模型的Embedding結果。
模型簡介
輸入數據: 預訓練商品向量item_vector(基於圖像的,比基於word2vec的效果好),用戶點擊商品pair對,標籤label(用戶點擊商品為正樣本,負樣本為隨機構造,正負樣本比例為1:3)
商品向量經過全連接層後使得維度與用戶向量維度相同
經過全連接後的商品向量與用戶向量矩陣相乘再在axis=1維度上求和得到correlation_score
correlation_score加上偏差項得到references
經過sigmoid_cross_entropy_with_logits(label,references)後得到loss
模型輸入
預訓練好商品向量
本次使用商品圖像向量作為預訓練好的商品向量輸入模型,商品圖像向量為512維,直接放入模型中容易撐爆內存,導致訓練過程中自動kill,使用sklean.decomposition.TruncatedSVD,首先對512維的圖像向量進行降維到256維,再將256維的商品圖像向量作為模型輸入
用戶N天點擊數據
用戶點擊商品pair對作為正樣本為label為1,隨機構造用戶未點擊商品pair對負樣本為label為0,正負樣本比例為1:3
評估商品向量
計算每個商品最相似的200個商品,查看商品相關性
還一些召回率、命中率、F score等指標,不方便放上來,初步小結:
(1) 本模型生成商品向量和圖像向量,top 50相似商品有32.2%重合item pair對,其item pair對的cosine相似度,pearson相關性為0.812
(2) 本模型生成商品向量和圖像向量,top 200相似商品有31.0%重合item pair對,其item pair對的cosine相似度,pearson相關性為0.685
(3) 由於本模型是將圖像商品向量作為輸入,生成向量和圖像商品向量相關性更高
tsne可視化
商品向量在葉子類目下tsne兩兩可視化,左邊為本模型生成商品向量在葉子類目可視化,右邊為node2vec模型生成商品向量在葉子類目可視化
店鋪上的評估:
小結:
(1) 模型生成商品向量,隨機抽樣50個葉子類目,兩兩葉子類目下商品向量進行低維可視化展示,商品向量在葉子類目上,有比較好的區分度
(2) 模型生成商品向量,隨機抽樣50個店鋪,兩兩店鋪下商品向量進行低維可視化展示,商品向量在店鋪上,有比較好的區分度
(3) 對比node2vec生成的商品向量,在葉子類目上的區分度更優
單個case評估user2item
以下為生成用戶向量的訓練數據(用戶前5天點擊商品)
總結
目前只是在召回層加入了Embedding向量,更多的成本在系統的改造上,商品量全量計算cosine的成本還是有點大。後面準備嘗試更多的Embedding的技術,在rank加入Embedding,嘗試更多實體的Embedding等。
推薦閱讀:
※4· 強力推薦|10月1日什麼電影最好看?這部片子一定很火的!
※女人挑對內衣,讓胸衣變胸器!
※如何選購vivo手機產品?
※想知道化妝師都是怎麼防脫妝的嗎?
※法師甄姬的出裝銘文推薦有哪些呢?