高 宇 廖聞劍
(1.武漢郵電科學研究院 武漢 430074)(2.南京烽火軟件科技有限公司 南京 210019)
21世紀以來,互聯(lián)網(wǎng)給人們帶來了極大的便利,同時也產(chǎn)生了大量的信息,使得人們獲得又用的信息變得愈加困難,導致了所謂的信息過載(In?formation Overload)問題。搜索引擎在很大程度上緩解了這個問題,但是其提供的共性信息并不能滿足不同用戶的不同偏好。推薦系統(tǒng)的產(chǎn)生,旨在學習用戶的歷史行為數(shù)據(jù),獲取到用戶的偏好,為用戶產(chǎn)生個性化推薦。推薦系統(tǒng)算法主要有基于領域的算法,其中有基于用戶的協(xié)同過濾算法(User?CF)、基于物品(itemCF)的協(xié)同過濾算法、隱語義模型(LFM)及基于圖的模型協(xié)同過濾算法[1~2]?;谟脩簦║serCF)的協(xié)同過濾算法是推薦系統(tǒng)中最古老的算法,可以說這個算法標志著推薦系統(tǒng)的誕生,一直以來都是推薦系統(tǒng)領域最著名的算法。在協(xié)同過濾算法中,確定目標用戶的近鄰是整個算法的核心。傳統(tǒng)的利用用戶評分矩陣計算相似度的方法有余弦相似度、改進的余弦相似度、Pearson相似度算法。通過協(xié)同過濾的思想可以看出,用戶的評分數(shù)據(jù)越多,計算出的相似度也高,推薦算法的效果也就越好[3]。但是,在實際應用中的推薦系統(tǒng)中,隨著電子商務規(guī)模的不斷擴大,用戶的增加遠遠不及物品的增加,導致用戶的評分矩陣極度稀疏,為了減小數(shù)據(jù)稀疏性問題對推薦算法效果的影響,趙長偉等提出了基于混合因子矩陣分解的推薦算法,有效緩解了數(shù)據(jù)稀疏性的問題[4];Li提出了一種基于用戶-標簽-項目的通過語義挖掘的算法,基于圖模型和隨機游走為基礎,達到了不錯的推薦的效果,卻未使用到用戶的評分[5],一般的基于用戶的協(xié)同過濾算法僅僅使用用戶共同評價過的項目的評分,并未利用到用戶的全部評分,導致信息未得到充分的利用,影響了推薦算法的準確度。同時,由于用戶的興趣是隨時間而變化的,不同年齡,不同階段會有不同的興趣偏好,本文提出了一種融合項目的子信息,利用到用戶的全部評分數(shù)據(jù),同時結(jié)合時間因素的協(xié)同過濾算法,實驗結(jié)果顯示,改進后的算法在精確度上較傳統(tǒng)的協(xié)同過濾算法及只考慮項目類別的協(xié)同過濾算法上有明顯的提升。
傳統(tǒng)的User-based協(xié)同過濾算法過程主要如下。
步驟1):構(gòu)建用戶項目評分矩陣。將用戶集合U={u1,u2,…,um}對項目集合I={I1,I2,…,In}的評分數(shù)據(jù)轉(zhuǎn)化為用戶項目評分矩陣R(m,n)中,如表1所示,rui表示用戶u對項目i的評分,評分值可以是若干等級評分如0~5,也可以是0~1表示用戶的某種行為如加入購物車、瀏覽等[6~7]。
表1 用戶-項目評分矩陣
步驟2):計算用戶之間相似度并確定鄰居。根據(jù)用戶項目評分矩陣計算相似度,從而找到與某個用戶最相似的N個用戶。常見的計算相似度的算法如下。
余弦相似度:
改進的余弦相似度[8]:
其中Iuv表示用戶u和用戶v共同評分過的項目,Rui表示用戶u對項目i的評分,Rvi表示用戶v對項目i的評分,表示用戶v評分過項目的平均評分。
步驟3):為目標用戶產(chǎn)生推薦。獲取鄰居用戶v評分過,而目標用戶u未評分的項目i,預測用戶u對項目i的評分Pui。
采用的預測評分公式為
其中Nu為目標用戶u的鄰居集合,sim(u,v)即為步驟2)中用戶u,v之間的相似度[9-10]。從傳統(tǒng)的基于用戶的協(xié)同過濾算法過程中可以看出,計算用戶之間的相似度是整個算法的核心,而在實際中,用戶間共同評分的項目很少,造成用戶項目評分矩陣稀疏,影響了計算出來的相似性的精度。傳統(tǒng)的協(xié)同過濾算法中只考慮了用戶間共同評分的項目,而用戶的其他項目的評分未得到使用,導致了用戶評分信息未得到充分的利用,同時用戶對每個項目評分時的時間、地點等上下文信息也沒有得到利用,而這兩個信息之間也是有緊密聯(lián)系的。
為了能充分利用用戶的評分信息,本文考慮將用戶評分的項目信息分解為更小的子信息,通過這些項目的子信息,充分挖掘用戶對子信息的興趣,發(fā)現(xiàn)用戶深層次的偏好,從而找到相似度更精準的鄰居。同時項目子信息劃分必須保證項目子信息的種類必須有限個,同時能涵蓋所有的項目。例如,給用戶推薦計算機相關(guān)圖書,根據(jù)圖書內(nèi)容信息,可將計算機圖書分為 Java、Python、Linux、數(shù)據(jù)挖掘、Spark、人工智能、軟件工程、大數(shù)據(jù)與云計算等有限個分類。如《Spark快速大數(shù)據(jù)分析》,基于其內(nèi)容的子信息為Spark、大數(shù)據(jù)與云計算、人工智能等。基于內(nèi)容的內(nèi)部子信息可以更準確地描述項目同時也更容易區(qū)分不同的項目。
假設項目子信息的分類集合為A={A1,A2,…,Ai,…,An},項目集合為I={I1,I2,…,Ij,…,Im},每個項目的子屬性都包含在A中,所以推薦系統(tǒng)里面所有的項目特征信息可以用一個矩陣來表示,項目子信息矩陣表如表2所示,其中Cji表示項目j是否具備屬性i,如果項目j含有屬性i,Cji=1,如果項目j不含有屬性i則Cji=0。
表2 項目-項目子屬性矩陣
其中Puj表示用戶u對子屬性j的偏好程度,Pvj表示用戶v對子屬性j的偏好程度,表示用戶u對所有子屬性的平均喜好程度,表示用戶v對所有子屬性的平均喜好程度。
由于用戶的興趣隨著時間的變化而不斷在改變,所以用戶最近的評分更能反映用戶最近的興趣偏好,因此用戶的不同時間的評分對相似度計算的影響是不同的,最近的評分的影響因子更大,應該被賦予更大的權(quán)重。根據(jù)用戶在不同時刻的評分分配不同的權(quán)重的方式主要是有模擬遺忘曲線和時間窗技術(shù)。
遺忘曲線由德國心理學家艾賓浩斯提出,研究發(fā)現(xiàn),遺忘在學習之后立即開始,而且遺忘的過程是不均勻的。最初遺忘的速度很快,后面逐漸緩慢。
時間窗技術(shù)就是研究如何劃分有效的時間段來反映用戶在這段時間的興趣,因為我們通常認為用戶的興趣在一定時間段是穩(wěn)定的[11]。
考慮到用戶的興趣變化與記憶遺忘有很大的相似處,本文借鑒艾賓浩斯遺忘曲線來描述用戶的興趣變化,基于時間的用戶興趣度權(quán)重函數(shù)如式(7)所示:
其中Tmax為用戶評分的最晚時間,Tmin為用戶評分的最早時間,t為當前評分時間,有e-1≤f(t)≤1。隨著時間t的增大,f(t)逐漸增大,表明如果離評分時間越近,其分配的權(quán)重也就越大,越能反映用戶的當前興趣。
根據(jù)前面發(fā)現(xiàn)的用戶對項目子屬性的偏好,將時間權(quán)重引入基于項目子屬性的用戶相似度計算,發(fā)掘用戶對項目子屬性的興趣偏好,用戶u對項目子屬性j的興趣偏好為Puj如式(8)所示:
其中f(t)為時間遺忘函數(shù),Cij即為項目i是否具備子屬性j,Lui為用戶u對項目i的評分?;舅枷刖褪窃谟嬎阌脩魎對子屬性j的平均偏好程度時,引入時間權(quán)重,將每次對子屬性的評分與對應時間的時間權(quán)重相乘,得到改進的用戶對子屬性的興趣偏好計算方法,此時用戶u、v的用戶-項目子屬性相似度計算公式為
傳統(tǒng)的計算用戶相似度的方法被廣泛證明是有效的,為了提高推薦的精確度,本文結(jié)合用戶-項目屬性相似度和用戶-項目子屬性隨時間變化的相似度,采用一個動態(tài)平衡因子α來改進用戶-項目子屬性相似度的計算,如式(10)所示:
融合用戶對項目子信息興趣變化的協(xié)同過濾算法流程如圖1所示。
輸入:數(shù)據(jù)集中一對訓練集和測試集,平衡因子,最近鄰居數(shù)K
輸出:用戶u對項目j的預測評分
算法步驟:
Step1:根據(jù)訓練集得到用戶-項目評分矩陣Rm×n;
Step2:采用Pearson相似度計算方法,計算基于項目評分的用戶間的相似度simPearson(u,v);
Step3:分析項目子屬性,確定子屬性類別,構(gòu)建項目-項目子屬性矩陣Cmn;
Step4:引入時間權(quán)重f(t),計算用戶對各子屬性的對時間變化的偏好程度Puj(T);
Step5:計算基于項目子屬性的用戶興趣隨時間變化的用戶相似度;
Step6:引入平衡因子 α,綜合 simPearson(u,v)和simPT(u,v),得到改進的用戶相似度 sim(u,v),并構(gòu)建相似度矩陣;
Step7:根據(jù)Step6得到的相似度矩陣來尋找與目標用戶u最近的K個鄰居,選擇sim(u,v)最大的預先設定的K個用戶作為目標用戶u的近鄰;
Step8:根據(jù)Step7中確定的目標用戶的近鄰用戶集合V和用戶項目評分矩陣;
Rm×n,根據(jù)式預測目標用戶u對項目j的評分;
算法結(jié)束。
為了驗證本文提出的融合用戶對項目子信息興趣變化的協(xié)同過濾算法的效果,本文采用著名的MovieLens網(wǎng)站提供的數(shù)據(jù)集,該網(wǎng)站上用戶對觀看過的電影評分,評分制為1~5分,最低為1分,最高為5分,評分越高表示用戶對改電影越喜歡,同時電影分為恐怖,冒險,幻想,動作,動畫,戲劇,喜劇,兒童,犯罪,紀錄片,黑色電影,音樂劇,愛情,懸疑,科幻,驚悚,戰(zhàn)爭和西方18個類型[12],由于每個電影可以同時涵蓋幾種類別,同時電影類別也滿足我們提出的項目子屬性的要求,所以將電影類別作為電影項目的子屬性,方便我們不用再去尋找隱藏的子屬性,更容易去驗證本文提出的算法的效果。
本文選取MovieLens-1MB數(shù)據(jù)集,該數(shù)據(jù)集包含6040個用戶對3900部電影的1000209個評分,訓練集合采用隨機選取的辦法,例如:訓練集占整體數(shù)據(jù)集比重為X,則測試集占整體數(shù)據(jù)集的比重為1-X,當X=0.8時,訓練集所占比重為80%,測試集占比為20%,此時數(shù)據(jù)稀疏度為95.53%。
由于推薦系統(tǒng)的應用場景不同,所以推薦系統(tǒng)在不同方面有不同的評價指標,這些指標有的可以定量計算,有些只能定性描述,有些可以通過離線實驗計算,有些需要通過用戶調(diào)查獲得,還有些只能在線評測。對推薦效果的評價主要分為三種類型:準確性、多樣性、新穎性。
本文以準確性為評價指標,根據(jù)平均絕對誤差(Mean Absolute Error,MAE)[13~14]來計算推薦系統(tǒng)產(chǎn)生的預測與用戶實際評分的誤差,以此來衡量推薦結(jié)果的準確性,平均絕對誤差MAE公式為
對于測試集中的一個用戶u和物品i,令rui是用戶u對物品i的實際評分,而r?ui是推薦算法給出的預測評分。MAE越小,表示推薦的精度越高[15]。
實驗1:選擇X=0.8,即數(shù)據(jù)集的80%作為訓練集,20%作為測試集,首先根據(jù)傳統(tǒng)的推薦算法得到MAE值最小時的K值,從圖2可以看出當K值為35時,傳統(tǒng)算法下平均絕對誤差值最小,因此我們選擇K為35,以便接下來的研究。
圖2 不同平衡因子下的MAE
實驗2:選擇K值為35,測試不同平衡因子對改進的推薦算法的精準度的影響,實驗結(jié)果如圖3所示,當平衡因子為為0.2時,改進的推薦算法下的平均絕對誤差最小。
圖3 不同K值下的MAE
實驗3:此時,選取平衡因子=0.2,對不同K值下的傳統(tǒng)推薦算法和本文提出的改進的推薦算法的效果進行比較。結(jié)果如圖4所示,實驗結(jié)果顯示,改進的推薦算法在不同K值下的預測評分精準度均高于傳統(tǒng)的基于Pearson相似度計算的推薦算法,且本文提出的改進算法在平衡因子為0.2,最近鄰居為30時,評分預測的平均誤差最小,推薦的效果達到最優(yōu)。
圖4 不同K值下兩種算法下的MAE
本文通過試驗設計,探討了融合用戶對項目子信息興趣變化的協(xié)同過濾算法的推薦性能。介紹了從基于用戶-項目子屬性的隨時間變化的興趣偏好的設計思路以及實驗步驟,直到確定了一些重要參數(shù)如平衡因子和最近鄰居數(shù)值K,最后將本文提出的改進的推薦算法與傳統(tǒng)的算法效果進行比較。研究發(fā)現(xiàn),當平衡因子為0.2時,融合用戶對項目子信息興趣變化的協(xié)同過濾算法推薦的效果最好,當鄰居數(shù)小于30時,該算法的推薦質(zhì)量隨著最近鄰居數(shù)的增大而增大,當鄰居數(shù)大于30后,改算法的推薦質(zhì)量隨著最近鄰居數(shù)的增大而緩慢減小并趨于平穩(wěn)。在算法的整體精準度的比較上,本文提出的推薦算法的MAE值都小于傳統(tǒng)的基于Pear?son相似度計算的推薦算法,在數(shù)據(jù)稀疏性問題上,本文提出的改進算法的推薦效果更好。