【推荐系统(二)】协同过滤之隐语义模型(LFM)
文章目錄
- 一、引例
- 二、LFM
- 主要思想
- 訓練樣本構(gòu)造
- 損失函數(shù)定義
- 參數(shù)學習
- 調(diào)參相關
- 三、小結(jié)
- 優(yōu)點
- 缺點
基于用戶行為分析的推薦算法一般稱為協(xié)同過濾算法。所謂協(xié)同過濾,就是指眾多的用戶可以齊心協(xié)力,通過不斷地和網(wǎng)站互動,使自己的推薦列表能夠不斷過濾掉自己不感興趣的物品,從而越來越滿足自己的需求。常見實現(xiàn)方法的包括:
本文主要講解隱語義模型(LFM),它的核心思想是通過發(fā)掘隱含特征(latent factor) 來完成推薦任務。
一、引例
在講解LFM之前,先看個例子:
喜歡看視頻的用戶都有自己的喜好標簽,這些標簽的粒度可大可小,例如戰(zhàn)爭和李云龍就是粒度不同的標簽。現(xiàn)在假設一個理想的情況:
那么就可以得到:
1,用戶潛在因子矩陣,例如:
| 用戶A | 0.7 | 0.3 | 0.4 | 0.8 | 0.8 |
| 用戶B | 0.8 | 0.4 | 0.6 | 0.7 | 0.1 |
| 用戶C | 0.5 | 0.6 | 0.7 | 0.3 | 0.3 |
矩陣中的數(shù)值表示不同用戶對于不同標簽的偏好程度,1.代表絕對喜歡,0.代表不喜歡。
2,視頻潛在矩陣
| 視頻A | 0.8 | 0 | 0.4 | 0.8 | 1 |
| 視頻B | 0 | 0.8 | 0 | 0.7 | 0 |
| 視頻C | 0.5 | 0 | 0.7 | 0.6 | 0 |
矩陣中的數(shù)值表示每種視頻包含各種標簽的成分。
利用上面的兩個矩陣,就可以推算用戶A對視頻A的喜歡程度,即:
用戶A對軍事的偏好 * 視頻1含有軍事成分 + ……(依次類推相乘相加),得到:0.7 * 0.8+0.3 * 0+0.4 * 0.4+0.8 * 0.8+0.8 * 1=2.16
同理,可以得到所有用戶對所有視頻的喜愛程度:
| 用戶A | 2.16 | 0.8 | 1.11 |
| 用戶B | 1.13 | 0.81 | 1.24 |
| 用戶C | 1.16 | 0.69 | 1.02 |
因此,我們推薦用戶A的視頻是A,對用戶B推薦的視頻是C,對用戶C推薦的視頻是A。
這個推薦過程其實很好理解,但是有下面的問題:
1,需要計算用戶對不同標簽的喜愛程度。
2,需要給每個視頻打不同粒度的標簽。
3,需要計算不同標簽在視頻中的占比。
后面的2個問題難免需要一些人工標記,費時費力,且受主觀因素影響大。為此, LFM 提出了一個相對簡單的解決方案。
二、LFM
主要思想
LFM的思想與上面的例類似,通過下面的公式計算用戶 u 對物品 i 的感興趣程度:
Preference(u,i)=rui=puTqi=∑k=1Fpu,kqi,kPreference(u, i) = r_{ui} = p_u^T q_i = \sum_{k=1}^F p_{u,k}q_{i,k} Preference(u,i)=rui?=puT?qi?=k=1∑F?pu,k?qi,k?
式子中,參數(shù) pu,kp_{u,k}pu,k? 表示用戶 u 的興趣和第 k 個隱類的關系(即0~1內(nèi)的數(shù)值), qi,kq_{i, k}qi,k? 表示物品 i 和第 k 個隱類的關系(即0~1內(nèi)的數(shù)值),而參數(shù) F 則是隱類的個數(shù)。這兩個參數(shù)需要通過有監(jiān)督的機器學習方法得到。
訓練樣本構(gòu)造
既然是有監(jiān)督的機器學習,那就需要構(gòu)造數(shù)據(jù)集。對于用戶喜歡的物品當作是正樣本,而負樣本的生成應該遵循下面的規(guī)則:
- 對每個用戶,要保證正負樣本的平衡(數(shù)目相似)。
- 對每個用戶采樣負樣本時,要選取那些很熱門,而用戶卻沒有行為的物品。
一般認為,很熱門而用戶卻沒有行為更加代表用戶對這個物品不感興趣。因為對于冷門的物品,用戶可能是壓根沒在網(wǎng)站中發(fā)現(xiàn)這個物品,所以談不上是否感興趣。
于是經(jīng)過采樣,就可以得到一個用戶-物品集 K = {(u, i)} ,其中(u, i)是樣本,如果是正樣本則對應的 label 用 rui=1r_{ui} = 1rui?=1 表示,否則 rui=0r_{ui} = 0rui?=0。
損失函數(shù)定義
接下來就要定義損失函數(shù)了:
C=∑u,i∈K(rui?r^ui)2=∑u,i∈K(rui?puTqi)2+λ∥pu∥2+λ∥qi∥2C = \sum_{u,i\in K} (r_{ui}-\hat{r}_{ui})^2 = \sum_{u,i\in K} (r_{ui}-p_u^T q_i)^2 + \lambda\|p_u\|^2 + \lambda\|q_i\|^2 C=u,i∈K∑?(rui??r^ui?)2=u,i∈K∑?(rui??puT?qi?)2+λ∥pu?∥2+λ∥qi?∥2
其中,λ 是為了減少過擬合而加入的正則化參數(shù)。
參數(shù)學習
對于此損失函數(shù)的優(yōu)化,本文使用隨機梯度下降算法。于是對于要學習的參數(shù) p,q 而言對他們分別求偏導得到:
?C?puk=?2quk+2λpuk?C?qik=?2puk+2λqik\frac{\partial C}{\partial p_{uk}} = -2q_{uk} + 2\lambda p_{uk} \\ \frac{\partial C}{\partial q_{ik}} = -2p_{uk} + 2\lambda q_{ik} ?puk??C?=?2quk?+2λpuk??qik??C?=?2puk?+2λqik?
于是,參數(shù)的更新公式為:
puk=puk+α(qik?λpuk)pik=qik+α(puk?λqik)p_{uk} = p_{uk} + \alpha(q_{ik} - \lambda p_{uk}) \\ p_{ik} = q_{ik} + \alpha(p_{uk} - \lambda q_{ik}) puk?=puk?+α(qik??λpuk?)pik?=qik?+α(puk??λqik?)
其中,α 是學習率,需要手動設置。輸入樣本進行參數(shù)迭代,當收斂的時候,就得到了最終的 p 和 q。然后就可以用最開始提到的公式:
Preference(u,i)=rui=puTqi=∑k=1Fpu,kqi,kPreference(u, i) = r_{ui} = p_u^T q_i = \sum_{k=1}^F p_{u,k}q_{i,k} Preference(u,i)=rui?=puT?qi?=k=1∑F?pu,k?qi,k?
來計算用戶 u 對物品 i 的感興趣程度了。
調(diào)參相關
在LFM中,重要的參數(shù)有4個:
- 隱特征的個數(shù) F ;
- 學習速率 alpha ;
- 正則化參數(shù) lambda ;
- 負樣本/正樣本比例 ratio 。
通過實驗發(fā)現(xiàn), ratio 參數(shù)對LFM的性能影響最大。因此,固定 F =100、 alpha =0.02、lambda =0.01,然后研究負樣本/正樣本比例 ratio 對推薦結(jié)果性能的影響。
三、小結(jié)
優(yōu)點
它基于用戶行為統(tǒng)計做分類,和專家標記相比:
- 能通過參數(shù) F 控制分類的粒度
- 能給一個物品多個分類
- 可以確定物品在某個分類中的權重
這些都是專家標記不能或者很難做到的。
缺點
-
很難實現(xiàn)實時的推薦。
-
推薦模型的更新,需要在用戶行為記錄上反復迭代,每次訓練都很耗時。
-
冷啟動問題明顯。
參考文章:
《推薦系統(tǒng)實戰(zhàn)》項亮
《推薦系統(tǒng)實踐》筆記
機器學習之隱語義模型LFM介紹與代碼實現(xiàn)(篇六)
總結(jié)
以上是生活随笔為你收集整理的【推荐系统(二)】协同过滤之隐语义模型(LFM)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香农编码简单例题_单链表逆序输出c语言
- 下一篇: FLASH如何制作数字天地特效