李盼穎 韓雨軒 溫秀梅,3,* 張書瑋
(1.河北建筑工程學(xué)院,河北 張家口 075000;2.哈爾濱工業(yè)大學(xué)(深圳),中國 深圳 518055;3.張家口大數(shù)據(jù)技術(shù)創(chuàng)新中心,河北 張家口 075000)
協(xié)同過濾算法是指利用用戶歷史信息為用戶建立模型進(jìn)而做出推薦的一類算法.本文介紹的隱語義模型LFM(Latent Factor Model,LFM)的思想是訓(xùn)練一個模型,然后挖掘出物品存在的隱藏特征,這些特征能夠解釋用戶給出這樣分?jǐn)?shù)的隱藏原因,以隱藏特征為紐帶,進(jìn)一步挖掘出矩陣中某些未評分物品與隱藏特征之間的關(guān)聯(lián),從而進(jìn)行預(yù)測.
推薦系統(tǒng)非常依賴用戶對物品產(chǎn)生的行為數(shù)據(jù),但縱觀整個推薦系統(tǒng),用戶不可能對每個物品都產(chǎn)生過行為,則獲取到可用的行為數(shù)據(jù)往往非常稀疏,數(shù)據(jù)的稀疏性會影響最終的推薦準(zhǔn)確度.因此,通過隱語義模型LFM進(jìn)行建模,對歷史數(shù)據(jù)進(jìn)行矩陣分解,最后利用降維后分解矩陣進(jìn)行一系列操作.
(1)
圖1是LFM建模的過程,通過建模,可以得到降維矩陣P和Q.其中P和Q矩陣中引入了3個隱藏特征,這3個隱藏特征把用戶特征矩陣和物品特征矩陣聯(lián)系起來.
圖1 LFM 建模過程
從上圖的LFM模型可以看出,該模型有以下幾個優(yōu)點:
(1)分類粒度可設(shè)置[1].在圖1中,通過建模引入了f1,f2和f3三個維度,維度的數(shù)量是通過設(shè)置LFM模型的分類數(shù)來控制的分類粒度.
(2)無需手動設(shè)置類別[2].矩陣P和Q中的類別數(shù)量是可設(shè)置的.類中最具有代表性的項目item是基于用戶行為數(shù)據(jù)集R自動聚類產(chǎn)生的,因此,不需要用戶手動分類項目.
(3)可以得到每個用戶User對所有類的興趣度,即使該用戶沒有實際產(chǎn)生某類的行為數(shù)據(jù),也可以通過模型計算出用戶對該類的隱含興趣度[3].
C=∑(u,i)∈R0(Ru,i-R^u,i)2+Reg=∑(u,i)∈R0(Ru,i-PuT×Qi)2+λ∑u||Pu||2+λ∑i||Qi||2
(2)
式(2)中的λ∑u||Pu||2+λ∑i||Qi||2是為了防止過擬合,而加入正則化項,其中正則化項系數(shù)λ可以通過交叉驗證獲取最優(yōu)值.對于最小化過程的求解,一般采用交替最小二乘法(Alternating Least Squares,ALS)或隨機(jī)梯度下降算法來實現(xiàn).
2.3.1 最小二乘法ALS
ALS算法的核心想法是:對于求解P和Q兩個未知矩陣問題,和之前的對于含兩個未知數(shù)X和Y求導(dǎo)問題比較類似.思路都是一樣,固定其中一個值,把另外一個當(dāng)成變量,通過損失函數(shù)最小化來進(jìn)行求解,反之亦然.反復(fù)執(zhí)行相同操作,直到滿足一定的閾值條件,或者達(dá)到迭代上限.這就是一個經(jīng)典的最小二乘問題.最小二乘法的具體過程如下:
a.固定當(dāng)前Q0的值,求解P0
b.固定當(dāng)前P0值,求解Q1
c.固定當(dāng)前Q1,求解P1
d.重復(fù)上述操作,直到損失函數(shù)C收斂,迭代結(jié)束
根據(jù)上述算法過程,利用ALS算法來進(jìn)行操作:
(1)以固定P,求解Q為例
(2)由于每一個用戶U都是互相獨立的,當(dāng)固定P時,物品特征向量Qi取得的值與其他物品特征向量無關(guān),所以每一個Qi都可以單獨求解
(3)優(yōu)化目標(biāo)minP,QC可轉(zhuǎn)化為公式(3):
minP[∑(u,i)(Ru,i-PuT×Qi)2+λ∑u||Pu||2]=∑uminP[∑i(Ru,i-PuT×Qi)2+λ∑u||Pu||2]
(3)
Lu(Pu)=∑i(Ru,i-PuT×Qi)2+λ||Pu||2
(4)
(4)最終目標(biāo)變成了:求每一個物品特征向量Qi,使得公式(4)取得最小值
(5)公式求導(dǎo)后,Qi結(jié)果如下:
Qi=(PPT+λI)-1PRi
(5)
反之,求解Pu也是同樣步驟:
Pu=(QQT+λI)-1QRU
(6)
2.3.2 隨機(jī)梯度下降算法
對于損失函數(shù)Lu(Pu)求最小數(shù),還可以采用隨機(jī)梯度下降算法,進(jìn)行迭代.損失函數(shù)L(P,Q):
L(P,Q)=∑(u,i)∈R0(Ru,i-PuT×Qi)2+λ∑u||Pu||2+λ∑i||Qi||2
(7)
對每一個Pu求偏導(dǎo)后,接著進(jìn)行梯度下降迭代:
(8)
同理,有:
(9)
其中,α是學(xué)習(xí)速率,α越大,迭代下降的速度就會越快.
對于LFM模型的實驗驗證,本文采用Movie Lens數(shù)據(jù)集中的ratings來驗證損失函數(shù)最優(yōu)化算法,數(shù)據(jù)集中存儲了10萬多條用戶對電影的評分?jǐn)?shù)據(jù),其中數(shù)據(jù)評分值為1到5,數(shù)據(jù)集情況如表1所示.
表1 數(shù)據(jù)集簡介
該實驗最終采用的是隨機(jī)梯度下降算法來進(jìn)行最優(yōu)損失函數(shù)的計算.實驗中需要用到迭代思想,迭代次數(shù)可隨機(jī)選擇,迭代是為了訓(xùn)練并輸出用戶特征矩陣P和物品特征矩陣Q,number_LatentFactors是隱藏特征數(shù)量,number_epochs是迭代次數(shù),alpha為學(xué)習(xí)參數(shù),lambda是正則化系數(shù).注意每次迭代后,損失函數(shù)的變化趨勢大不相同.算法核心代碼如下:
對于訓(xùn)練數(shù)據(jù)集Movie Lens,本文選擇的迭代次數(shù)number_epochs為100,alpha學(xué)習(xí)參數(shù)為0.02,lambda正則化系數(shù)為0.01.為了驗證隱藏特征向量對模型訓(xùn)練的結(jié)果有怎樣的影響,因此,在實驗中分別選擇隱藏特征特征向量為5和10來進(jìn)行比較.LFM模型訓(xùn)練結(jié)果如圖2圖3所示:
圖2 隱藏特征為10 圖3 隱藏特征為5
表2 部分真實值與預(yù)測值對比
本文主要利用隱語義模型LFM來構(gòu)建模型,采用隨機(jī)梯度下降算法使損失函數(shù)取得最優(yōu)值.而且根據(jù)該模型還可以預(yù)測出未評分項目的評分,對減少評分矩陣的稀疏性以及冷啟動問題有一定的作用.在實驗驗證的時候,迭代次數(shù)number_epochs,alpha學(xué)習(xí)參數(shù),lambda正則化系數(shù)的取值比較單一.為精確驗證實驗結(jié)果,在以后實驗驗證時可以豐富數(shù)據(jù)的多樣化來提高推薦效率.
在實際情況中,有些用戶的個人屬性以及評分差異性等問題也會影響用戶打分.因此,在接下來的研究中,在構(gòu)建模型時考慮加入這些影響因素,使得推薦效果更加精確.