孔元元,白智遠,張 颯,呂 品
(上海電機學(xué)院 電子信息學(xué)院,上海 201306)
隨著互聯(lián)網(wǎng)和信息技術(shù)的快速發(fā)展,數(shù)字化、網(wǎng)絡(luò)化越來越普及,大量的信息聚集起來,形成海量信息[1-3]。用戶想要從海量的信息中快速找尋自己所感興趣的內(nèi)容,已經(jīng)變得越來越困難,因此,推薦系統(tǒng)便應(yīng)運而生。目前,推薦技術(shù)被廣泛應(yīng)用于電子商務(wù)[4]、社交網(wǎng)絡(luò)[5]、新聞網(wǎng)絡(luò)[6]等系統(tǒng)中。而推薦技術(shù)中,協(xié)同過濾推薦技術(shù)是應(yīng)用最早和最為成功的技術(shù)之一[4]。協(xié)同過濾推薦系統(tǒng)通過計算物品與物品或用戶與用戶之間的相似度,結(jié)合用戶的歷史喜好,計算出物品對用戶的推薦指數(shù),得出推薦結(jié)果。
傳統(tǒng)的協(xié)同過濾推薦系統(tǒng)只考慮用戶是否選擇了物品,而忽略了用戶因時間的推移而產(chǎn)生的興趣變化。引入用戶訪問時間的數(shù)據(jù)權(quán)重的改進型協(xié)同過濾推薦系統(tǒng)[7]則更好地反映出用戶的興趣變化,改善了系統(tǒng)的準確度。但是沒有考慮到用戶選擇物品的偶然性問題,使得用戶在近期偶然選擇物品的行為增大了該類型的物品對用戶的興趣度。
本項目以電視產(chǎn)品推薦為例,提出了時間權(quán)重與興趣相似度融合的協(xié)同過濾模型。時間權(quán)重考慮了用戶收視偏好變化與時間的依賴關(guān)系;用最近T時段內(nèi)用戶觀看的電視節(jié)目信息表示興趣相似度。因此,該方法能有效地反映用戶收視的動態(tài)變化,克服了傳統(tǒng)協(xié)同過濾算法在計算推薦過程中將用戶已觀看的每個電視節(jié)目同等對待的弊端,實現(xiàn)了基于用戶收視信息、電視產(chǎn)品信息和用戶基本信息構(gòu)建的個性化電視產(chǎn)品推薦。
1992年,Goldberg、Nicols、Oki及Terry提出了協(xié)同過濾的概念[8]。隨著個性化推薦技術(shù)的快速發(fā)展,個性化推薦技術(shù)廣泛應(yīng)用于各個領(lǐng)域,其中基于協(xié)同過濾的推薦技術(shù)最受青睞。協(xié)同過濾算法采用給用戶使用過的對象(如視頻、文檔、商品等)反饋信息(如評分),這些反饋被記錄下來,通過合作的機制分析數(shù)據(jù),幫助潛在用戶篩選感興趣的對象[9]。
時間權(quán)重與興趣相似度融合的協(xié)同過濾模型包含三個部分:時間權(quán)重、興趣相似度以及融合模型。
在傳統(tǒng)的協(xié)同過濾推薦系統(tǒng)中,輸入數(shù)據(jù)通常表述為一個a×b的用戶—資源訪問矩陣R,其中a表示用戶數(shù),b表示資源數(shù),Rij表示第i個用戶對第j個資源的訪問記錄。矩陣中的每一個數(shù)據(jù)元素的值表示用戶是否訪問該資源(1表示訪問,0表示未訪問)。
傳統(tǒng)的協(xié)同過濾算法有兩種實現(xiàn)方式[10]:基于用戶的實現(xiàn)方式與基于物品的實現(xiàn)方式。
相似度是用于比較兩個事物近似度的度量,一般基于距離進行計算。由于通常在原始數(shù)據(jù)集中,產(chǎn)品的名稱和種類繁多,用戶矩陣與物品相似度矩陣維度過大。因此,為了提高運行效率,本項目組選擇杰卡德相似度度量[11]。杰卡德相似度度量如式1所示。
(1)
其中,|A1∪AM|表示喜歡電視產(chǎn)品1與喜歡電視產(chǎn)品M的用戶總數(shù);|A1∩AM|表示同時喜歡電視產(chǎn)品1和電視產(chǎn)品M的用戶數(shù)。
在目前的大部分協(xié)同過濾推薦算法中,主要是通過計算用戶或資源間的相似度,而忽略了用戶興趣的動態(tài)變化。但在實際生活中,用戶在不同的時間內(nèi),興趣愛好會發(fā)生很大的變化。此時,現(xiàn)有的推薦系統(tǒng)無法及時反映出用戶興趣變化的過程,一旦用戶的興趣發(fā)生改變,可能導(dǎo)致推薦的個性化資源或者營銷方案在很大程度上偏離用戶的本質(zhì)需求。因此,文獻[7]提出基于訪問時間的數(shù)據(jù)加權(quán)算法以解決傳統(tǒng)協(xié)同過濾算法的不足。
算法將基于時間的數(shù)據(jù)加權(quán)[7]做如下定義:
(2)
其中,Dui表示用戶u訪問資源i的時間與用戶u最早訪問某資源的時間間隔;Lu表示用戶u使用推薦系統(tǒng)的時間跨度,即該用戶最早訪問某資源的時間與最近訪問某資源的時間間隔;a∈(0,1)稱為權(quán)重增長指數(shù),改變a的值可以調(diào)整權(quán)重隨訪問時間變化的速度。a越大權(quán)重增長速度越快,a的大小可以影響到算法性能。
式2中,Wtime(u,i)的值隨著用戶u訪問資源時間間隔呈線性變化,用戶近期訪問數(shù)據(jù)的權(quán)重總是大于早期訪問數(shù)據(jù)的權(quán)重,從而突出了近期數(shù)據(jù)的重要性。
在實際生活中,不同用戶的興趣變化速度和規(guī)律不同,此外用戶的興趣經(jīng)常存在反復(fù),所以早期訪問的資源對于用戶生成個性化推薦也很重要。如果只單純地使用基于時間的數(shù)據(jù)權(quán)重,而削弱推薦系統(tǒng)中早期資源的作用,極有可能對推薦效果產(chǎn)生負面影響。即用戶觀看的時長在一定程度上可以反映用戶的喜好程度。為此,本項目提出基于興趣相似度的數(shù)據(jù)權(quán)重,如下:
(3)
其中,Tui表示用戶u選擇產(chǎn)品i的次數(shù);Du表示用戶u做出選擇的總次數(shù),且Tui≤Du;a∈(0,1)為權(quán)重增長因子。在電視節(jié)目推薦的應(yīng)用中,Tui為用戶u觀看節(jié)目i的時長,Du為用戶u觀看的總時長。
將兩個權(quán)重函數(shù)用式4進行矩陣的融合。
Wfusion=β×Wtime(u,i)+(1-β)×Winterest(u,i)(4)
其中,β∈[0,1],β和1-β分別代表兩種權(quán)重值所占的比例,通過選擇合適的β將兩種加權(quán)方法結(jié)合起來,從而進一步提高推薦算法的準確率。
為了提高模型精確度,選擇向量的夾角余弦進行相似度度量,計算產(chǎn)品的相似度矩陣。夾角余弦相似度度量如式4所示。假設(shè)把用戶評分看作n維空間上的向量,兩個用戶x,y的評分向量分別為X和Y,則它們之間的余弦相似性[12]計算如下:
(5)
其中,Rx,c、Ry,c分別為用戶x和用戶y對項目c的評分。
由于考慮到不同用戶的評價標度的不同,通過對項目的平均評分對余弦相似度進行方法改進。設(shè)用戶x和y共同評分項目集合用Ix,y表示,則用戶x和用戶y之間的相似性計算如式6所示。
sim(x,y)=
(6)
Python作為一種編譯型語言,擁有大量的第三方庫,可用來方便地讀取、切片、轉(zhuǎn)置、計算數(shù)據(jù)。給定模型中數(shù)據(jù)與數(shù)據(jù)之間的關(guān)聯(lián)與計算方法,作為Python的輸入數(shù)據(jù)即可進行訓(xùn)練,實現(xiàn)模型。為了更直觀地表述模型的實現(xiàn)方法,提出的數(shù)據(jù)處理流程如圖1所示。
圖1 數(shù)據(jù)處理流程
考慮到通常的原始數(shù)據(jù)中存在著大量錯誤的信息與無用的信息,這些信息會影響處理的效率與模型的訓(xùn)練效果。因此,在讀取原始數(shù)據(jù)后,需要先進行預(yù)處理[13]。
原始信息中通常包含的無用信息有無用的標簽、同義詞以及無用的時間信息,這里無用的時間信息不包括后期模型所需的訪問時間。因此在圖1中,本項目組首先使用PHP對原始數(shù)據(jù)進行過濾與轉(zhuǎn)化,生成格式化后的數(shù)據(jù)進行下一步處理。
格式化后的數(shù)據(jù)中可能仍然存在重復(fù)的記錄,而且數(shù)據(jù)集中關(guān)鍵信息的單位可能也存在不統(tǒng)一的問題,因此還需要將數(shù)據(jù)輸入MariaDB進行合并去重的處理。同時,也要將模型所用到的不同數(shù)據(jù)關(guān)聯(lián)起來,生成統(tǒng)一的數(shù)據(jù)集。
數(shù)據(jù)集中還有可能存在著缺值的情況。常見的缺值填充方法有:均值、眾數(shù)填充,線性回歸填充與直接剔除[14]。由于直接剔除會影響缺值記錄對用戶產(chǎn)生的影響,因此可根據(jù)項目對精準度的要求,使用均值、眾數(shù)填充或線性回歸填充[15]。
在完成對數(shù)據(jù)的處理之后,將數(shù)據(jù)輸入模型,對模型進行訓(xùn)練,計算出用戶與物品之間的相似度。最后將測試用的數(shù)據(jù)集輸入模型,即可得出針對每個用戶的個性化推薦結(jié)果。
本節(jié)將以電視產(chǎn)品個性化推薦為例,基于Python,結(jié)合用戶的歷史收視數(shù)據(jù)對每個用戶進行個性化推薦。再利用測試集數(shù)據(jù)對推薦結(jié)果進行驗證,與傳統(tǒng)協(xié)同過濾模型進行對比,得出改進前后模型的精度差異。
實驗采用的硬件環(huán)境:Inter(R) Core(TM) i7 2.8 GHz 四核處理器;軟件環(huán)境:操作系統(tǒng)macOS 10.13,開發(fā)環(huán)境Python3.6。實驗過程中根據(jù)每個用戶在數(shù)據(jù)集中的訪問記錄為其計算推薦集,如果推薦集中某個資源i出現(xiàn)在該用戶數(shù)據(jù)集中的訪問記錄里,則表示生成了一個正確推薦[16]。為此,使用評估系統(tǒng)效果的準確率(precision)、召回率(recall)和推薦覆蓋率(coverage),作為對比傳統(tǒng)推薦算法和改進推薦算法的精度標準[17]。
由于融合時間與興趣相似度的協(xié)同過濾模型反映了用戶興趣隨時間變化的特征,因此,分析兩種算法的結(jié)果后,得到圖2和圖3所示的用戶電視產(chǎn)品信息推薦表。
圖2 傳統(tǒng)協(xié)同過濾推薦結(jié)果
圖3 融合時間與興趣相似度的協(xié)同過濾模型推薦結(jié)果
為了比較兩種模型之間用戶興趣變化的大小,設(shè)計了3組實驗,將它們的推薦效果與傳統(tǒng)的基于物品的協(xié)同過濾算法進行比對。
實驗1:不同β值的融合比例對模型性能的影響。
為了獲得式4中最優(yōu)的β值,表1給出了融合時間與興趣相似度的協(xié)同過濾模型在不同情況下β值由0.3依次增長到0.8時,模型的準確率、召回率和推薦覆蓋率。
表1 不同β值的融合比例對準確率、
通過實驗發(fā)現(xiàn)β值的選取對模型效果有較大影響,得到β=0.6時模型在準確率、召回率、推薦覆蓋率上性能較優(yōu)。這是由于它結(jié)合了兩種加權(quán)方法的優(yōu)點,不僅能突出近期用戶觀看電視產(chǎn)品信息的重要性,又避免了早期所觀看的電視產(chǎn)品信息被忽略的問題,從而更準確地反映了用戶的興趣變化趨勢。
實驗2:分析不同k值的推薦數(shù)量對模型性能的影響。
表2給出了融合時間與興趣相似度的協(xié)同過濾模型在不同推薦數(shù)量k值下的推薦準確率、召回率、推薦覆蓋率。其中推薦數(shù)量k分別取值為5,10,20,30,40。
表2 不同k值的推薦數(shù)量對準確率、召回
通過實驗發(fā)現(xiàn),推薦數(shù)量k的取值對模型有較大影響,且推薦覆蓋率與召回率隨著k的增大而提高,而準確率則隨著k的增大而降低。得到k=10時模型在準確率、召回率、推薦覆蓋率上性能要好于指定的推薦數(shù)量k=20的情況。這說明向潛在用戶推薦過多的電視產(chǎn)品可能無法真實反映用戶的當前興趣,推薦數(shù)量過少則會使推薦出的電視產(chǎn)品具有較大的隨機性,難于實現(xiàn)個性化推薦。
實驗3:模型性能評估。
評估傳統(tǒng)協(xié)同過濾模型和融合時間與興趣相似度的推薦模型的運行時間、準確率。實驗結(jié)果如表3所示。
表3 兩種協(xié)同過濾模型的評測指標對比 (β=0.6,k=10)
模型運行時間/s準確率/%傳統(tǒng)協(xié)同過濾模型358.850.183 5融合時間與興趣相似度的協(xié)同過濾模型564.360.304 9
觀察表3發(fā)現(xiàn),融合時間與興趣相似度的協(xié)同過濾模型在準確率上優(yōu)于傳統(tǒng)協(xié)同過濾模型。這是因為融合時間和興趣相似度模型注重了用戶興趣隨時間的變化,避免了用戶早期觀看的電視節(jié)目數(shù)據(jù)被忽略的問題。但是融合時間與興趣相似度的協(xié)同過濾模型運行花費的時間稍高于傳統(tǒng)的協(xié)同過濾模型。其原因是融合時間與興趣相似度的協(xié)同過濾模型在計算電視產(chǎn)品間相似度矩陣和初步推薦矩陣時花費的時間比傳統(tǒng)的協(xié)同過濾模型長。
文中提出了一種基于時間權(quán)重與興趣相似度的改進協(xié)同過濾模型。首先提出傳統(tǒng)協(xié)同過濾在實際應(yīng)用時的問題,其次針對時間與興趣相似度問題提出了改進型模型,最后將模型使用Python語言實現(xiàn),并應(yīng)用在電視產(chǎn)品推薦中,證明了改進后模型的命中率比傳統(tǒng)模型的更高。