Item2Vector原理、在推薦系統中的應用、代碼註解

1.背景:

最早看到Item2vec是微軟研究院的這篇文章,發表於2016年ICML。本文主要是對這篇論文做一些介紹,Item2vec主要思想是借鑑了Word2Vec,並且採用SGNS(Skip-gram + Negative Sampling,思想是用中心詞預測周圍的詞)的方法來生成物品向量,最後只需要計算當前瀏覽的物品與其它物品的向量相似度,從而找到相似物品。一般像電商網站的“看了也看”、“買了也買”、“相似物品”模塊比較適合應用Item2Vec算法。

主要做法是把item視爲word,用戶的行爲序列視爲一個集合,item間的共現爲正樣本,並按照item的頻率分佈進行負樣本採樣,缺點是相似度的計算還只是利用到了item共現信息,1).忽略了user行爲序列信息; 2).沒有建模用戶對不同item的喜歡程度高低。

Item2Vec這個名詞的由來:在隱空間中產生的item embeding向量用在基於item的協同過濾,這種方法稱之爲item2vec。(原文:we name Item2Vec for item-based CF that produces embedding for items in a latent space)

2.原理

SGNS:

優化目標:中心詞存在的情況下週圍詞存在的概率最大,從而得到所有詞的向量:

negative sampling--- 提升計算性能

 在詞庫數量10萬-100萬的量級下,計算p(wj |wi)的代價會非常大,因此採用負採樣來減少計算。對每個正樣本,根據3/4指數分佈採樣N個負樣本,這個採樣比例是在實驗中效果顯著的。

這個公式的意義:u是target,v是context,最大化和u有關聯的v,最小化和u沒關聯的v.sigmod函數。

對於常見詞和不常見詞的不平衡性問題,這裏做了一下下采樣,給出一個輸入序列,以一定概率丟棄這個詞w,頻率越高,丟棄的概率越大。

Item2Vec – SGNS for item-based CF

實驗結果好於SVD,item2vec對出現次數少的item也有較好的表示,得益於負採樣和丟詞優化。

3.代碼註解:

sparkML中,

 

4.論文精讀:

 

 

 

參考:

1.論文:https://arxiv.org/vc/arxiv/papers/1603/1603.04259v2.pdf

2.代碼:https://github.com/bwange/Item2vec_Tutorial_with_Recommender_System_Application/blob/master/Making_Your_Own_Recommender_System_with_Item2Vec.ipynb

3.介紹word2vector和item2vector:https://blog.csdn.net/fuzi2012/article/details/91345164

4.個性化召回的應用:https://www.cnblogs.com/hellojamest/p/11766401.html

5.原理概要:https://zhuanlan.zhihu.com/p/24339183?refer=deeplearning-surfing

6.python實現 地址

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