李散散,陳小榮
(廣州工商學(xué)院 工學(xué)院,廣東 廣州 510850)
大數(shù)據(jù)時(shí)代用戶獲取信息越來(lái)越方便,同時(shí)用戶也能感受到大數(shù)據(jù)技術(shù)帶來(lái)的一些困擾,如信息過(guò)載出現(xiàn)的信息冗余和人們對(duì)信息的依賴性。舉個(gè)生活中常見的例子,在電子商務(wù)領(lǐng)域,各類購(gòu)物平臺(tái)上陳列著不計(jì)其數(shù)的商品,用戶可以借助搜索引擎查找自己感興趣的商品,與此同時(shí)用戶也常會(huì)遇到選擇困難的情況,特別是在用戶沒(méi)有明確需求的情況下,這種困擾會(huì)更加明顯。此時(shí)強(qiáng)大的搜索引擎也無(wú)計(jì)可施,不能很好地幫助用戶篩選商品,就在此時(shí)推薦系統(tǒng)應(yīng)運(yùn)而生。推薦系統(tǒng)是一種可以借助一定的算法分析用戶歷史數(shù)據(jù)獲取用戶偏好和需求,然后主動(dòng)推薦給用戶感興趣的信息,從而減少用戶查找時(shí)間的工具。如,eBay的“興趣購(gòu)物”功能,可以根據(jù)購(gòu)物者的瀏覽和購(gòu)物行為,為每一個(gè)購(gòu)物者提供用戶行為畫像,然后給用戶打造一個(gè)私人訂制的頁(yè)面。這樣一來(lái)電子商務(wù)平臺(tái)就可以解決用戶購(gòu)物時(shí)需瀏覽大量無(wú)關(guān)信息和商品所帶來(lái)的困擾,從而優(yōu)化用戶購(gòu)物體驗(yàn),實(shí)現(xiàn)精準(zhǔn)營(yíng)銷。
協(xié)同過(guò)濾推薦算法通常分為兩種類型:基于用戶的協(xié)同過(guò)濾算法和基于項(xiàng)目的協(xié)同過(guò)濾算法。該算法的基本思想是“物以類聚,人以群分”,主要是通過(guò)搜集用戶在線上的歷史記錄數(shù)據(jù),建立用戶偏好模型。然后通過(guò)計(jì)算用戶或項(xiàng)目之間的相似度來(lái)查找與目標(biāo)用戶相似的用戶群或者目標(biāo)用戶可能感興趣的項(xiàng)目。最后通過(guò)計(jì)算用戶對(duì)項(xiàng)目的預(yù)測(cè)評(píng)分來(lái)生成推薦列表。下面以給用戶推薦電影為例闡述該算法的原理,表1記錄了5個(gè)用戶對(duì)5部電影的評(píng)分情況,其中行是電影名,列是用戶。從表格中的數(shù)據(jù)可以看出Tom、Bob和Lucy三個(gè)用戶具有相似的興趣偏好,因?yàn)樗麄內(nèi)齻€(gè)對(duì)Léon、Supper man、Titanic三部電影有相同的評(píng)分,因此在給用戶Lucy推薦電影時(shí)會(huì)推薦Jurassic park這部電影,即與用戶Lucy相似度高的用戶喜歡的而用戶Lucy并沒(méi)有觀看的電影。而對(duì)于新用戶Amy和新電影Homealone則無(wú)法進(jìn)行推薦,因?yàn)樵u(píng)分很少或者沒(méi)有評(píng)分,從而不能找到與其有一定相似度的用戶或電影,這就是協(xié)同過(guò)濾推薦算法存在的用戶冷啟動(dòng)和項(xiàng)目冷啟動(dòng)問(wèn)題。即,不能給新用戶做個(gè)性化推薦,也不能將新項(xiàng)目推薦給可能對(duì)它感興趣的用戶。
表1 用戶—電影評(píng)分
1.2.1 建立用戶-項(xiàng)目評(píng)分矩陣
協(xié)同過(guò)濾推薦算法首先要收集用戶偏好,這可以通過(guò)整理用戶行為歷史記錄而得到,例如用戶對(duì)項(xiàng)目的評(píng)分、投票、轉(zhuǎn)發(fā)、評(píng)論、購(gòu)買、點(diǎn)擊、保存等。然后對(duì)用戶行為預(yù)處理之后,形成二維矩陣,兩個(gè)維度分別是用戶列表和項(xiàng)目列表,值代表用戶對(duì)項(xiàng)目的偏好。如圖1所示,r表示用戶對(duì)項(xiàng)目的評(píng)分,分值的大小表示用戶對(duì)項(xiàng)目的喜歡程度,如果用戶對(duì)項(xiàng)目沒(méi)有評(píng)分,則記為0或者φ。這些無(wú)評(píng)分?jǐn)?shù)據(jù)的元素占整個(gè)矩陣空間的比率就是該數(shù)據(jù)的稀疏度,數(shù)據(jù)的稀疏度對(duì)推薦質(zhì)量有著直接的影響。例如:有個(gè)user、個(gè)item、共個(gè)評(píng)分,數(shù)據(jù)的稀疏度計(jì)算公式為:1-(/×)。
圖1 用戶—項(xiàng)目評(píng)分矩陣
1.2.2 計(jì)算相似度
關(guān)于相似度的計(jì)算,目前的方法基本都是通過(guò)計(jì)算兩個(gè)向量的距離來(lái)衡量相似度的大小,距離越近越相似。例如,在圖1的用戶—項(xiàng)目評(píng)分矩陣中,我們可以將一個(gè)用戶對(duì)所有項(xiàng)目的評(píng)分,即矩陣中的一行當(dāng)作一個(gè)向量來(lái)計(jì)算不同用戶之間的相似度,同理,也可以將所有用戶對(duì)同一個(gè)項(xiàng)目的評(píng)分,即矩陣中的一列看作一個(gè)向量來(lái)計(jì)算不同項(xiàng)目之間的相似度。相似度的計(jì)算方法主要有以下幾種:
(1)余弦相似度計(jì)算。余弦相似度是通過(guò)計(jì)算兩個(gè)向量夾角的余弦值來(lái)衡量用戶或項(xiàng)目之間的差異大小。當(dāng)兩個(gè)向量的夾角為0°時(shí),余弦值為1,表明兩個(gè)用戶或項(xiàng)目的相似度最高。項(xiàng)目之間的相似度計(jì)算公式為:
其中,U、U分別表示對(duì)項(xiàng)目和項(xiàng)目評(píng)分的用戶集合,r,、r,分別表示用戶對(duì)項(xiàng)目的評(píng)分、用戶對(duì)項(xiàng)目的評(píng)分。
(2)修正的余弦相似度。余弦相似度主要是從方向上區(qū)分差異性,對(duì)絕對(duì)的數(shù)值不敏感,因而不能反映每個(gè)維度上數(shù)值的差異,這就導(dǎo)致結(jié)果的誤差,需要修正。舉個(gè)例子,用戶對(duì)電影的評(píng)價(jià)(1~5分),兩個(gè)用戶A、B對(duì)兩部電影的評(píng)分分別是(1,2)(4,5)。使用余弦相似度計(jì)算的結(jié)果是0.98,此數(shù)值表明這兩個(gè)用戶極為相似。但從具體的評(píng)分來(lái)看用戶A似乎并不喜歡這兩部電影,相對(duì)比,B用戶則比較喜歡。
還有一種情況是,用戶在給項(xiàng)目評(píng)分時(shí),由于沒(méi)有一個(gè)統(tǒng)一的評(píng)分準(zhǔn)則,用戶的打分尺度會(huì)因人而異。有些用戶要求苛刻,整體打分可能偏低;而有些用戶態(tài)度隨和,整體打分偏高。這種用戶態(tài)度引起的評(píng)分差異不利于構(gòu)建合理有效的預(yù)測(cè)評(píng)分模型。因此,為了解決以上評(píng)分習(xí)慣的問(wèn)題,引入用戶在所有歷史項(xiàng)目中的平均評(píng)分,得到以下公式:
(3)Pearson相關(guān)系數(shù)。Pearson相關(guān)系數(shù)反映了兩個(gè)變量之間的線性相關(guān)性,在推薦場(chǎng)景中計(jì)算的是對(duì)項(xiàng)目和項(xiàng)目都參與評(píng)分的用戶之間相似度。具體計(jì)算公式為:
這里需要注意的是,修正的余弦相似度和Pearson相關(guān)系數(shù)在公式上存在細(xì)微差別,體現(xiàn)在公式的分母上。其中,修正的余弦相似度的分母是分別計(jì)算對(duì)項(xiàng)目或項(xiàng)目有過(guò)評(píng)分的用戶,Pearson相關(guān)系數(shù)的分母則是計(jì)算對(duì)項(xiàng)目和項(xiàng)目均有評(píng)分的用戶。
(4)本文改進(jìn)的相似度計(jì)算方法。項(xiàng)目的熱門程度或用戶活躍度對(duì)相似度的計(jì)算有一定的影響,可以假設(shè),衡量用戶之間相似度時(shí),有以下兩種情況:即,1)兩個(gè)用戶對(duì)某熱門項(xiàng)目有較高評(píng)分;2)這兩個(gè)用戶對(duì)某冷門項(xiàng)目有同樣評(píng)分。我們可以判定第二種情況更能說(shuō)明這兩個(gè)用戶具有相似的偏好。同理,活躍用戶對(duì)項(xiàng)目相似度的貢獻(xiàn)應(yīng)該也小于不活躍的用戶?;谶@個(gè)觀點(diǎn),我們?cè)谟?jì)算項(xiàng)目之間相似度時(shí)加入log(1+())來(lái)對(duì)用戶活躍度做一定懲罰,修正后的項(xiàng)目相似度計(jì)算公式為:
其中,()是用戶評(píng)過(guò)分的項(xiàng)目集合,()表示對(duì)項(xiàng)目評(píng)分的用戶集合,r表示用戶對(duì)項(xiàng)目的評(píng)分,dis計(jì)算的是兩個(gè)評(píng)分的絕對(duì)值差。
1.2.3 生成推薦列表
利用上述相似度計(jì)算方法計(jì)算每個(gè)項(xiàng)目和目標(biāo)項(xiàng)目的相似度后,對(duì)這些相似度進(jìn)行從高到低排序,篩選相似度最高的(最鄰近的)個(gè)項(xiàng)目,即候選集。
本文使用基于項(xiàng)目的協(xié)同過(guò)濾推薦算法開展實(shí)驗(yàn)。本實(shí)驗(yàn)的數(shù)據(jù)集是某電商網(wǎng)站用戶訂單數(shù)據(jù)集,該數(shù)據(jù)集包括用戶信息和購(gòu)買產(chǎn)品信息,我們將用戶購(gòu)買商品的次數(shù)轉(zhuǎn)化為用戶評(píng)分,評(píng)分值為1~5分。具體轉(zhuǎn)化的原則是:如果用戶A購(gòu)買商品的次數(shù)為1,則記為用戶A對(duì)商品的評(píng)分為1分,以此類推,當(dāng)用戶購(gòu)買商品的次數(shù)達(dá)到5次則為5分,分值越高表示用戶對(duì)商品的喜歡程度越高。本實(shí)驗(yàn)選取的數(shù)據(jù)集包含610個(gè)用戶對(duì)9 724個(gè)商品的100 836條評(píng)分。為了更好地評(píng)價(jià)模型,我們隨機(jī)將數(shù)據(jù)集劃分成訓(xùn)練集和測(cè)試集,比例為3:1,訓(xùn)練集用來(lái)產(chǎn)生實(shí)驗(yàn)結(jié)果,測(cè)試集用來(lái)驗(yàn)證實(shí)驗(yàn)結(jié)果。
步驟1:建立用戶-項(xiàng)目評(píng)分矩陣。
步驟2:通過(guò)相似度計(jì)算方法,找到鄰近項(xiàng)目。
步驟3:采用TOP-N法對(duì)候選集中項(xiàng)目相似度進(jìn)行排序,得到和項(xiàng)目最相似的前個(gè)項(xiàng)目集合。
步驟4:對(duì)最鄰近的個(gè)項(xiàng)目進(jìn)行用戶評(píng)分預(yù)測(cè)。
步驟5:根據(jù)預(yù)測(cè)評(píng)分值與用戶評(píng)分平均值的關(guān)系,生成推薦列表。
在完成實(shí)驗(yàn)之后我們利用一些常用度量指標(biāo)評(píng)價(jià)推薦系統(tǒng)預(yù)測(cè)的準(zhǔn)確性,例如,均方根誤差、召回率和準(zhǔn)確率。以下為具體的定義和公式。
2.3.1 均方根誤差
均方根誤差(RMSE),它是通過(guò)計(jì)算若干個(gè)預(yù)測(cè)值和真實(shí)值偏差的平方和與觀測(cè)次數(shù)的比值的平方根對(duì)預(yù)測(cè)效果進(jìn)行綜合評(píng)價(jià)。均方根誤差對(duì)于一組測(cè)量中特大或特小誤差比較敏感,所以它能夠很好地反映出測(cè)量的精準(zhǔn)度。具體計(jì)算公式如式(6)。其中,是觀測(cè)次數(shù),p是預(yù)測(cè)值,r是真實(shí)值,從公式可以看出RMSE的取值與推薦質(zhì)量成反比。
2.3.2 召回率
召回率(Recall)表示推薦列表中有多少被真實(shí)預(yù)測(cè)到了,是推薦列表中用戶喜歡的項(xiàng)目數(shù)量與用戶所有喜歡的項(xiàng)目的比值。它能夠直接反映出推薦結(jié)果的精準(zhǔn)度,計(jì)算公式如式(7)。其中,R和T分別表示給用戶推薦的項(xiàng)目集合、用戶真實(shí)喜歡的項(xiàng)目集合。
2.3.3 準(zhǔn)確率
準(zhǔn)確率(Precision)是指推薦系統(tǒng)給用戶的推薦列表中用戶實(shí)際選擇的項(xiàng)目與所有被推薦項(xiàng)目的比例。計(jì)算公式為:
2.3.4 平均絕對(duì)誤差
平均絕對(duì)誤差(MAE)是指預(yù)測(cè)值和觀測(cè)值之間絕對(duì)誤差的平均值。MAE值越小,預(yù)測(cè)結(jié)果越準(zhǔn)確,它的計(jì)算公式為式(9)。其中,r表示用戶對(duì)項(xiàng)目的實(shí)際評(píng)分,p表示用戶對(duì)項(xiàng)目的預(yù)測(cè)評(píng)分,為預(yù)測(cè)次數(shù)。
通過(guò)整理實(shí)驗(yàn)數(shù)據(jù),我們得出四種相似性度量方法在推薦的準(zhǔn)確率、召回率、均方根誤差和平均絕對(duì)誤差四個(gè)方面的差異,以及值(最近鄰居數(shù)量)對(duì)推薦結(jié)果的影響。根據(jù)實(shí)驗(yàn)數(shù)據(jù)制作了圖2至圖5,如下所示。
圖2 不同相似度計(jì)算方法的準(zhǔn)確率
圖3 不同相似度計(jì)算方法的召回率
圖4 不同相似度計(jì)算方法的均方根誤差
圖5 不同相似度計(jì)算方法的平均絕對(duì)誤差
2.4.1 實(shí)驗(yàn)結(jié)果
結(jié)果1:從圖2和圖3看,改進(jìn)的相似度計(jì)算方法的準(zhǔn)確率和召回率明顯優(yōu)于其他相似度計(jì)算方法,特別是相對(duì)于余弦相似度的方法而言。同時(shí)我們也發(fā)現(xiàn)修正的余弦相似度和Pearson相關(guān)系數(shù)的準(zhǔn)確率和召回率較為接近。
結(jié)果2:對(duì)于不同最近鄰居數(shù)量,即不同值(={10,20,30,…,100})對(duì)推薦準(zhǔn)確率、召回率、RMSE和MAE的影響。從圖中可以看出,最近鄰居數(shù)量對(duì)四種相似性度量方法的評(píng)價(jià)指標(biāo)均有影響。其中對(duì)RMSE和MAE的影響較大,對(duì)召回率的影響最小。相比而言,最近鄰居數(shù)量對(duì)修正的余弦相似度、Pearson相關(guān)系數(shù)和本文提出的改進(jìn)的相似度計(jì)算方法的影響較小。
結(jié)果3:從圖4和圖5來(lái)看,4種方法的均方根誤差和平均絕對(duì)誤差整體會(huì)隨著最近鄰數(shù)量的增加有增加的趨勢(shì),余弦相似度的方法表現(xiàn)得更加明顯。而修正的余弦相似度、Pearson相關(guān)系數(shù)和本文改進(jìn)的相似度計(jì)算方法的RMSE和MAE比較接近,它們這3種方法的預(yù)測(cè)精準(zhǔn)度明顯比余弦相似度方法高,其中本文改進(jìn)的相似度計(jì)算方法的數(shù)據(jù)更加穩(wěn)定。
2.4.2 實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)結(jié)果顯示本文提出的相似度計(jì)算方法在四個(gè)指標(biāo)中均具有較好的表現(xiàn),但效果不夠顯著,究其原因主要有以下兩個(gè)因素:
如何緩解數(shù)據(jù)稀疏性問(wèn)題呢?很多研究者針對(duì)這一問(wèn)題提出了改進(jìn)的方法,主要可以歸為三類:數(shù)據(jù)填充、聚類方法和矩陣分解。以數(shù)據(jù)填充方法為例,可以通過(guò)預(yù)測(cè)值填充的方法對(duì)未評(píng)分的項(xiàng)目填充數(shù)值,該方法主要從協(xié)同過(guò)濾推薦算法的兩個(gè)分類出發(fā),預(yù)測(cè)用戶對(duì)未評(píng)分項(xiàng)目的評(píng)分。首先根據(jù)項(xiàng)目之間的相似度和用戶對(duì)項(xiàng)目的個(gè)鄰近項(xiàng)目的評(píng)分來(lái)預(yù)測(cè)對(duì)未評(píng)分項(xiàng)目的評(píng)分,然后將預(yù)測(cè)評(píng)分填充到項(xiàng)目—評(píng)分矩陣中,預(yù)測(cè)評(píng)分的計(jì)算公式見式(5)。如果出現(xiàn)用戶對(duì)項(xiàng)目的個(gè)最鄰近項(xiàng)目也未評(píng)分的情況,即r為空,則根據(jù)用戶之間的相似度,以及與目標(biāo)用戶最鄰近的個(gè)用戶對(duì)項(xiàng)目的評(píng)分,來(lái)預(yù)測(cè)用戶對(duì)項(xiàng)目的評(píng)分,然后將預(yù)測(cè)評(píng)分?jǐn)?shù)據(jù)再次填充到矩陣中,計(jì)算公式見式(10)。將預(yù)測(cè)評(píng)分?jǐn)?shù)據(jù)填充到矩陣后,再次進(jìn)行項(xiàng)目之間相似度的計(jì)算,然后重新生成推薦列表。最近鄰居數(shù)量的多少會(huì)影響最近鄰居與目標(biāo)用戶或目標(biāo)項(xiàng)目的相似度,因此在進(jìn)行數(shù)據(jù)填充時(shí)值選擇不宜過(guò)大。
(2)項(xiàng)目本身質(zhì)量。影響實(shí)驗(yàn)結(jié)果的另一個(gè)原因是,在上述計(jì)算相似度的過(guò)程中,僅僅從已有評(píng)分判斷用戶興趣偏好,而沒(méi)有考慮到項(xiàng)目本身的質(zhì)量也會(huì)影響用戶評(píng)分。因此,在相似度計(jì)算時(shí)應(yīng)該對(duì)用戶評(píng)分?jǐn)?shù)據(jù)的離散性進(jìn)行加權(quán),糾正項(xiàng)目質(zhì)量所帶來(lái)的誤差。在統(tǒng)計(jì)學(xué)中,通常用極差、四分位差、方差、標(biāo)準(zhǔn)差和變異系數(shù)等描述一組數(shù)據(jù)離散程度。這里用項(xiàng)目評(píng)分的方差來(lái)衡量評(píng)分?jǐn)?shù)據(jù)的離散性,方差計(jì)算公式如式(11),它使用平方的方式求和后取平均值,能夠避免正負(fù)數(shù)的相互抵消。方差越小說(shuō)明數(shù)據(jù)對(duì)平均值的偏離越小,評(píng)分?jǐn)?shù)據(jù)則越穩(wěn)定。為了更精確地計(jì)算項(xiàng)目之間的相似度,引入離散系數(shù),項(xiàng)目的離散系數(shù)的計(jì)算公式如式(12)。
將離散系數(shù)(式(12))與Pearson相關(guān)系數(shù)計(jì)算公式相結(jié)合得到相似度計(jì)算公式(13),該公式在Pearson相關(guān)系數(shù)的基礎(chǔ)上,融入對(duì)項(xiàng)目質(zhì)量的加權(quán),利用該公式計(jì)算項(xiàng)目之間的相似度會(huì)更加精準(zhǔn),因而理論上能有效提高推薦質(zhì)量,這仍需要后續(xù)研究進(jìn)行驗(yàn)證。
本文圍繞協(xié)同過(guò)濾推薦算法開展研究,借助電商平臺(tái)數(shù)據(jù)集,通過(guò)實(shí)驗(yàn)對(duì)比了四種不同相似性度量方法對(duì)推薦結(jié)果的影響。從實(shí)驗(yàn)結(jié)果看,改進(jìn)的相似度計(jì)算方法在準(zhǔn)確率、召回率、均方根誤差和平均絕對(duì)誤差這四個(gè)方面有更好的表現(xiàn),此外,修正的余弦相似度與Pearson相關(guān)系數(shù)計(jì)算方法的推薦效果明顯比余弦相似度計(jì)算方法的推薦效果好。本實(shí)驗(yàn)因沒(méi)有考慮數(shù)據(jù)稀疏性和項(xiàng)目本身質(zhì)量的問(wèn)題影響了推薦的準(zhǔn)確性,故在此基礎(chǔ)上分析了實(shí)驗(yàn)改進(jìn)的方法和思路,作為后續(xù)研究的方向。