王永貴,宋真真,肖成龍
在互聯(lián)網(wǎng)時(shí)代,用戶對信息的需求數(shù)量得到了滿足,但是用戶在搜索信息時(shí)無法直接有效地獲取到他們真正想要的信息,其實(shí)質(zhì)反而是降低了用戶對信息的使用效率,即人們由信息匱乏的時(shí)代進(jìn)入到了信息過載的時(shí)代。推薦系統(tǒng)作為一種能有效解決信息過載問題的信息過濾手段[1],自20世紀(jì)90年代初,一經(jīng)提出便受到了越來越多的關(guān)注。Tapestry郵件過濾系統(tǒng)[2]被認(rèn)為是最早提出的協(xié)同過濾推薦系統(tǒng),其主要目的是盡可能地產(chǎn)生有限的、滿足用戶喜好的項(xiàng)目推薦列表,為用戶產(chǎn)生推薦。推薦系統(tǒng)在亞馬遜、淘寶、新聞和游戲網(wǎng)站中的使用,在滿足用戶個(gè)性化需求的同時(shí),自身也收益頗豐。
協(xié)同過濾推薦算法是推薦系統(tǒng)中應(yīng)用最廣泛、最成功的個(gè)性化推薦技術(shù)之一[3]。該算法的推薦思想首先是利用用戶的評分信息及其歷史興趣來計(jì)算用戶之間的相似度,使用與該用戶最相近的鄰居的喜好來預(yù)測該用戶對某商品感興趣的程度,然后根據(jù)該用戶對商品的興趣程度將商品進(jìn)行排序,最后將排好序的商品推薦給該用戶[4]??梢蕴幚砣缫纛l、視頻這種非結(jié)構(gòu)化的復(fù)雜對象[5],但在大數(shù)據(jù)時(shí)代下,該傳統(tǒng)算法在實(shí)際的推薦系統(tǒng)中準(zhǔn)確度并不高,而造成這種的情況的主要因素有:大量的稀疏數(shù)據(jù)、推薦實(shí)時(shí)性不強(qiáng)和算法的可擴(kuò)展性較差等。
為此許多學(xué)者作了更加深入的研究,提出了一些改進(jìn)方法并取得了一些成就,例如,在文獻(xiàn)[6-8]中提出了改進(jìn)的相似度計(jì)算方法,提高了推薦系統(tǒng)的精度;使用基于矩陣分解(如奇異值分解[9-10]和非負(fù)矩陣分解[11-12]等)的協(xié)同過濾算法有效地解決了數(shù)據(jù)稀疏問題;在協(xié)同過濾算法中加入聚類方法,使推薦系統(tǒng)的實(shí)時(shí)性不足的問題得到了改善[13]。文獻(xiàn)[14-15]使用k-means聚類對用戶或項(xiàng)目(商品)分別進(jìn)行一定簇?cái)?shù)的劃分,降低了查找最相似近鄰的成本。文獻(xiàn)[16]考慮到用戶的評分具有主觀性,容易受周圍環(huán)境的影響,基于項(xiàng)目信息具有較為穩(wěn)定的特性,提出了基于項(xiàng)目信息進(jìn)行預(yù)測的協(xié)同過濾推薦算法;在計(jì)算用戶或者項(xiàng)目的相似度時(shí),用項(xiàng)目屬性來來表征項(xiàng)目,反映了用戶對項(xiàng)目屬性的興趣點(diǎn),提高了推薦的準(zhǔn)確性。文獻(xiàn)[17]中提出了項(xiàng)目屬性集,把用戶評分和項(xiàng)目屬性相結(jié)合,使得聚類效果更加可靠,可以在一個(gè)簇中顯示用戶的興趣,降低了相似度計(jì)算時(shí)間;但算法沒有考慮到用戶的主觀興趣隨著時(shí)間有改變的可能,這種情況下對用戶進(jìn)行分簇聚類不能真實(shí)地反映用戶的興趣變化,同時(shí)冷啟動(dòng)中的新項(xiàng)目問題也得不到解決。
鑒于推薦算法中存在的上述問題,本文提出一種改進(jìn)聚類和矩陣分解的協(xié)同過濾推薦算法(Collaborative Filtering recommendation algorithm based on Improved Clustering and Matrix Factorization, ICMF-CF)。該算法使用矩陣分解來降低維度以及進(jìn)行矩陣填充,引入時(shí)間衰減函數(shù)預(yù)處理用戶評分,引入多維的項(xiàng)目屬性來表征項(xiàng)目,通過k-means聚類算法對用戶和項(xiàng)目分別進(jìn)行聚類。
基于近鄰的協(xié)同過濾包括兩種:一種是基于用戶的,即如果有和目標(biāo)用戶興趣愛好相似的人購買了某個(gè)商品(或者項(xiàng)目),那么此用戶就有較大概率購買該商品(或者該項(xiàng)目);另一種是基于項(xiàng)目的,即如果某用戶喜歡某個(gè)商品,當(dāng)該用戶看到與此商品類似的其他商品,并且該商品獲得的評分也很高時(shí),該用戶購買該商品的概率會(huì)很大。
用戶的評分?jǐn)?shù)據(jù)通常矩陣Rmn表示,用戶集合U={u1,u2,…,um}和項(xiàng)目集合I={i1,i2,…,in}。其中:rui表示用戶u對項(xiàng)目(或者商品)i的評分值,分值范圍是1~5的整數(shù)。
(1)
傳統(tǒng)的協(xié)同過濾推薦算法首先根據(jù)用戶評分矩陣計(jì)算用戶之間的相似度,將相似度高的候選集生成Top-N推薦列表推薦給用戶。最近鄰選擇的精準(zhǔn)度在一定程度上決定了推薦算法的質(zhì)量,即相似度測量方法對于協(xié)同過濾算法非常重要。目前,被用在協(xié)同過濾推薦算法中的相似度測量方法[16]有:矢量余弦相似性、調(diào)整的余弦相似性和皮爾遜相關(guān)相似性。各相似度計(jì)算方法如下。
矢量余弦相似性:
(2)
調(diào)整的余弦相似性:
(3)
皮爾遜相關(guān)相似性:
(4)
(5)
傳統(tǒng)的相似度計(jì)算方法過程主要取決于用戶-項(xiàng)目評分矩陣。但是,實(shí)際的評分矩陣往往是極其稀疏的,依照原有的用戶-項(xiàng)目相似度測量模式無法反映其實(shí)際的相似度,找到的最近鄰是不可靠的,會(huì)導(dǎo)致最終的推薦結(jié)果不準(zhǔn)確。
聚類是一個(gè)物理集合或?qū)ο蟪橄蟪上嗨频念?對象類盡可能多,且類與類之間不相交。聚類模型被引入到協(xié)同過濾算法中,將類似的用戶或項(xiàng)目聚集到相同的簇中,直接在每個(gè)簇內(nèi)部進(jìn)行最近鄰的查詢,不必像傳統(tǒng)的協(xié)同過濾算法要在整個(gè)數(shù)據(jù)集中進(jìn)行查詢,大大降低了搜索范圍和計(jì)算量。
實(shí)際上,聚類算法已被廣泛應(yīng)用于推薦系統(tǒng),但是到目前為止,還沒有一個(gè)聚類算法可以完成各種數(shù)據(jù)的聚類,不同的應(yīng)用程序有不同的聚類算法。k-means聚類算法[8]被廣泛地使用,其核心是找出k個(gè)聚類中心點(diǎn){f1,f2,…,fk},使得每個(gè)數(shù)據(jù)點(diǎn)xi和它最近的聚類中心fv的平方距離以及(偏差E)最小化,確保相似度高的盡可能聚集在同一個(gè)簇中。由于k-means聚類算法簡單有效,適用大數(shù)據(jù)集,可以很好地滿足協(xié)同過濾算法的需求,其具體步驟如算法1。
算法1k-means聚類算法。
1)初始化:隨機(jī)指定k個(gè)聚類中心{f1,f2,…,fk}。
2)賦值xi:為每個(gè)樣本xi找到最近的聚類中心fv并將其分配給該類。
3)固定fw:將每個(gè)樣本fw移動(dòng)到其所屬的簇中。
5)驗(yàn)證E是否收斂:如果E收斂,則算法終止并返回{f1,f2,…,fk};否則返回2)。
奇異值分解(Singular Value Decomposition, SVD)法很難用在實(shí)際推薦系統(tǒng)中的原因體現(xiàn)在兩個(gè)方面:一方面,在使用SVD時(shí),要求對于存在缺失值的用戶評分矩陣進(jìn)行簡單的補(bǔ)全,而補(bǔ)全后的評分矩陣需要巨大的存儲(chǔ)服務(wù)器空間,在實(shí)際的系統(tǒng)中很難滿足如此大的空間需求;另一方面,SVD在大規(guī)模密集矩陣中的計(jì)算復(fù)雜度非常高,而實(shí)際的系統(tǒng)中很多都是千萬的用戶和幾百萬的項(xiàng)目,這就使得SVD在這種情況下會(huì)很慢。
矩陣分解中,每個(gè)用戶和項(xiàng)目(或者商品)都被描述成一個(gè)特征向量,記為:qu,pi∈Rd,用戶在對項(xiàng)目評分的過程中往往是一個(gè)主觀的過程,會(huì)受到一些潛在因素的影響;根據(jù)這種實(shí)際情況,用戶u對項(xiàng)目i的預(yù)測分值可表示為式(6):
(6)
本文引入了矩陣分解來對矩陣進(jìn)行降維以及矩陣的填充以解決矩陣稀疏的問題;引入時(shí)間衰減函數(shù)提高預(yù)測用戶興趣的變化情況;引入k-means聚類通過項(xiàng)目屬性和用戶評分對項(xiàng)目屬性進(jìn)行劃簇,減少最近鄰查詢范圍和解決新項(xiàng)目的問題。這里的新項(xiàng)目是指那些還沒有被評分的新出現(xiàn)的項(xiàng)目(或新的商品)。
設(shè)用戶集U={u1,u2,…,uk},項(xiàng)目集H={h1,h2,…,hk},項(xiàng)目屬性集N={a1,a2,…,ak}。項(xiàng)目屬性矩陣Ay×n為:
(7)
當(dāng)Aij=1時(shí),表示項(xiàng)目hi包含屬性aj;Aij=0時(shí)表示項(xiàng)目hi不包括屬性aj。
文獻(xiàn)[19]已經(jīng)研究發(fā)現(xiàn),用戶興趣和評分時(shí)間呈負(fù)相關(guān),或著說時(shí)間越長評分的有效性越弱,因此,本文引入時(shí)間損失函數(shù)來反映用戶興趣隨時(shí)間的變化趨勢。時(shí)間損失函數(shù)如式(8)所示:
f(t)=e-λt;t≥0
(8)
其中:λ表示損失因子,它的值是不固定的,根據(jù)不同的情況來定。
假設(shè)用戶ui對s個(gè)項(xiàng)目有評分,這s個(gè)項(xiàng)目的屬性矩陣可以按照式(7)得到,并記為(Ai)sr。用戶ui對s個(gè)項(xiàng)目的評分,可以用如下的對角矩陣來表示:
(Ai)ss=diag(rij,ri2,…,ris)
(9)
考慮到用戶評分中特征的貢獻(xiàn)度,以及用戶興趣隨著時(shí)間的推移而下降的情況,用戶ui加入時(shí)間損失的評分矩陣可以表示為:
(Bi)ss=diag(f(t1)rij,f(t2)ri2,…,f(ts)ris)
(10)
其中:ti表示項(xiàng)目pi得到評分的時(shí)間與項(xiàng)目pi被選擇的時(shí)間的差值。
用戶ui的興趣特征矩陣可以綜合式(9)~(10)得到:
(Ci)sr=(Bi)ss×(Ai)sr
(11)
將興趣特征矩陣(Ci)sr轉(zhuǎn)換成興趣向量(Di)lr:
(12)
項(xiàng)目pi的屬性向量Ej可以從式(7)得到:
Ej=[Aj1,Aj2,…,Ajr]
(13)
使用k-means聚類算法對用戶興趣向量進(jìn)行聚類,同時(shí)根據(jù)屬性向量Ej對項(xiàng)目進(jìn)行聚類,具體步驟如下:
1)預(yù)處理數(shù)據(jù)集,并根據(jù)式(7)~(13),分別構(gòu)建用戶ui的興趣向量(Di)lr和項(xiàng)目hi的屬性向量Ej。
2)采用k-means聚類算法聚類用戶向量,得到Ku(用戶u的K個(gè)簇)并記為FU。
3)采用k-means聚類算法聚類屬性向量,得到Ki(項(xiàng)目i的K個(gè)簇)并記為FI。
使用(Di)lr來表征用戶興趣,基于用戶的聚類算法如算法2所示。
算法2 基于用戶的聚類算法。
輸入 用戶集U,項(xiàng)目集I,用戶評分矩陣Rmy,項(xiàng)目屬性矩陣Ayr,時(shí)間損失函數(shù)f(t),聚類簇?cái)?shù)Ku。
輸出Ku的聚類,記為FU。
1)任取一個(gè)用戶:ui∈U,用戶ui已評分的項(xiàng)目集記為S。
2)根據(jù)用戶評分矩陣Rmy和項(xiàng)目集S,為用戶ui構(gòu)建對角矩陣(Λi)ss=diag(ri1,ri2,…,ris)。
3)結(jié)合用戶ui和項(xiàng)目的評分時(shí)間,構(gòu)建用戶ui的時(shí)間衰減矩陣:(φi)ss=diag(f(t1)ri1,f(t2)ri2,…,f(ts)ris)。
4)根據(jù)項(xiàng)目屬性矩陣Ayr和項(xiàng)目集S,為用戶ui構(gòu)建評估項(xiàng)目屬性矩陣(Ai)sr。
5)用戶ui的興趣特征矩陣為:(ψi)sr=(Φi)ss·(Ai)sr。
7)對任意的ui∈U,執(zhí)行步驟1)~6)。
8)用戶興趣向量(Di)lr用于表征用戶,并使用算法1進(jìn)行用戶聚類。
9)聚類中心不再改變時(shí)輸出結(jié)果FU。
算法2完成了用戶的聚類,項(xiàng)目聚類是相似的,也更加簡潔,僅僅使用項(xiàng)目的特征向量θj代替用戶的興趣向量(Di)lr,然后完成聚類,再通過算法1輸出結(jié)果FI。
在一般的情況下用戶之間的共同評分項(xiàng)是很少的,由于用戶的評分是相近的,這就導(dǎo)致最終計(jì)算的相似度依然很高。本文在計(jì)算用戶之間的相似度時(shí),使用用戶興趣向量取代用戶評分向量;考慮到項(xiàng)目屬性一般是固定不變的,可以在高維中表示項(xiàng)目,因此,在計(jì)算項(xiàng)目之間的相似度時(shí),使用項(xiàng)目屬性矩陣取代用戶評分矩陣。
本文用皮爾遜相關(guān)系數(shù)來計(jì)算用戶相似度,同時(shí)使用用戶興趣向量(Di)l×r取代用戶評分向量,公式如下:
(14)
在計(jì)算項(xiàng)目間相似度時(shí),本文用余弦相似度來計(jì)算,同時(shí)使用屬性向量Ej取代用戶評分向量,公式如下:
(15)
其中:Aii和Aji分別表示項(xiàng)目hi和項(xiàng)目hj是否包含項(xiàng)目屬性ax,值為1時(shí),表示包含;值為0時(shí),表示不包含。
本文算法ICMF-CF的實(shí)現(xiàn)步驟可以分為以下兩個(gè)階段:推薦項(xiàng)目候選集的選擇和在線Top-N推薦。
2.4.1 推薦項(xiàng)目候選集的選擇
通過用戶聚類將相似的用戶聚到一個(gè)簇,用戶的最近鄰就可以直接在簇中進(jìn)行搜索,推薦項(xiàng)目候選集的選擇建立在用戶項(xiàng)目聚類的基礎(chǔ)上會(huì)更加可靠,詳細(xì)步驟如算法3所示。
算法3 基于改進(jìn)用戶相似度的算法。
1)假設(shè)用戶u所在的簇為Fu,對于任意的ui∈Fu,建立用戶興趣向量(Di)l×r(式(12))。
2)對于任意的ui∈Fu,使用改進(jìn)的相似度計(jì)算方法(式(14))計(jì)算用戶間的相似度,選擇相似度最高的Ku個(gè)用戶作為最近鄰,記為Fneiu。
3)根據(jù)Fuk和用戶u,從用戶評分矩陣Rmn得到已被用戶u評分的項(xiàng)目集pu。
4)任取一個(gè)項(xiàng)目hj∈pu,找到該項(xiàng)目所屬的簇Fhj,對任意的Ahj∈Fhj,構(gòu)建其項(xiàng)目屬性向量Ej(式(13))。
5)對于任意的ij∈Fhj,使用改進(jìn)的相似度計(jì)算方法(式(15))計(jì)算項(xiàng)目間的相似度,選擇相似度最高的Ki個(gè)項(xiàng)目作為最近鄰,記為Fneihj。
6)獲取步驟5)的結(jié)果集:Fneih=Fneih1∪Fneih2∪…∪Fneihn。
7)首先把在Fneih中用戶已經(jīng)評價(jià)過的項(xiàng)目去掉,然后將相似度最高的Kr個(gè)項(xiàng)目作為用戶u的推薦候選集,記為Wu。
2.4.2 在線Top-N推薦
為了給用戶u產(chǎn)生推薦結(jié)果,需要在用戶u的推薦候選集Wu中進(jìn)行評分預(yù)測,生成Top-N推薦列表。本文使用梯度下降法對評分矩陣進(jìn)行填充,由式(6)計(jì)算用戶u對項(xiàng)目i的評分預(yù)測,可以被簡寫成:
(16)
預(yù)測值接近實(shí)際評分值就是使其差值最小,即目標(biāo)函數(shù):
(17)
為了學(xué)習(xí)到所有的參數(shù),使得標(biāo)準(zhǔn)化的平方誤差最小,如下所示:
(18)
(19)
(20)
然后利用隨機(jī)梯度下降法對bi、qu分別進(jìn)行迭代更新:
(21)
其中:γ是學(xué)習(xí)率,迭代的終止條件是當(dāng)前后兩次函數(shù)值變化的絕對值小于指定閾值。通過這種方式完成了對矩陣的填充,矩陣的每一行都被量化來表征用戶評分,以用戶u為例,可以描述為:(ru1,ru2,…,rui,…,ruD),i是項(xiàng)目索引,產(chǎn)生推薦列表,對用戶u進(jìn)行推薦。本文使用余弦相似度式(2)進(jìn)行相似度計(jì)算。
設(shè)項(xiàng)目iv是一個(gè)沒有得到過評分的新項(xiàng)目,可以通過所有項(xiàng)目的平均評分值和項(xiàng)目的最近鄰集合Fneiiv進(jìn)行評分預(yù)測,如式(22)所示:
(22)
根據(jù)在項(xiàng)目推薦候選集上的預(yù)測評分,完成Top-N推薦過程。
實(shí)驗(yàn)平臺(tái)的配置:1)硬件配置:PC(Intel Core i5處理器,4 GB內(nèi)存,500 GB的硬盤);2)操作系統(tǒng):Windows 7操作系統(tǒng);3)編程環(huán)境:Matlab 2014a,Microsoft VC++2015。
采用美國明尼蘇達(dá)大學(xué)GroupLens項(xiàng)目組提供的MovieLens數(shù)據(jù)作為數(shù)據(jù)集[20],其中有三個(gè)規(guī)模的數(shù)據(jù)集:100 KB、1 MB、10 MB。本文用到的數(shù)據(jù)是大小為100 KB的數(shù)據(jù)集,包括943個(gè)用戶對1 682部電影的10萬條評分?jǐn)?shù)據(jù),每個(gè)用戶至少對其中的20部電影作出評分(分值范圍:1~5的整數(shù))。
使用平均絕對偏差(Mean Absolute Error, MAE)來評價(jià)預(yù)測情況。MAE越小,表示預(yù)測性能越好。假設(shè)用戶u對項(xiàng)目的N個(gè)項(xiàng)目的預(yù)測評分值集合為P={P1,P2,…,PN},對應(yīng)的實(shí)際評分集合為Y={Y1,Y2,…,YN},MAE的公式被定義為(23):
(23)
準(zhǔn)確率是通過計(jì)算預(yù)測評分與實(shí)際評分相等的數(shù)量占整個(gè)測試集的比率來衡量推薦的準(zhǔn)確度;召回率反映了待推薦的項(xiàng)目被推薦的比率。設(shè)G(u)表示算法推薦列表的項(xiàng)目集;T(u)表示用戶實(shí)際評分的項(xiàng)目集。推薦結(jié)果的準(zhǔn)確率和召回率分別被定義為式(24)~(25):
(24)
(25)
然而,由于準(zhǔn)確率和召回率之間存在負(fù)相關(guān)關(guān)聯(lián),需要找到一個(gè)權(quán)衡量來綜合表示。為了解決這一問題,引入了另一個(gè)指標(biāo)F1-measure來調(diào)和準(zhǔn)確率和召回率,定義如式(26)所示:
(26)
當(dāng)a=1時(shí),就變成所熟知的F1,即本文用到的精度度量指標(biāo),如式(27)所示:
(27)
從公式中可以很明確地看出F1綜合考慮了準(zhǔn)確率和召回率兩方面因素,將F1的值作為推薦系統(tǒng)的推薦精度。
從數(shù)據(jù)集中隨機(jī)取80%作為訓(xùn)練集,其余20%作為測試集。實(shí)驗(yàn)分為兩個(gè)部分:
3.3.1 預(yù)測情況的準(zhǔn)確性實(shí)驗(yàn)
首先需要做的實(shí)驗(yàn)是優(yōu)化聚類的簇?cái)?shù)。將簇?cái)?shù)固定在4~15,并分別計(jì)算對應(yīng)的MAE值。在MAE值最小值時(shí),其所對應(yīng)的簇?cái)?shù)作為實(shí)驗(yàn)的聚類簇?cái)?shù)。實(shí)驗(yàn)結(jié)果如圖1所示。
圖1 ICMF-CF中不同簇?cái)?shù)對應(yīng)的MAE值
確定最佳簇?cái)?shù)之后,在該簇?cái)?shù)之下對比不同算法的MAE值。P-CF表示基于使用皮爾遜相關(guān)系數(shù)計(jì)算用戶相似度的傳統(tǒng)協(xié)同過濾推薦算法,PS-CF表示將用戶Pearson相似度與Salton結(jié)合的協(xié)同過濾算法,NMF-CF表示基于非負(fù)矩陣分解的協(xié)同過濾算法。結(jié)果如圖2所示,算法P-CF中的MAE值最大,算法PS-CF中的MAE值大于算法NMF-CF,算法ICMF-CF中的MAE值最小。實(shí)驗(yàn)結(jié)果表明,與P-CF、PS-CF和NMF-CF相比,本文算法ICMF-CF的MAE值分別低7.8、3.8和2.2個(gè)百分點(diǎn),本文算法ICMF-CF提升了預(yù)測評分的精確度。
圖2 四種協(xié)同過濾推薦算法在簇?cái)?shù)為8時(shí)的MAE值比較
3.3.2 Top-N推薦的準(zhǔn)確性實(shí)驗(yàn)
準(zhǔn)確率定義為推薦列表中用戶喜歡的項(xiàng)目所占的比例。另一方面,召回率定義為用戶所喜歡的項(xiàng)目被推薦的概率。選擇召回率和準(zhǔn)確率作為實(shí)驗(yàn)的基礎(chǔ)評價(jià)指標(biāo),F1作為實(shí)驗(yàn)的綜合指標(biāo),推薦列表的長度分別取30、40和50。實(shí)驗(yàn)對比情況如表1所示。
表1 不同推薦列表長度下四種算法的準(zhǔn)確率、召回率和 F1的比較
從表1可以看出,當(dāng)推薦列表數(shù)在30~40時(shí),F1的值逐漸穩(wěn)定在一個(gè)常數(shù),實(shí)際上,存在一個(gè)推薦列表數(shù)的臨界值,當(dāng)推薦列表數(shù)目大于這個(gè)臨界值時(shí),推薦系統(tǒng)的表現(xiàn)并不會(huì)變得越來越好。對于不同的數(shù)據(jù)集,這個(gè)臨界值的選擇往往也是不同的。在本文中取N為40時(shí),將四種協(xié)同過濾推薦算法的召回率、準(zhǔn)確率和F1作一個(gè)綜合性的比較,NMF-CF是ICMF-CF的有力競爭者,然而,與NMF-CF相比,本文算法ICMF-CF的準(zhǔn)確率提升8個(gè)百分點(diǎn),召回率提升11個(gè)百分點(diǎn),綜合指標(biāo)F1值提升了9.4個(gè)百分點(diǎn)。本文算法ICMF-CF的效果明顯優(yōu)于其他三種算法,提高了推薦系統(tǒng)的推薦精確度。
本文算法使用矩陣分解對評分矩陣進(jìn)行降維以及數(shù)據(jù)填充,使用時(shí)間衰減函數(shù)解決了實(shí)時(shí)性問題;然后,使用用戶興趣向量表征用戶,使用項(xiàng)目屬性表征項(xiàng)目,用k-means分別將用戶和項(xiàng)目進(jìn)行聚類;最后,使用改進(jìn)的相似度測量方法完成項(xiàng)目候選集,根據(jù)項(xiàng)目評分預(yù)測產(chǎn)生Top-N推薦。實(shí)驗(yàn)結(jié)果表明,本文算法不僅提高推薦精度,而且降低了計(jì)算的向量空間維度,推薦精度也得到提升。
參考文獻(xiàn)(References)
[1] 伍杰華,朱岸青, 蔡雪蓮, 等.基于隱樸素貝葉斯模型的社會(huì)關(guān)系推薦[J]. 計(jì)算機(jī)應(yīng)用研究, 2014, 31(5): 1381-1384, 1389.(WU J H, ZHU A Q, CAI X L, et al. Hidden naive Bayesian model for social relation recommendation [J]. Application Research of Computers, 2014, 31(5): 1381-1384, 1389.)
[2] GOLDBERG D, NICHOLS D, OKI B M, et al. Using collaborative filtering to weave an information tapestry [J]. Communications of the ACM, 1992, 35(12): 61-70.
[3] HERLOCKER L, KONSTAN A, BORCHERS A L, et al. An algorithmic framework for performing collaborative filtering [C]// SIGIR 1999: Proceedings of the 22nd Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York: ACM, 1999: 230-237.
[4] 肖文強(qiáng), 姚世軍, 吳善明. 一種改進(jìn)的Top-N協(xié)同過濾推薦算法[J].計(jì)算機(jī)應(yīng)用研究, 2018, 35(1): 105-112.(XIAO W Q, YAO S J, WU S M. Improved Top-Ncollaborative filtering recommendation algorithm[J]. Application Research of Computers, 2018, 35(1): 105-112.)
[5] 許海玲, 吳瀟, 李曉東, 等.互聯(lián)網(wǎng)推薦系統(tǒng)比較研究[J]. 軟件學(xué)報(bào), 2009, 20(2): 350-362.(XU H L, WU X, LI X D, et al. Comparison study of Internet recommendation system[J]. Journal of Software, 2009, 20(2): 350-362.)
[6] JEONG B, LEE J, CHO H. Improving memory-based collaborative filtering via similarity updating and prediction modulation[J]. Information Sciences, 2010, 180(5): 602-612.
[7] ZHAO C, PENG Q, LIU C. An improved structural equivalence weighted similarity for recommender systems[J]. Procedia Engineering, 2011, 15: 1869-1873.
[8] 李克潮,藍(lán)冬梅.一種屬性和評分的協(xié)同過濾混合推薦算法[J].計(jì)算機(jī)技術(shù)與發(fā)展, 2013, 23(7): 116-119.(LI K C, LAN D M. A collaborative filtering hybrid recommendation algorithm for attribute and rating[J]. Computer Technology and Development, 2013, 23(7): 116-119.)
[9] VOZALIS M G, MARGARITIS K G. Using SVD and demographic data for the enhancement of generalized collaborative filtering[J]. Information Sciences, 2007, 177(15): 3017-3037.
[10] 楊陽, 向陽, 熊磊.基于矩陣分解與用戶近鄰模型的協(xié)同過濾推薦算法[J]. 計(jì)算機(jī)應(yīng)用, 2012, 32(2): 395-398.(YANG Y, XIANG Y, XIONG L. Collaborative filtering and recommendation algorithm based on matrix factorization and user nearest neighbor model [J]. Journal of Computer Applications, 2012, 32(2): 395-398.)
[11] CHEN G, WANG F, ZHANG C. Collaborative filtering using orthogonal nonnegative matrix tri-factorization[J]. Information Processing & Management, 2009, 45(3): 368-379.
[12] 郁雪, 李敏強(qiáng).一種結(jié)合有效降維和K-means聚類的協(xié)同過濾推薦模型[J]. 計(jì)算機(jī)應(yīng)用研究, 2009, 26(10): 3718-3720.(YU X, LI M Q. Collaborative filtering recommendation model based on effective dimension reduction andK-means clustering[J]. Application Research of Computers, 2009, 26(10): 3718-3720.)
[13] 張林, 王曉東, 姚宇.基于項(xiàng)目聚類和時(shí)間因素改進(jìn)的推薦算法[J]. 計(jì)算機(jī)應(yīng)用, 2016, 36(增刊2): 235-238.(ZHANG L, WANG X D, YAO Y. Improved recommendation algorithm based on item clustering and time factor [J]. Journal of Computer Applications, 2016, 36(S2): 235-238.)
[14] TSI C F, HUNG C. Cluster ensembles in collaborative filtering recommendation[J]. Applied Soft Computing, 2012, 12(4): 1417-1425.
[15] 李振博, 徐桂瓊, 查九.基于用戶譜聚類的協(xié)同過濾推薦算法[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2014, 24(9): 59-67.(LI Z B, XU G Q, ZHA J. A collaborative filtering recommendation algorithm based on user spectral clustering[J]. Computer Technology and Development, 2014, 24(9): 59-67.)
[16] XU D, TIAN Y. A comprehensive survey of clustering algorithms[J]. Annals of Data Science, 2015, 2(2): 165-193.
[17] SEHGAL G, GRAG D K. Comparison of various clustering algorithms[J]. International Journal of Computer Science and Information Technology, 2014, 5(3): 3074-3076.
[18] XUE G R, LIN CH X, YANG Q, et al. Scalable collaborative filtering using cluster-based smoothing[C]// Proceeding of the 28th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York: ACM, 2005: 114-121.
[19] MARY S S, SELVI R T. A study ofK-means and cure clustering algorithms[J]. International Journal of Engineering Research and Technology, 2014, 3(2): 1985-1987.
[20] 奉國和, 梁曉婷.協(xié)同過濾推薦研究綜述[J]. 圖書情報(bào)工作, 2011, 55(16): 126-130.(FENG G H, LIANG X T. A summary of collaborative filtering recommendations[J]. Library and Information Service, 2011, 55(16): 126-130.)
This work is partially supported by the National Natural Science Foundation of China (61404069), the Liaoning Provincial Department of Education Scientific Research Project (LJYL048).