時光洋,于萬鈞,陳 穎
(上海應用技術大學 計算科學與信息工程學院,上海 201418)
推薦算法的價值在于幫助用戶解決信息過載問題,做出更好選擇?,F(xiàn)有的推薦算法一部分主要有,深度矩陣分解算法[1]、強化學習推薦算法[2]、用戶記憶網(wǎng)絡順序推薦[3]。它們的特點是加強了對隱含特征的學習,通過神經(jīng)網(wǎng)絡模型訓練來提升推薦效果,但對于存在的顯式特征沒有充分挖掘出價值。例如,用戶使用的標簽信息和用戶評分[4]。對此,有部分研究人員是關注標簽信息的挖掘,Lin等[5]利用層次結構分析標簽之間的關聯(lián)特征,但沒有考慮到用戶自身對于不同標簽的喜好程度大小。Zhu等[6]對標簽推薦列表長度進行了優(yōu)化,考慮了列表中標簽的相關性,卻忽略了不同標簽所占的權重。Dai等[7]從評論中提取出特征及其情感程度,構建用戶商品的特征權重,在計算方式中沒有考慮到用戶使用標簽的顯式作用對于用戶商品特征權重的影響。
為解決上述問題,本文從用戶對標簽興趣和用戶對標簽的評分信息兩個方面展開研究,提升對用戶興趣挖掘的準確性。主要工作在以下幾個方面:
(1)對用戶所使用的標簽進行操作,通過自定義函數(shù)確定用戶對標簽偏好值:分別計算用戶對標簽喜好值和用戶對標簽依賴度,將兩者進行乘積運算得到用戶標簽偏好值。
(2)將用戶對物品評分遷移為用戶對所使用的標簽評分,以此來計算標簽在同一用戶所使用的所有標簽中所占權重。當其它用戶使用相同標簽時,則用戶間相似度高。
(3)將標簽偏好值與標簽權重進行線性組合,從而計算出用戶最終的標簽興趣度。引入矩陣分解算法,對評分進行預測。
實驗結果表明,相比于其它評分預測算法,本文算法模型預測精準度有所提高,取得較好效果。
Jaccard標簽相似度、皮爾遜系數(shù)標簽相似度和TF-IDF標簽相似度是主要計算標簽相似度的推薦方法。基于Jaccard標簽相似度主要是利用集合操作來處理標簽,不同標簽所占權重缺乏考慮,導致推薦精度較低。皮爾遜相關系數(shù)計算標簽相似度是將用戶所打標簽看作變量,計算它們之間的皮爾遜相關系數(shù),但皮爾遜相關系數(shù)假設數(shù)據(jù)是正態(tài)分布的,如果數(shù)據(jù)未能滿足這個假設,計算結果可能會失效。TF-IDF標簽相似度計算根據(jù)標簽使用次數(shù),忽略了評分信息因素。
1.1.1 Jaccard標簽相似度
Jaccard相似系數(shù)定義請參見文獻[8],計算公式如下[8]
(1)
1.1.2 皮爾遜相關系數(shù)標簽相似度計算方法
皮爾遜相關系數(shù)是用于度量兩個變量X和Y之間的相關性,其值介于-1與1之間。相關系數(shù)的絕對值越大,相關性越強,反之相反。皮爾遜相關系數(shù)計算公式如下[9]
(2)
1.1.3 TF-IDF標簽相似度計算方法
令標簽集合T={t1,t2,…,td},d為標簽數(shù)量。wi表示給物品i打上標簽ti的用戶數(shù)量。每個標簽ti對應權重為wi,全部標簽對應的權重集合為W={w1,w2,…,wd}。對標簽集T進行統(tǒng)計,得出所有標簽被用戶使用次數(shù)的集合D,D={d1,d2,…,dd},其中dj表示標簽ti被用戶使用次數(shù)。TF-IDF計算步驟分為以下幾步[10]:
步驟1 計算標簽詞頻(TF),即每個標簽i在每個物品使用次數(shù)。計算公式如下所示
(3)
步驟2 為計算標簽的逆文檔頻率(IDF),用以表示標簽的常見度,利用以下公式進行計算
(4)
步驟3 合成IF-IDF公式,計算公式如下
TF-IDF=TFi*IDFi
(5)
1.2.1 隱語義模型
隱語義模型(latent factor model,LFM)是推薦系統(tǒng)領域一個熱門研究問題,核心思想是通過隱含特征關聯(lián)用戶興趣和物品,通過矩陣分解對用戶-物品評分矩陣R進行分解,分解成用戶-特征矩陣P和物品-特征矩陣Q[11]。其結構如圖1所示。
圖1 矩陣分解模型
其中,K表示特征個數(shù)。
令pj和qk分別代表用戶潛在特征向量和物品潛在特征向量,評分預測計算公式如下
(6)
(7)
式中:μ表示用戶評分均值,bj表示用戶偏置項,bk表示物品偏置項。
1.2.2 隱式反饋SVD++模型
LFM和帶有偏置項隱語義模型(BiasSVD)都過度依賴用戶-物品評分矩陣,BiasSVD模型中雖然加入評分平均分μ、用戶偏置項bj和物品偏置項bk,卻沒有考慮顯示用戶歷史行為對用戶評分預測的影響。在SVD++模型中,考慮了用戶對其所有有過評分行為的物品的隱式反饋[12]。所以隱式反饋SVD++模型的預測表達式為
(8)
式中:Nk表示物品ik受到用戶的評分集合,xv表示用戶uv的特征向量。
根據(jù)上文描述,本文主要是在現(xiàn)有理論TF-IDF算法和SVD++模型基礎上,將用戶對標簽的依賴度和用戶標簽興趣相似度的概念結合起來,并將其引入到SVD++模型中。這樣做可以提升模型的推薦效果。具體而言,利用TF-IDF算法計算每一個用戶對標簽的依賴度,即某個用戶對某個標簽感興趣的程度。通過這種方式,可以更加準確地描述用戶的興趣特點,從而提高推薦系統(tǒng)的推薦質量。另一方面,在傳統(tǒng)的SVD++模型中,主要考慮了用戶對物品的評分數(shù)據(jù),并未考慮用戶興趣的細節(jié)。為了更準確地描述用戶的興趣特點,本文引入了用戶標簽興趣相似度的概念,通過標簽來反映用戶之間的相似度。通過這種方式,將用戶對于標簽興趣引入到SVD++模型中,從而更好地體現(xiàn)用戶的個性化需求和偏好。綜上所述,本文通過引入TF-IDF算法計算用戶對標簽的依賴度以及用戶標簽興趣相似度的概念,對傳統(tǒng)的SVD++模型進行了改進,以提高推薦系統(tǒng)的性能和準確性。
令用戶集合為U={u1,u2,…,um},物品集合為V={v1,v2,…,vn},且|U|=m,|V|=n。建立用戶-物品評分矩陣為R,R=[rij]m×n是一個m×n的用戶-物品評分矩陣,rij表示用戶ui對物品vj的評分,其中i=1,2,…,m,j=1,2,…,n。對于物品的評分完全是根據(jù)用戶是否愿意給物品打分或用戶是否與物品發(fā)生過交互,用戶沒有與物品產生過交互或者用戶不愿給物品打分,那么用戶u對于物品v的評分不存在,則rij=0。在實際推薦中,用戶與物品發(fā)生交互的次數(shù)遠少于物品本身數(shù)量,并且存在發(fā)生交互沒有打分情況。在兩種因素下,用戶-物品評分矩陣R通常是一個稀疏的矩陣。矩陣R如下
(9)
令標簽集合為T={t1,t2,…,td},且|T|=d。將用戶對物品的評分看作為用戶對物品及其相關標簽的評分,并構建用戶-標簽評分矩陣P,puitj代表用戶ui對于標簽tj的評分,其中m=1,2,…,m,t=1,2,…,d。矩陣P如下
(10)
根據(jù)用戶-標簽評分矩陣P,構建用戶-標簽交互矩陣Z=[zut]m×d,zuitj代表用戶ui是否與標簽tj發(fā)生交互,當put≠0時,zut=1即用戶u與標簽t發(fā)生交互,反之zut=0則未發(fā)生交互。zut計算公式為
(11)
標簽是用戶描述、整理、分享網(wǎng)絡內容的一種新的形式,也是反映用戶自身的興趣和態(tài)度。用戶對于標簽的喜好可以使用二元關系表示,如“喜歡”或“不喜歡”;也可以使用“連續(xù)數(shù)值”表示喜好程度。二元方法表示雖然簡單明了,但是描述精度不夠,對標簽進行喜好程度大小排序時,無法區(qū)分標簽之間的差異。所以,這里采用“連續(xù)數(shù)值”來表達用戶對于標簽的偏好值。
計算用戶對標簽喜好值,相同標簽用戶可能會用來標記不同物品,不同的標簽也會標記相同的物品。因此,用戶對標簽的喜好值計算公式如下,其中u∈U,t∈T
(12)
假設用戶評分次數(shù)較少,通過上面計算方法可能使得計算結果存在較大誤差,利用TF-IDF算法計算用戶對標簽的依賴程度。首先,計算TF-IDF算法中TF部分,即標簽使用頻率,計算公式如下
(13)
目前,社交標簽的使用已經(jīng)成為一種普遍現(xiàn)象,導致互聯(lián)網(wǎng)中存在“馬太效應[13]”,即隨著熱門標簽的展示次數(shù)增多,它們變得越來越受歡迎,冷門標簽隨著使用次數(shù)較少變得越來越冷門。事實上,冷門標簽的使用能夠更好體現(xiàn)出用戶的個性和特點,為了消除馬太效應的影響,更加準確的挖掘用戶偏好,本文利用TF-IDF算法中IDF部分,對熱門標簽進行數(shù)值懲罰。公式如下
(14)
綜合上述,用戶對標簽依賴度數(shù)值計算公式為
TF-IDF(u,t)=TF(u,t)×IDF(u,t)
(15)
綜合考慮,用戶對于標簽的主觀喜好值和利用TF-IDF算法計算用戶對于標簽的依賴度數(shù)值,可以得到用戶對于標簽的偏好值為
Pre(u,t)=Deg(u,t)×TF-IDF(u,t)
(16)
在用戶對物品進行評分時,通常情況下會同時給物品打上自己喜歡的標簽,這些標簽代表了用戶對物品的主觀評價[14]。例如,當用戶觀看了一部動漫電影并且非常喜歡,為了表達他們的喜愛,用戶可能給這部電影評分為5分,并添加“cartoon”這個標簽。這個標簽在用戶打過的所有標簽中的權重會更大,如果其它用戶也使用了這個標簽來標記自己看過的物品,那么可以認為這些用戶之間的相似度較高。
通過利用物品評分來計算標簽權重,計算公式如下
(17)
用戶對標簽的興趣度表示了用戶對該標簽的興趣程度的大小,若用戶對于某個標簽的興趣度較大,則類似標簽或該標簽標注的其它物品可以向用戶推薦。計算用戶對標簽的興趣程度,定義函數(shù)Int(u,t),其中u∈U,t∈T。綜合考慮用戶對標簽偏好值和標簽權重對用戶標簽興趣度的影響,將標簽偏好值Pre(u,t) 和標簽權重Wu,v(t) 進行線性組合,函數(shù)Int(u,t) 計算公式為
Int(u,t)=α×Pre(u,t)+β×Wu,v(t)
(18)
式中:α和β分別表示用戶對標簽偏好值和標簽權重的權重,α和β的具體取值在實驗結果中得出。
用戶標簽興趣相似度被用來衡量用戶之間的興趣相似性的大小,如果兩個用戶之間的標簽興趣相似度越大,那么表示他們的興趣更為相似,反之則相反。定義函數(shù)Sim(uj,uv),其中uj∈U,uv∈U。計算公式如下
(19)
式中:Int(uj,tl) 和Int(uv,tl) 分別代表用戶uj和用戶uv對標簽tl的興趣度,Tj,v表示用戶uj和用戶uv共同使用過標簽的集合。
SVD++模型是在BiasSVD模型基礎之上,根據(jù)實際推薦中用戶評分行為較少來進行改進的,進一步引入隱式反饋信息。在隱式反饋中,假設存在一個與每個用戶進行過隱式交互的物品集合相對應的k維隱向量。通過將與用戶有過隱式交互的物品的隱向量相加,可以從一個新的維度來表示用戶的興趣愛好。這種改進方法能夠提升一定的模型性能,但是還存在著不足。首先,沒有考慮社會化標簽的使用網(wǎng)站中存在“馬太效應”。其次,用戶對物品打分后,使用的標簽在一定程度上反映出了用戶對于該標簽的喜好程度,物品評分能夠類似于標簽所占權重。對此,標簽評分權重往往被忽視。
為解決以上問題,在SVD++算法模型的基礎上將用戶標簽興趣相似度引入其中,對SVD++算法模型進行改進。通過利用用戶標簽興趣相似度,可以計算用戶之間的相似度。這種改進方法具有以下優(yōu)勢:首先,在計算用戶對標簽偏好時,能夠更準確地考慮到他們的興趣相似度,考慮社會化標簽的“馬太效應”,對熱門標簽進行了數(shù)值懲罰,在一定程度上能夠緩解“馬太效應”。其次,通過物品評分來計算出標簽權重,并引入最終的用戶對于標簽的興趣度,使得最終結果更加具有泛化性。改進后的計算公式為
(20)
損失函數(shù)用于衡量模型預測評分與實際評分之間的差異。模型的準確度與損失函數(shù)值呈負相關,即模型準確度越高,損失函數(shù)值越小。然而,過小的損失函數(shù)值可能導致模型出現(xiàn)過擬合,從而降低了其泛化能力。為了提高模型的泛化能力,引入正則項用于限制損失函數(shù)的下降幅度,確保在具有較高預測精度下,模型仍具備良好的泛化能力。計算公式如下
(21)
使用隨機梯度下降(stochastic gradient descent,SGD)法進行參數(shù)迭代,直到測試集誤差不在變化。公式如下
(22)
(23)
(24)
(25)
(26)
本文所提出的基于標簽挖掘的個性化推薦算法記為PRMT模型,該算法大體分為輸入和輸出兩步,根據(jù)用戶、物品、標簽和評分生成用戶-物品評分矩陣、用戶-標簽評分矩陣和用戶-標簽交互矩陣。算法流程如下:
算法:基于標簽挖掘的個性化推薦算法
輸入:R:用戶-資源評分矩陣;P:用戶-標簽評分矩陣;Y:用戶-標簽交互矩陣;正則化系數(shù)λ、權重系數(shù)λ1,α,β和學習率η
步驟:S1:讀取數(shù)據(jù)并劃分訓練集和測試集,根據(jù)式(9)~式(11)分別構建用戶-物品評分矩陣R、用戶-標簽評分矩陣P和用戶-標簽交互矩陣Y;
S2:根據(jù)式(12)~式(16)計算用戶對于標簽偏好值;
S3:根據(jù)式(17)計算用戶標簽權重;
S4:利用S2和S3計算所得值,根據(jù)式(18)計算用戶標簽興趣度;
S5:利用S4計算所得值,根據(jù)式(19)用戶間偏好相似度;
S6:將SVD++模型進行改進,將S5所得的用戶偏好相似度帶入改進后的SVD++模型,即本文所提算法模型PRMT;
S7:訓練PRMT模型,根據(jù)式(20)~式(26)訓練迭代參數(shù),來尋找各參數(shù)的最優(yōu)值,若模型迭代達到損失函數(shù)閥值,則進行S8,否則繼續(xù)本步驟;
為了衡量本文提出算法模型效果,使用均方根誤差(root mean square error,RMSE)和平均絕對誤差(mean absolute error,MAE)進行檢驗,作為實驗結果衡量標準。反映測試值與真實值之間的誤差,RMSE和MAE值的大小與推薦精度呈負相關,即RMSE和MAE值越小,推薦精度越高。RMSE和MAE計算公式如下
(27)
(28)
本實驗采用MovieLens數(shù)據(jù)集中的ml-25M,ml-25M數(shù)據(jù)集是MovieLens數(shù)據(jù)集中最大版本,包含了25 000 096條評分數(shù)據(jù)和1 109 927條標簽數(shù)據(jù),以及58 000部電影和280 000名用戶,包括多個用戶對電影的評分和標簽,電影評分范圍在0.5~5之間。同一用戶可以給多個電影標注不同標簽,且同一電影可以被不同用戶標注不同標簽。
對于數(shù)據(jù)集的處理,首先,我們利用用戶編號和電影編號作為合并字段,將標簽編號合并到含有用戶編號、電影編號和評分的文件中;其次,對標簽使用次數(shù)進行統(tǒng)計,將使用次數(shù)低于5次的標簽以及所在行的全部數(shù)據(jù)刪除,對處理后標簽數(shù)據(jù)重新進行編號;最后,檢查處理后的數(shù)據(jù),查看是否有異常值或空值,然后保存到新文件中,用于后面模型訓練。部分具體數(shù)據(jù)示例見表1。
表1 部分處理后數(shù)據(jù)集展示
圖2 各參數(shù)實驗結果
根據(jù)圖2中的實驗結果曲線變化,可以得出:
(1)不同參數(shù)值的情況下,RMSE的值有增有減,其變化規(guī)律趨勢無法確定。從圖中變化曲線我們可以看出,對于參數(shù)值的選擇不能一味的增大或減小,只有通過大量實驗,選擇最為合適的參數(shù)值,才能保證模型預測精度達到最佳。
(2)當α=0.4,β=0.3,λ=0.09,λ1=0.001時,RMSE的值最小,算法模型的精準度最大。
本文選擇對比模型有,LFM、SVD++、概率矩陣分解[15](PMF)、電影相似性協(xié)同過濾推薦模型[16](UB-HUS)、信任感知和領域專家的協(xié)同過濾模型[17](TrustMF)、個性化馬爾可夫鏈和社交網(wǎng)絡聯(lián)合模型[18](JSR)、基于概率矩陣分解的協(xié)同過濾模型[19](IC-US-PMF)、用戶標簽相似度的矩陣分解模型[20](UTagJMF),進行對比實驗,實驗結果如圖3所示。
圖3 不同模型之間對比
根據(jù)圖3曲線變化,可以得知,PMF模型的RMSE和UB-HUS模型的MAE預測精度均為最低。模型TrustMF、JSR、IC-US-PMF、UTagJMF的MAE和RMSE值都有所下降,但都沒有低于模型LFM和SVD++,而本文所提模型PRMT的RMSE和MAE值是最低的。
對此,將與本文所提模型PRMT性能最為相近的兩個模型LFM和SVD++作為基準對比模型,將其單獨拿出與PRMT模型對比RMSE和MAE。結果如圖4所示。
圖4 3種模型之間比較
根據(jù)圖4實驗結果,能夠得出以下結論:
(1)3種模型中,LFM模型RMSE和MAE值依舊最大,分別為0.9242和0.6855,模型預測精度依然最低。
(2)SVD++模型RMSE和MAE分別為0.8883和0.6448,相對于LFM模型預測精度提升4.04%和4.07%;PRMT模型RMSE和MAE分別為0.8742和0.6348,相對于LFM模型和SVD++模型預測精度在RMSE分別提升了5%和1.41%,MAE分別提升了5.07%和1%。
(3)3種模型在ml-25數(shù)據(jù)集上,PRMT模型RMSE和MAE值最小,表明預測精度最高。由此可見,本文算法模型明顯優(yōu)于其它幾個模型,具有良好的預測精度。
推薦系統(tǒng)目前在各個領域都有所應用,矩陣分解算法是推薦系統(tǒng)中一個重要算法。本文所提算法,主要從用戶對于標簽的偏好值和標簽權重來進行融合實驗,在一定程度上挖掘出了用戶更深層次的興趣,算法綜合考慮標簽對于推薦精度的影響,同時對傳統(tǒng)算法模型進行了改進,在一定程度上提高了推薦精度和改善推薦效果。
對于后續(xù)研究可以利用神經(jīng)網(wǎng)絡來深入挖掘用戶興趣的潛在特征,進一步提高推薦精度和效果。