word2vec算法一次失敗的應用

在電商推薦系統中,有一種場景是根據一個商品(主商品)推薦相適度高的商品(推薦商品)。常用的方法有兩種,一是利用協同過濾模型,二是利用商品的屬性相似。

無論哪種方法,都是將商品轉化爲向量,將商品的相似度轉化爲向量的距離。屬性相似直接採用了one-hot編碼,而協同過濾利用了矩陣分解。

一天,某個同事突發奇想,如果把用戶的瀏覽記錄當成一段文字,即把商品看成詞語,那就可以語言模型的方法來得到商品的詞向量。

而word2vec算法可以很方便訓練詞向量,於是就把word2vec應用在開頭說的那個場景中。

當時我們都覺得這個想法很好。而且線下試驗時,挑了幾個主商品,用這種方式得到的推薦商品和主商品也是同一類目的。

但經過AB測試,發現效果很差。後來分析發現,對於本身表現不好的主商品,推薦商品的轉化表現也不行。這就必然會影響用戶的轉化,導致這個模塊沒能很好的承接住用戶。

事實上,這並不是說明word2vec算法在計算商品相似度方面效果不好,而是word2vec算法的確能很好的找到相似商品,但這種相似性並不是我們推薦系統中需要的。

詞向量與語言模型對應,訓練了某個語言模型,也就能得到相應的詞向量,反之易可。而語言模型其實是刻畫了句子的合理性。

根據詞向量相似得到的推薦商品,和主商品在整個語言庫(用戶瀏覽行爲)中是處在同一地位的。於是長尾商品必然和長尾商品相似,熱銷商品和熱銷商品更爲相似。

由於熱銷商品出現的概率非常大,可以看做語言中的常用詞,比如自己、中國、社會、認爲、時間。而長尾詞對應收銀臺、哥德巴赫猜想、吾輩等詞。

常用詞和長尾詞的相似度本身就會很低,所以對於長尾商品,word2vec算法得到的推薦商品就不會出現熱銷商品。

基於同樣的理由,在計算類目相似性時也不能使用這種方法。

至於推薦商品和主商品大概率下能保持在同一類目,是由於我們app的特點,導致用戶在某一小段連續的瀏覽行爲中,曝光的商品主要來自同一類目,或者說同一類目的商品連續出現的可能性高。

所以兩個同一類目的商品的地位更爲一致,這就能保證相似商品和主商品類目大概率下是一樣的。

word2vec的這次應用失敗,是因爲我們沒能理解我們真正的目的。回到這個欄位的本質,其實我們實際是要預測用戶點了主商品A之後,點推薦商品B的概率:P(AB)。

即選擇使AB同時出現的概率最大的商品B做爲推薦商品,但詞向量相似性得到的推薦商品C滿足的是與A最相似,顯然有P(AB) >= P(AC)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章