成 鵬,劉文斌
(溫州大學(xué)數(shù)理與電子信息工程學(xué)院,浙江 溫州 325035)
推薦算法主要分為2大類:1)基于內(nèi)容的推薦算法[1];2)基于協(xié)同過濾的推薦算法?;趨f(xié)同過濾的推薦算法又可以分為基于鄰域的推薦算法(基于用戶的協(xié)同過濾算法[2]和基于物品的協(xié)同過濾算法[3])和基于矩陣分解的推薦算法[4]?;趦?nèi)容的推薦算法的優(yōu)點是專業(yè)人員根據(jù)商品的屬性進行分類,方便用戶按類查找?;卩徲蛩惴ǖ膬?yōu)點是推薦結(jié)果具有很好的解釋性且可以實現(xiàn)實時推薦?;诰仃嚪纸馑惴ǖ膬?yōu)點是有較好的數(shù)學(xué)理論基礎(chǔ)并且預(yù)測結(jié)果精度比較高[5]。
2006年Simon[4]首先將改進的SVD模型用于推薦系統(tǒng)的評分預(yù)測。2007年多倫多大學(xué)的Salakhutdinov等人[6]提出了使用概率矩陣分解來進行評分預(yù)測。因為參數(shù)的選擇對貝葉斯概率矩陣的性能有著重要的影響,但是尋找合適的參數(shù)非常耗時。為了解決概率矩陣分解在上述方面的不足,2008年Salakhutdinov等人[7]提出了貝葉斯概率矩陣分解,把參數(shù)整合到模型內(nèi)部,省去了尋找最優(yōu)參數(shù)的過程。同年雅虎研究院的Koren[8]提出了將基于鄰域的方法整合進矩陣分解模型。2009年Koren等人[9]發(fā)現(xiàn)物品的屬性、人的興趣會隨著時間變化而發(fā)生改變,將時間模型引入矩陣分解取得了不錯的效果。2011香港中文大學(xué)的Ma等人[10]率先嘗試將社交關(guān)系(信任關(guān)系)引入矩陣分解,他認(rèn)為如果2個用戶之間存在著社交關(guān)系(信任關(guān)系),那么這2個用戶品味會比較接近,反映到用戶特征向量上也是很相似的。Ma等人在Douban[11]和Epinions[12]這2個提供社交關(guān)系(信任關(guān)系)的數(shù)據(jù)集上進行了實驗。2013年Yang等人[13]對Ma等人的社交關(guān)系(信任關(guān)系)進行了細化,提出了Circle-based Recommendation,主要思想是:物品有很多的類別,每一個類別構(gòu)成了一個Circle,在同一個Circle中用戶對其他用戶都有信任值,這些信任值構(gòu)成了信任網(wǎng)絡(luò),在每個Circle分別用該Circle的信任網(wǎng)絡(luò)來約束用戶特征向量。2016年梅忠等人[14]考慮到傳統(tǒng)矩陣分解技術(shù)沒有考慮不同評分系統(tǒng)的整體差異以及數(shù)據(jù)集內(nèi)部用戶與物品存在的固有屬性,提出了受約束偏置的概率矩陣分解。同年巫可等人[15]將用戶屬性二值化,利用分類模型衡量用戶屬性的重要程度,從而構(gòu)建了用戶相似矩陣,用鄰居節(jié)點的評分修正預(yù)測評分。
在現(xiàn)實生活中,用戶評分是存在偏差的。首先即使2個用戶對同一部電影的評分相同,他們對該電影的喜好程度也可能是不一樣的;其次同一部電影不同年齡、性別、職業(yè)的人對其評分具有明顯的區(qū)別。本文在矩陣分解的基礎(chǔ)上提出了差值矩陣分解。將用戶對電影的評分減去與其社會屬性相似的用戶對該電影評分的平均分,得到差值矩陣,進而對差值矩陣進行分解。結(jié)果表明在基于年齡和職業(yè)的差值矩陣分解較矩陣分解,在80%和60%的訓(xùn)練數(shù)據(jù)上MAE分別降低了7.8%和3.4%。
設(shè)所有用戶組成的集合為U={u1,u2,…,um},所有電影組成的集合為V={v1,v2,…,vn},m表示用戶的數(shù)量,n表示電影的數(shù)量。設(shè)置rui為用戶uu對電影vi的評分,則所有用戶對電影的評分組成了評分矩陣R。
表1 評分矩陣R
用戶電影v1v2…vnu1r11r12…r1nu2r21r22…r2n?????umrm1rm2…rmn
矩陣分解的主要思想是:將評分矩陣R(如表1所示)近似表示成用戶特征矩陣P和電影特征矩陣Q的內(nèi)積,即R≈P×QT。其中R∈m×n,P∈m×d,Q∈n×d,d為隱特征的個數(shù)。矩陣分解的目標(biāo)是最小化用戶對電影實際評分rui與預(yù)測的評分之間的誤差。最后給模型加入正則項λ(‖pu‖2+‖qi‖2)來防止過擬合。損失函數(shù)定義如下:
其中,K為訓(xùn)練集,pu為用戶特征向量,qi為電影特征向量,λ為懲罰系數(shù)。使用隨機梯度下降(Stochastic Gradient Descent,SGD)來更新用戶特征向量pu和電影特征向量qi。更新規(guī)則如下:
將年齡、性別相同的用戶(年齡段劃分由數(shù)據(jù)集給出)對同一部電影的評分求平均分后發(fā)現(xiàn),不同年齡、性別對電影的評分相差還是比較大的。如表2表示的不同性別、年齡段的用戶對電影Toy Story評分的平均分。
表2 不同年齡、性別段用戶對電影Toy Story評分的平均分
年齡性別FM14.07693.8356184.08663.9907254.32514.1584354.23264.3333453.91674.2000504.03334.1154564.266673.7368
受到上面的啟發(fā),本文將社會屬性相同的用戶組成一個group簡寫為g,不同社會屬性的用戶共同組成了G={g1,g2,…,gn}。本文分別以年齡、性別、職業(yè)、年齡+性別、年齡+職業(yè)、職業(yè)+性別社會屬性建立G{…}。
本文實驗的數(shù)據(jù)來自于GroupLens[16]收集并整理的MovieLens 1M數(shù)據(jù)集。數(shù)據(jù)包含6040名用戶的信息(包括用戶ID、性別、年齡、職業(yè)、郵編),3952部電影的信息(電影ID、電影名、電影類別)以及1000209條評分信息(用戶ID、電影ID、評分、時間戳)。
平均絕對值誤差MAE定義如下:
為了驗證算法的性能,選擇3個目前比較流行的評分算法進行對比試驗。
1)BPMF[17](Bayesian Probabilistic Matrix Factorization)。設(shè)用戶的特征矩陣P和電影的特征矩陣Q,服從均值為0方差分別為δP,δQ的高斯分布,建立R,P,Q的聯(lián)合密度函數(shù),通過最大化后驗概率求解用戶特征矩陣P和電影特征矩陣Q。
2)MF(Matrix Factorization Techniques For Recommender Systems)。因為傳統(tǒng)的SVD矩陣分解技術(shù)不適用數(shù)據(jù)稀疏的情景,MF是SVD矩陣分解的一種變形,MF使用隨機梯度下降很好地解決了數(shù)據(jù)稀疏的問題。
3)融合用戶屬性隱語義模型。將矩陣分解后的隱特征作為輸入,二值化后的用戶屬性作為標(biāo)簽值,利用logistic為每個屬性建立一個分類模型。根據(jù)在測試集上的準(zhǔn)確率cs確定該屬性的重要性,進而根據(jù)用戶二值化后的屬性和屬性的重要性建立用戶之間的相似度網(wǎng)絡(luò)。最后用用戶u相似用戶的評分修正u的預(yù)測評分。
此外,本文給出的預(yù)測結(jié)果都是在各類算法參數(shù)最優(yōu)的情況下取得的。首先分別計算各個方法在參數(shù)取(0.00001,0.0001,0.001,0.01,0.1,1)時的MAE,發(fā)現(xiàn)參數(shù)取0.01和0.1時MAE相對較小。接下來將區(qū)間[0.01,0.1]分成10等份去尋找最優(yōu)參數(shù)。
為了發(fā)現(xiàn)不同社會屬性用戶的評分模式,本文分別研究年齡、性別、職業(yè)以及它們的兩兩組合對用戶評分的影響。隱特征的維度對預(yù)測精度有著重要的影響。經(jīng)過大量的試驗,可以發(fā)現(xiàn)當(dāng)隱特征個數(shù)超過20后,各類算法預(yù)測精度提高非常有限,故本文各個矩陣分解算法隱特征的維度均設(shè)定為20。
實驗過程中,分別選擇80%和60%的訓(xùn)練數(shù)據(jù)做訓(xùn)練,在剩余數(shù)據(jù)上進行測試。實驗采用交叉驗證的方式進行,實驗結(jié)果如表3所示。
表3 不同方法的平均誤差
訓(xùn)練樣本數(shù)/%方法貝葉斯概率矩陣分解矩陣分解融合用戶屬性隱語義模型差值矩陣分解-年齡差值矩陣分解-性別差值矩陣分解-職業(yè)差值矩陣分解-年齡+性別差值矩陣分解-職業(yè)+性別差值矩陣分解-年齡+職業(yè)800.69920.67410.67770.66470.66910.65870.65830.64920.6221600.71290.68710.69050.67970.68110.68250.67960.67880.6625
表4 不同方法取最優(yōu)值時λ的取值
訓(xùn)練樣本數(shù)/%方法矩陣分解融合用戶屬性隱語義模型差值矩陣分解-年齡差值矩陣分解-性別差值矩陣分解-職業(yè)差值矩陣分解-年齡+性別差值矩陣分解-職業(yè)+性別差值矩陣分解-年齡+職業(yè)800.030.030.040.050.070.050.060.07600.060.060.070.070.060.070.070.08
從表3中可以看出,在80%和60%的訓(xùn)練數(shù)據(jù)上,差值矩陣分解預(yù)測的精度要高于其他的算法。其中使用年齡和職業(yè)信息Group的差值矩陣分解取得的精度最好。表4是不同方法取最優(yōu)值時λ的取值。
下面分析每個用戶對電影評分減去與其社會屬性相似用戶評分平均值后的絕對值即|zui|,分別從1/4中位數(shù)、中位數(shù)、3/4中位數(shù)、均值、標(biāo)準(zhǔn)差這5個方面進行分析。其中差值矩陣分解-整體表示的是將每一個用戶的評分減去所有評分的平均分,統(tǒng)計量信息如表5所示。
中位數(shù)、均值和方差越小,從一定程度上可以說明通過該種社會屬性進行分組,組內(nèi)成員的相似度越高。從中位數(shù)的角度去觀察,可以發(fā)現(xiàn)|zui|的中位數(shù)越小,MAE也就越小。從均值的角度去觀察,可以發(fā)現(xiàn)|zui|的均值越小,MAE也就越小。從標(biāo)準(zhǔn)差的角度去觀察,可以發(fā)現(xiàn)|zui|的方差越小,MAE也就越小??傮w而言均值、方差和MAE呈現(xiàn)正相關(guān)性。
表5 |zui|的統(tǒng)計量信息
統(tǒng)計量信息方法差值矩陣分解-整體差值矩陣分解-年齡差值矩陣分解-性別差值矩陣分解-職業(yè)差值矩陣分解-年齡+性別差值矩陣分解-職業(yè)+性別差值矩陣分解-年齡+職業(yè)1/4中位數(shù)0.41840.30470.30860.29330.29960.27780.2162中位數(shù)0.58160.66670.67860.64710.650.62070.53333/4中位數(shù)1.41841.08161.10441.06251.0681.01481.0均值0.93370.76340.77520.74580.75140.72120.6565標(biāo)準(zhǔn)差0.6130.57860.58270.5720.57270.56570.5596
從表5可以看出在年齡、性別、職業(yè)、年齡+性別、職業(yè)+性別、年齡+職業(yè)這6個分組中,年齡+職業(yè)分組|zui|的中位數(shù)在0.53左右而其他分組的中位數(shù)都大于0.62,年齡+職業(yè)分組|zui|的均值在0.65左右而其他分組的均值都大于0.72。說明以年齡+職業(yè)來對用戶進行分組,組內(nèi)用戶的評分差異是最小的。所以針對MovieLens 1M數(shù)據(jù)集來說按年齡+職業(yè)進行分組是最佳的選擇。
社會屬性不同,差值矩陣分解取得最優(yōu)解的λ也是一樣的,接下來討論不同的社會屬性下,MAE隨著λ的變化趨勢。如圖1,圖2所示。
圖1 80%訓(xùn)練數(shù)據(jù)MAE在不同學(xué)習(xí)速率下的變化情況
圖2 60%訓(xùn)練數(shù)據(jù)MAE在不同學(xué)習(xí)速率下的變化情況
觀察圖1和圖2可以發(fā)現(xiàn)λ從0.00001逐漸增加到1的時候,MAE變化趨勢是一致的。先下降然后再上升再下降最后一直上升。λ在兩端時,MAE比較大。任何情況下,MAE取得最優(yōu)解λ取值范圍都為0.05~0.09。在λ比較小的時候,誤差比較大是由于正則項的權(quán)重太小沒有能夠很好地防止模型的過擬合。而當(dāng)λ取值較大的時候,模型的誤差也比較大,原因是正則項權(quán)重太大,干擾了模型正常的工作過程。當(dāng)λ取值0.01~0.1時,模型比較穩(wěn)定,誤差也相對較小。
提高推薦預(yù)測精度對改善推薦系統(tǒng)的性能具有重要的意義。矩陣分解是預(yù)測用戶對物品評分的最為常用的方法,它能夠很好地解決評分?jǐn)?shù)據(jù)稀疏的問題。本文在矩陣分解的基礎(chǔ)上考慮了用戶的社會屬性信息,提出了差值矩陣分解。先按照社會屬性將用戶進行分組,發(fā)現(xiàn)當(dāng)分組后差值的絕對值|zui|的均值和方差越小,矩陣分解后的精度也就越高。這說明組內(nèi)用戶具有較高的相似度,用戶的偏好在該分組上也就越有較強的區(qū)分能力。使用用戶的年齡+職業(yè)進行分組,差值絕對值|zui|的均值和方差最小,取得的精度也是最高的。在MovieLens 1M數(shù)據(jù)集上對本文提出的方法與主流的算法進行了對比實驗,實驗結(jié)果表明本文方法能有效地提高預(yù)測結(jié)果的精度。
[1] Lops P, Gemmis M D, Semeraro G. Content-based recommender systems: State of the art and trends[M]// Recommender Systems Handbook. Springer, US, 2011:73-105.
[2] Herlocker J L, Konstan J A, Terveen L G, et al. Evaluating collaborative filtering recommender systems[J]. ACM Transactions on Information Systems(TOIS), 2004,22(1):5-53.
[3] Sarwar B, Karypis G, Konstan J, et al. Item-based collaborative filtering recommendation algorithms[C]// Proceedings of the 10th International Conference on World Wide Web. 2001:285-295.
[4] Simon Funk. Netflix Update: Try This at Home[EB/OL]. http://sifter.org/simon/journal/20061211.html, 2006-12-11.
[5] 項亮. 推薦系統(tǒng)實踐[M]. 北京:人民郵電出版社, 2012.
[6] Salakhutdinov R, Mnih A. Probabilistic matrix factorization[C]// Proceedings of the 20th International Conference on Neural Information Processing Systems. 2007:1257-1264.
[7] Salakhutdinov R, Mnih A. Bayesian probabilistic matrix factorization using Markov chain Monte Carlo[C]// Proceedings of the 25th International Conference on Machine Learning. 2008:880-887.
[8] Koren Y. Factorization meets the neighborhood: A multifaceted collaborative filtering model[C]// Proceedings of the 14th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2008:426-434.
[9] Koren Y, Bell R, Volinsky C. Matrix factorization techniques for recommender systems[J]. Computer, 2009,42(8):30-37.
[10] Ma Hao, Zhou Dengyong, Liu Chao, et al. Recommender systems with social regularization[C]// Proceedings of the 4th ACM International Conference on Web Search and Web Data Mining. 2011:287-296.
[11] Douban. Douban[EB/OL]. https://www.douban.com/, 2017-07-31.
[12] Trustlet Network Datasets. Epinions [EB/OL]. http://www.trustlet.org/epinions.html, 2017-07-31.
[13] Yang Xiwang, Steck H, Liu Yong. Circle-based recommendation in online social networks[C]// Proceedings of the 18th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2012:1267-1275.
[14] 梅忠,肖如良,張桂剛. 基于受約束偏置的概率矩陣分解算法[J]. 計算機系統(tǒng)應(yīng)用, 2016,25(5):113-117.
[15] 巫可,戰(zhàn)蔭偉,李鷹. 融合用戶屬性的隱語義模型推薦算法[J]. 計算機工程, 2016,42(12):171-175.
[16] GroupLens. MovieLens[EB/OL]. http://grouplens.org/datasets/movielens/, 2017-07-31.
[17] Coveralls. 實現(xiàn)概率矩陣分解和貝葉斯概率矩陣分解代碼[EB/OL]. https://coveralls.io/github/chyikwei/recommend?branch=master, 2017-07-31.