推薦算法
lfm -latent factor model
隱語義模型
簡單易懂 by hch
它是個啥?
點擊矩陣:
|
item 1 |
item 2 |
item 3 |
user 1 |
1 |
0 |
0 |
user 2 |
0 |
1 |
0 |
user 3 |
1 |
1 |
0 |
user i 表示第i號用戶,item j表示第j號產品
矩陣表示,用戶對產品是否有點擊,若點擊,則爲1,未點擊,則爲0
我們從這個矩陣分解出每個 item 的向量和每個 user 的向量:
user1=[0.325,0.456....0.768]item1=[0.215,0.569...0.568]user1∗item1=常數這個常數表明user1對item1的喜好程度
算法的應用:
知道了簡單原理後,我們便可以理解一下應用:
計算用戶的toplike:可計算特定用戶對每一個item的喜愛程度
計算item的topsim:計算特定item與其他item的相似程度,
計算item的topic:聚類方法,把不同的item聚成不同的類
我們如何從矩陣中分解向量?
採用“監督學習”的思想,初始化時對向量設置隨機值
列出損失函數,然後梯度下降,得到各個item及user的向量。
分解的具體流程
設置隱特徵數量F個,隨機初始化所有item及user 的向量
計算loss函數:u表示user,i表示item,D表示樣本集
p(u,i)表示實際情況下u對i是否有點擊
P_lfm(u,i)表示用u和i向量計算得到的預測值
p_u表示u的向量
q_i表示i的向量
p_uf表示u的向量第f維(是一個我們想求的數,也就是在下面的式子中是一個自變量)
loss=(u,i)∈D∑{(P(u,i)−Plfm(u,i))2+λ∣pu∣2+λ∣qi∣2}
Plfm(u,i)=puT∗qi=f=1∑Fpuf∗qif
δpufδloss=(u,i)∈D∑δPlfm(u,i)δloss∗δpufδPlfm(u,i)+2α∣puf∣
=−2∗(P(u,i)−puf∗qif)∗qif+2α∣puf∣
puf=puf+β∗δpufδloss
δqifδloss=(u,i)∈D∑δPlfm(u,i)δloss∗δqifδPlfm(u,i)+2α∣puf∣
=−2∗(P(u,i)−puf∗qif)∗puf+2α∣qif∣
qif=qif+β∗δqifδloss
構建模型需要注意的自定義參數
隱特徵個數(通常設置爲10-32個)
學習速率β
正則參數α(0.01-0.05)
評價該算法
理論基礎:
監督學習思想,理論基礎較爲完備
離線計算空間複雜度:
O(物品數目*特徵數+商品數目*特徵數)
計算時間複雜度:
M個用戶,N個商品,S次迭代,F個隱特徵
離線計算時:O(F*(N+M))
訓練模型時:O(S*M*N)
在線推薦:
用戶有新行爲時,無法即時召回重新訓練