張凱輝,周志平,趙衛(wèi)東
同濟(jì)大學(xué) 電子信息與工程學(xué)院,上海 200093
近年來(lái),隨著大數(shù)據(jù)和服務(wù)推薦技術(shù)的不斷發(fā)展,針對(duì)每位用戶(hù)的個(gè)性化推薦應(yīng)運(yùn)而生。因此,在基于大數(shù)據(jù)時(shí)代的背景下,利用收集到的海量用戶(hù)行為數(shù)據(jù),設(shè)計(jì)出高效的推薦算法,為每位目標(biāo)用戶(hù)提供精準(zhǔn)高效的個(gè)性化服務(wù),便成了要急迫解決的問(wèn)題[1-2]。
本文研究的協(xié)同過(guò)濾推薦算法,其原理為:找出數(shù)據(jù)集中與目標(biāo)用戶(hù)興趣愛(ài)好、性格特征或者社會(huì)屬性相似甚至相同的用戶(hù),將這些用戶(hù)所感興趣的項(xiàng)目推薦給目標(biāo)用戶(hù)。但是,目前傳統(tǒng)的協(xié)同過(guò)濾算法仍然有著許多值得優(yōu)化的地方。本文重點(diǎn)研究了該算法出現(xiàn)的數(shù)據(jù)稀疏性問(wèn)題、冷啟動(dòng)問(wèn)題和實(shí)時(shí)性問(wèn)題。如何更好緩解或解決以上問(wèn)題,便成了優(yōu)化協(xié)同過(guò)濾算法的關(guān)鍵[3]。
本文針對(duì)協(xié)同過(guò)濾算法出現(xiàn)的以上問(wèn)題,提出了一系列的改進(jìn)方法:首先采用密度峰值聚類(lèi)算法(CFDP)對(duì)項(xiàng)目進(jìn)行聚類(lèi)處理[1],并用Slope-One算法進(jìn)行數(shù)據(jù)填充以解決數(shù)據(jù)稀疏和冷啟動(dòng)問(wèn)題;在計(jì)算推薦項(xiàng)目評(píng)分時(shí)引入時(shí)間因子來(lái)對(duì)傳統(tǒng)協(xié)同過(guò)濾算法的評(píng)分步驟進(jìn)行優(yōu)化,保證了推薦算法的推薦內(nèi)容具有實(shí)時(shí)性,可以給予用戶(hù)更準(zhǔn)確的推薦[4]。
算法的基本思想是:根據(jù)已有的用戶(hù)歷史行為數(shù)據(jù),構(gòu)造協(xié)同過(guò)濾矩陣,其中每一行數(shù)據(jù)代表該用戶(hù)在所有項(xiàng)目上的評(píng)分情況;每一列則代表該項(xiàng)目獲取的評(píng)分情況。由于算法默認(rèn)具有相似瀏覽記錄和評(píng)分行為的用戶(hù),在隨后的項(xiàng)目選擇和評(píng)價(jià)上往往也是相似的。傳統(tǒng)協(xié)同過(guò)濾算法的基本運(yùn)算流程如圖1所示[5]。
圖1 協(xié)同過(guò)濾算法流程圖
表1顯示了用戶(hù)-項(xiàng)目協(xié)同過(guò)濾評(píng)分矩陣R,該矩陣為一個(gè)m×n階的評(píng)分矩陣,代表共有m位用戶(hù)n項(xiàng)項(xiàng)目,其中用戶(hù)對(duì)項(xiàng)目的偏好程度用其對(duì)項(xiàng)目的評(píng)分rij的大小來(lái)反映。
表1 用戶(hù)-項(xiàng)目協(xié)同過(guò)濾評(píng)分矩陣
協(xié)同過(guò)濾評(píng)分矩陣中,每一個(gè)用戶(hù)的歷史數(shù)據(jù)都可以提取為一個(gè)向量,衡量?jī)擅脩?hù)的相似性即判斷兩名用戶(hù)向量的相似度。一般來(lái)說(shuō),常用的向量相似度評(píng)價(jià)指標(biāo)有:余弦相似性、Pearson相關(guān)系數(shù)以及修正余弦相似性三種,以下為詳細(xì)介紹。
(1)余弦相似性
評(píng)價(jià)用戶(hù)ui與用戶(hù)uj的余弦相似度:首先從協(xié)同過(guò)濾矩陣R中提取用戶(hù)評(píng)價(jià)向量vui和vuj,則用戶(hù)ui與用戶(hù)uj的余弦相似性為向量vui和vuj的余弦?jiàn)A角。計(jì)算方法如式(1)所示:
其中,ui?uj為兩個(gè)向量的點(diǎn)積,||ui||×||uj||則代表兩個(gè)向量模的大小乘積。
(2)Pearson相關(guān)系數(shù)
計(jì)算用戶(hù)ui與用戶(hù)uj的Pearson相關(guān)系數(shù):如式(2):
其中,Iuiuj代表用戶(hù)ui與用戶(hù)uj評(píng)論過(guò)的項(xiàng)目交集,Ruic代表用戶(hù)ui對(duì)項(xiàng)目c的評(píng)分,代表用戶(hù)ui的平均評(píng)分。
(3)修正余弦相似性
由于不同用戶(hù)打分風(fēng)格的差異,導(dǎo)致相同喜好用戶(hù)的評(píng)分期望會(huì)有很大差異,采用余弦相似度會(huì)導(dǎo)致相似度計(jì)算結(jié)果不準(zhǔn)確,修正余弦相似性在計(jì)算時(shí)不采用評(píng)分期望這一變量,很好地規(guī)避了該問(wèn)題,用戶(hù)ui與用戶(hù)uj的修正余弦相似性如式(3):
其中,Iui代表用戶(hù)ui評(píng)價(jià)過(guò)的項(xiàng)目集合,Iuiuj為用戶(hù)ui與用戶(hù)u均評(píng)論過(guò)的項(xiàng)目交集,為用戶(hù)u的平均評(píng)ji分,Ruic為用戶(hù)ui對(duì)項(xiàng)目c的評(píng)分。
一般來(lái)說(shuō),有兩種通用的方法來(lái)選取相似用戶(hù):閾值法和TOP-N法。其中,閾值法是將計(jì)算出的相似性與人為設(shè)定的相似度閾值進(jìn)行比較,若大于則將該用戶(hù)放入相似用戶(hù)集合中。TOP-N法則是對(duì)所有用戶(hù)的相似度進(jìn)行從大到小的排序,選出前N個(gè)用戶(hù)作為相似用戶(hù)。由于閾值法的閾值不好進(jìn)行設(shè)定,過(guò)大或者過(guò)小都會(huì)影響相似用戶(hù)選取的質(zhì)量,所以本文采用TOP-N法來(lái)進(jìn)行篩選。
從目標(biāo)用戶(hù)的相似用戶(hù)集合U中提取所有目標(biāo)用戶(hù)未評(píng)價(jià)過(guò)的項(xiàng)目,并預(yù)測(cè)這些項(xiàng)目的評(píng)分Puij如式(4):
(1)數(shù)據(jù)稀疏問(wèn)題
一般來(lái)說(shuō),根據(jù)數(shù)據(jù)集得出的協(xié)同過(guò)濾評(píng)分矩陣稀疏度往往非常高:一般在90%以上。因此,用這樣的數(shù)據(jù)計(jì)算出的用戶(hù)相似度往往是不準(zhǔn)確的,由此得到的相似用戶(hù)也是不準(zhǔn)確的,自然也難以得到好的推薦結(jié)果[6]。
(2)冷啟動(dòng)問(wèn)題
由于協(xié)同過(guò)濾算法是基于歷史數(shù)據(jù)來(lái)進(jìn)行推薦的,對(duì)于沒(méi)有任何歷史記錄的新用戶(hù)和新項(xiàng)目,默認(rèn)與任何用戶(hù)或項(xiàng)目的相似度都為零,推薦系統(tǒng)也就自然無(wú)法將合適的項(xiàng)目推薦給目標(biāo)用戶(hù)[7]。
(3)實(shí)時(shí)性問(wèn)題
由于用戶(hù)的喜好或需求是一個(gè)不斷變化的過(guò)程,過(guò)去的喜好與當(dāng)前的喜好可能存在較大差距。因此,將目標(biāo)用戶(hù)最近的歷史記錄與以前的歷史記錄等價(jià)看待顯然是不科學(xué)的,推薦系統(tǒng)給出的推薦也就難以滿(mǎn)足目標(biāo)用戶(hù)的當(dāng)下需求[8]。
根據(jù)大量的用戶(hù)行為數(shù)據(jù)顯示,有著相似興趣的用戶(hù),其興趣主要集中在有限的幾個(gè)類(lèi)型。因此,每位用戶(hù)的評(píng)分一般都集中在一類(lèi)或幾類(lèi)項(xiàng)目上。因此,本文選擇使用Clustering by Fast search and Find of Density Peaks(CFDP)是一種基于密度的聚類(lèi)算法,將所有項(xiàng)目分成若干個(gè)類(lèi)別。若有新的項(xiàng)目加入,還可以將其聚類(lèi)到某個(gè)大類(lèi)下面所對(duì)應(yīng)的簇。有效地解決了矩陣稀疏與項(xiàng)目冷啟動(dòng)的問(wèn)題。
算法的基本思想是:某人聚類(lèi)中心的密度要高于其周邊所有屬于該類(lèi)數(shù)據(jù)點(diǎn)的密度,且屬于該類(lèi)的數(shù)據(jù)點(diǎn)對(duì)應(yīng)的聚類(lèi)中心是距離所有聚類(lèi)中心中最近的一個(gè)。
對(duì)于每一個(gè)數(shù)據(jù)點(diǎn),要計(jì)算該點(diǎn)的兩個(gè)量:局部密度ρi和到具有更高局部密度的點(diǎn)的距離δi。
局部密度計(jì)算如下:
其中,dij該數(shù)據(jù)點(diǎn)與其他數(shù)據(jù)點(diǎn)間的距離,dc為截?cái)嗑嚯x,其值一般滿(mǎn)足可讓點(diǎn)的平均鄰居個(gè)數(shù)約為數(shù)據(jù)點(diǎn)總數(shù)的1%~2%。
距離定義如下:
計(jì)算出所有數(shù)據(jù)點(diǎn)局部密度和距離后,可根據(jù)需要的聚類(lèi)個(gè)數(shù)選定聚類(lèi)中心:設(shè)定閾值ρmin和δmin,將所有(ρi>ρmin&δi>δmin)的數(shù)據(jù)點(diǎn)定為聚類(lèi)中心,一個(gè)聚類(lèi)中心代表一個(gè)類(lèi)別。剩余未被劃為聚類(lèi)中心的點(diǎn),分別計(jì)算出每個(gè)點(diǎn)與各個(gè)聚類(lèi)中心的距離,找出距離最近的聚類(lèi)中心[9]。
Slope-One算法是一種填充矩陣空缺值的算法,其基本思想是:找出矩陣空缺值與已知數(shù)值的某種線性關(guān)系,利用線性回歸的方法計(jì)算出空缺值的大小,其具體的計(jì)算方法如下[9]。
計(jì)算項(xiàng)目i的預(yù)測(cè)評(píng)分P(u)i,首先要計(jì)算相關(guān)項(xiàng)目j的平均偏差devij,平均偏差devij的計(jì)算方法如式(7)所示:
其中,Rij為用戶(hù)u對(duì)項(xiàng)目j的評(píng)分,Uij為所有均評(píng)價(jià)過(guò)項(xiàng)目i與項(xiàng)目j的用戶(hù)集合,Ij為與項(xiàng)目i被同時(shí)評(píng)價(jià)過(guò)的項(xiàng)目集合。
項(xiàng)目i的預(yù)測(cè)評(píng)分P(u)i計(jì)算方法為:
有一種改進(jìn)方法是將sum(Uij)作為權(quán)值,這樣可以保證用戶(hù)評(píng)分次數(shù)越多的項(xiàng)目,其預(yù)測(cè)評(píng)分的可信度越高。修正后的預(yù)測(cè)評(píng)分Pw(u)i計(jì)算方法分別為:
目前來(lái)說(shuō),推薦算法引入的計(jì)算因子主要有時(shí)間因子、用戶(hù)關(guān)系以及用戶(hù)信譽(yù)度等。在當(dāng)前各種用戶(hù)行為數(shù)據(jù)集中,用戶(hù)每次行為的時(shí)間往往是會(huì)被準(zhǔn)確記錄的;記錄用戶(hù)關(guān)系以及用戶(hù)信譽(yù)度的數(shù)據(jù)集則相對(duì)較少,且有可能涉及隱私問(wèn)題。更為重要的是:推薦算法的目的是為了找出目標(biāo)用戶(hù)當(dāng)前最有可能感興趣的項(xiàng)目,即目標(biāo)用戶(hù)最近的行為數(shù)據(jù)是最具有價(jià)值的數(shù)據(jù),引入時(shí)間因子可以更好地劃分不同數(shù)據(jù)的價(jià)值。因此,本文采用引入時(shí)間因子來(lái)進(jìn)行算法優(yōu)化。
根據(jù)上文的分析,時(shí)間越近的用戶(hù)評(píng)價(jià)越可以反映當(dāng)前目標(biāo)用戶(hù)的興趣,即用戶(hù)的興趣愛(ài)好是不固定的,并在某一時(shí)間段只會(huì)對(duì)有限的幾個(gè)項(xiàng)目感興趣,并且用戶(hù)在相隔很短的時(shí)間內(nèi)具有愛(ài)好的項(xiàng)目具有更高的相似度。根據(jù)以上分析,可以定義用戶(hù)u對(duì)項(xiàng)目i評(píng)分的時(shí)間權(quán)重的計(jì)算方法為:
其中,參數(shù)α∈(0,1),通過(guò)改變?chǔ)恋闹祦?lái)調(diào)整權(quán)重大??;Te為用戶(hù)第一次進(jìn)行項(xiàng)目評(píng)價(jià)時(shí)對(duì)應(yīng)的時(shí)間,Lu表示用戶(hù)u使用該推薦系統(tǒng)的總時(shí)長(zhǎng),Ti表示用戶(hù)對(duì)項(xiàng)目i評(píng)分時(shí)對(duì)應(yīng)的時(shí)間。
但是,根據(jù)分析,用戶(hù)的興趣變化與時(shí)間應(yīng)該呈現(xiàn)已知非線性的負(fù)相關(guān)關(guān)系。根據(jù)研究,用戶(hù)的興趣變化與遺忘規(guī)律相近,因此本文采用艾賓浩斯遺忘規(guī)律作為時(shí)間因子的計(jì)算方法。則改進(jìn)的用戶(hù)u對(duì)項(xiàng)目i評(píng)分的時(shí)間權(quán)重計(jì)算方法為:
其中,每一個(gè)不同時(shí)間點(diǎn)的評(píng)分項(xiàng)都有一個(gè)不同的時(shí)間權(quán)重,距離當(dāng)前時(shí)間越近的評(píng)分時(shí)間權(quán)重越大[10]。
本文提出的改進(jìn)協(xié)同過(guò)濾推薦算法,首先采用CFDP算法對(duì)項(xiàng)目進(jìn)行聚類(lèi),并用Slope-One算法進(jìn)行數(shù)據(jù)填充,有效緩解了傳統(tǒng)協(xié)同過(guò)濾算法的數(shù)據(jù)稀疏與冷啟動(dòng)問(wèn)題。在計(jì)算預(yù)測(cè)評(píng)分的時(shí)候又引入了時(shí)間因子,使得對(duì)項(xiàng)目的評(píng)分更側(cè)重于參考最近的數(shù)據(jù)。改進(jìn)算法的具體流程如圖2所示[11-12]。
圖2 改進(jìn)協(xié)同過(guò)濾算法流程圖
本文針對(duì)傳統(tǒng)協(xié)同過(guò)濾推薦算法存在的一系列問(wèn)題,采用CFDP聚類(lèi)算法,將相似的項(xiàng)目歸為一類(lèi),以解決冷啟動(dòng)問(wèn)題;同時(shí),聚類(lèi)算法縮減了協(xié)同過(guò)濾評(píng)分矩陣的大小,加快了后面數(shù)據(jù)填充的效率。針對(duì)數(shù)據(jù)稀疏的問(wèn)題,本文采用Slope-One算法進(jìn)行數(shù)據(jù)填充,填充過(guò)后,增加了不同用戶(hù)之間共同評(píng)分過(guò)的項(xiàng)目數(shù)量,使得在計(jì)算用戶(hù)相似性時(shí)有更多的數(shù)據(jù)可以利用,計(jì)算出的結(jié)果也就更為可靠。
由于本文提出的算法為推薦算法,需要對(duì)目標(biāo)用戶(hù)進(jìn)行實(shí)時(shí)性推薦。由于用戶(hù)對(duì)項(xiàng)目的興趣是隨著時(shí)間而不斷變化的,用戶(hù)很久以前的行為是不具有很大的參考價(jià)值的;因此,將某用戶(hù)的所有行為數(shù)據(jù)同等對(duì)待是不科學(xué)的。針對(duì)這一問(wèn)題,本文提出的改進(jìn)算法引入時(shí)間因子,將每個(gè)評(píng)分項(xiàng)前乘一個(gè)時(shí)間權(quán)重項(xiàng),從而使計(jì)算結(jié)果更貼近與最近的用戶(hù)行為數(shù)據(jù),得到更準(zhǔn)確的結(jié)果[13-14]。
本實(shí)驗(yàn)的開(kāi)發(fā)語(yǔ)言Python3,在Windows10 64位運(yùn)行。硬件配置:i5-7300HQ,2.50 GHz,內(nèi)存:16 GB。顯卡NvidiaGTX1060(6 GB),硬盤(pán)500 GB。
目前,主流的推薦系統(tǒng)最常用數(shù)據(jù)集有:MovieLens數(shù)據(jù)集、Jester數(shù)據(jù)集和Book-Crossings數(shù)據(jù)集。Jester數(shù)據(jù)集為群眾對(duì)于150個(gè)笑話的約600萬(wàn)個(gè)評(píng)分?jǐn)?shù)據(jù),由于參與評(píng)價(jià)的笑話數(shù)偏少,且沒(méi)有評(píng)分的時(shí)間數(shù)據(jù),因此該數(shù)據(jù)集不適合本文的算法仿真;同樣,Book-Crossings數(shù)據(jù)集也沒(méi)有評(píng)分時(shí)間,因此也不適合。本實(shí)驗(yàn)采用的數(shù)據(jù)集是MovieLens 1M數(shù)據(jù)集,收集了共6 000余名的用戶(hù)對(duì)近4 000部電影的100萬(wàn)余條評(píng)論,每條評(píng)論都有相應(yīng)的評(píng)論時(shí)間。評(píng)分共有1~5共5個(gè)等級(jí),等級(jí)越高代表用戶(hù)對(duì)該電影的喜愛(ài)程度越高。其中,用戶(hù)的職業(yè)有20余種,電影的種類(lèi)有18種,數(shù)據(jù)集的稀疏度為1?1 000 209/(6 040×3 952)=95.81%。
數(shù)據(jù)集共包含:users.dat、movies.dat和ratings.dat。
用戶(hù)數(shù)據(jù)分別有用戶(hù)ID、性別、年齡段、職業(yè)ID和壓縮編號(hào)5個(gè)字段,其中用戶(hù)ID以及職業(yè)ID不需要變,壓縮編號(hào)本實(shí)驗(yàn)并未用到。性別的F和M轉(zhuǎn)換成0和1,年齡轉(zhuǎn)成7個(gè)連續(xù)的數(shù)字0~6,職業(yè)轉(zhuǎn)成連續(xù)的數(shù)字1~20。
評(píng)分?jǐn)?shù)據(jù)分別有用戶(hù)ID、電影ID、用戶(hù)評(píng)分和時(shí)間戳4個(gè)字段。用戶(hù)、電影ID和用戶(hù)評(píng)分都不需要進(jìn)行處理,時(shí)間戳轉(zhuǎn)化成標(biāo)準(zhǔn)的時(shí)間格式。
電源數(shù)據(jù)則主要有電影ID、電影名稱(chēng)以及電影類(lèi)型3個(gè)字段。電影ID與名稱(chēng)不想要改變,電影類(lèi)型成連續(xù)的數(shù)字1~20。
本實(shí)驗(yàn)中,本文采用80%的數(shù)據(jù)作為訓(xùn)練集,20%的數(shù)據(jù)作為測(cè)試集進(jìn)行試驗(yàn)。
本文采用平均絕對(duì)偏差MAE來(lái)進(jìn)行算法評(píng)估,指的是所有數(shù)據(jù)與均值之差的平均值大小,計(jì)算方法如下:
其中,pi代表用戶(hù)u對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分,p′1則代表實(shí)際評(píng)分。
因此,推薦系統(tǒng)總的MAE為所有用戶(hù){u1,u2,…,um}的MAE的平均值[15],即:
本實(shí)驗(yàn)對(duì)CFDP算法中的超參數(shù)dc和時(shí)間因子中的超參數(shù)α分別取0.2和0.5,且要確定本實(shí)驗(yàn)的相似度計(jì)算方法、最近鄰用戶(hù)個(gè)數(shù)K和項(xiàng)目聚類(lèi)數(shù)量N的最優(yōu)解。
(1)確定相似度計(jì)算方法
本文在控制其他變量與流程相同的情況下,采用傳統(tǒng)的協(xié)同過(guò)濾算法,比較各相似性公式下MAE的大小。其中,最近鄰用戶(hù)個(gè)數(shù)K的取值為10~50,間隔為10,共5個(gè)值。實(shí)驗(yàn)結(jié)果如表2和圖3所示。
表2 三種相似性計(jì)算方法推薦精度
圖3 三種相似性計(jì)算方法對(duì)比圖
從圖3可以看出,當(dāng)采用修正的余弦相似性且最近鄰個(gè)數(shù)K取30的時(shí)候,推薦精度最高。因此,本實(shí)驗(yàn)采用修正的余弦相似性作為計(jì)算用戶(hù)與項(xiàng)目相似性的指標(biāo)。
(2)項(xiàng)目聚類(lèi)數(shù)目
CFDP算法通過(guò)調(diào)整dc來(lái)決定聚類(lèi)種類(lèi)數(shù)目N的大小,使其的取值分別為5、10、15、20、25、30(鄰居用戶(hù)數(shù)目K的大小恒為30),實(shí)驗(yàn)結(jié)果如圖4所示。
由圖4可知,當(dāng)聚類(lèi)數(shù)目N取20時(shí),MAE的值最小。因此,將改進(jìn)協(xié)同過(guò)濾算法的聚類(lèi)數(shù)目N固定為20。
圖4 基于項(xiàng)目協(xié)同過(guò)濾算法聚類(lèi)個(gè)數(shù)測(cè)試
(3)添加CFDP算法與Slope-One算法
確定最優(yōu)的聚類(lèi)數(shù)目N后,便要構(gòu)造新的協(xié)同過(guò)濾評(píng)分矩陣R′,并用Slope-One算法進(jìn)行數(shù)據(jù)填充。仿真后的實(shí)驗(yàn)結(jié)果如表3和圖5所示。
表3 兩種算法的平均絕對(duì)偏差比較表
圖5 傳統(tǒng)算法與未添加時(shí)間因子改進(jìn)算法實(shí)驗(yàn)結(jié)果對(duì)比圖
由圖5所示,經(jīng)過(guò)聚類(lèi)和數(shù)據(jù)填充后,推薦算法的推薦效果得到了明顯的提升。且通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),由于聚類(lèi)極大地縮減了協(xié)同過(guò)濾評(píng)分矩陣的大小,推薦算法的推薦速度也得到明顯改善。
(4)添加時(shí)間因子
時(shí)間權(quán)重超參數(shù)α的確定:
本算法里,本文采用控制超參數(shù)α的值來(lái)控制時(shí)間權(quán)重WT(u,i)的大??;且α越小,則距離當(dāng)前時(shí)間較近的用戶(hù)數(shù)據(jù)權(quán)重比率越大。確定α的仿真實(shí)驗(yàn)結(jié)果如圖6所示。
由圖6可知,當(dāng)α約為0.02時(shí),MAE最小。且由于0.02?1,說(shuō)明當(dāng)前時(shí)間較近的數(shù)據(jù)的確具有更大的參考價(jià)值。
比較三種算法的效果,實(shí)驗(yàn)結(jié)果如表4和圖7所示。
圖6 α值的影響示意圖
表4 兩種算法的平均絕對(duì)偏差比較
圖7 三種算法實(shí)驗(yàn)結(jié)果對(duì)比圖
本實(shí)驗(yàn)基于MovieLens數(shù)據(jù)集,首先采用控制變量的方法,找出了超參數(shù)鄰居個(gè)數(shù)K與項(xiàng)目聚類(lèi)數(shù)N的最優(yōu)值。隨后,本文對(duì)原算法添加CFDP聚類(lèi)算法和Slope-One算法,并進(jìn)行了對(duì)比實(shí)驗(yàn),證明填充這兩種算法的確可以提高協(xié)同過(guò)濾算法的推薦效果。最后,本文又在改進(jìn)算法的基礎(chǔ)上添加了時(shí)間因子。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的協(xié)同過(guò)濾算法的MAE值更低,即推薦效果明顯要好于傳統(tǒng)的協(xié)同過(guò)濾算法。
本文針對(duì)傳統(tǒng)協(xié)同過(guò)濾算法存在的一系列問(wèn)題,通過(guò)引入其他算法以及改良傳統(tǒng)算法的方式,有效緩解了傳統(tǒng)算法的存在的一系列問(wèn)題,得出了更好的實(shí)驗(yàn)結(jié)果。
不過(guò),協(xié)同過(guò)濾算法仍然存在很多值得改進(jìn)的點(diǎn):(1)單純地通過(guò)矩陣數(shù)據(jù)的線性關(guān)系來(lái)填充未知數(shù)據(jù)的方法是不夠嚴(yán)謹(jǐn)?shù)?。所以,可以引入其他因子:例如用?hù)的社會(huì)屬性來(lái)進(jìn)行綜合判斷。(2)本文提出的改進(jìn)算法有聚類(lèi)數(shù)目、最近鄰個(gè)數(shù)、推薦結(jié)果數(shù)目等多個(gè)超參數(shù),如何更為準(zhǔn)確地得出這些超參數(shù)的最優(yōu)值仍值得研究。(3)隨著數(shù)據(jù)量的增多,推薦系統(tǒng)的速度會(huì)越來(lái)越慢,如何引入并行計(jì)算,提高推薦系統(tǒng)的訓(xùn)練推薦速度也是很值得研究的。