基于項目的協(xié)同過濾推薦算法[1,3,4],從產(chǎn)品角度進(jìn)行分析,尋找與目標(biāo)產(chǎn)品相似的產(chǎn)品集合,然后進(jìn)行預(yù)測和推薦。它基于一個假設(shè),即用戶對與其感興趣產(chǎn)品相似的產(chǎn)品也感興趣。由于項目間的相似性相對穩(wěn)定,而通常項目的數(shù)量比用戶數(shù)量少,這樣可以減少計算量,降低數(shù)據(jù)稀疏性。
算法步驟:
(1)通過相似性算法,計算列向量的余弦相似性,即產(chǎn)品向量的相似性。
(2)選擇相似性最高且沒有被目標(biāo)用戶評價過的前M個產(chǎn)品,作為產(chǎn)品的鄰居集合Mp。
(3)對鄰居集合中產(chǎn)品的評分進(jìn)行加權(quán)求和,得到目標(biāo)用戶對目標(biāo)產(chǎn)品的預(yù)測評分
2.2 降低矩陣維數(shù)的技術(shù)
降低矩陣維數(shù)的技術(shù)可對原始稀疏數(shù)據(jù)直接進(jìn)行數(shù)據(jù)處理,降低數(shù)據(jù)稀疏性。主要算法有單值分解、聚類等。
2.2.1 單值分解
單值分解算法利用矩陣的單值分解原理,對用戶—產(chǎn)品矩陣進(jìn)行分解,從而降低矩陣的維數(shù),抽取出主要信息[2,5]。
算法步驟:
(1)使用每個產(chǎn)品的平均評分——列平均值——填充矩陣中的未評分項。
(2)利用用戶的平均評分——行平均值——進(jìn)行標(biāo)準(zhǔn)化,產(chǎn)生矩陣R。
(3)對R進(jìn)行單值分解,得到
(6)根據(jù)同一產(chǎn)品被鄰居評分的頻繁程度產(chǎn)生推薦。
從算法步驟可以看出,通過單值分解得到的較低維的UkS1/2k矩陣比原始用戶—產(chǎn)品稠密,并且抽取出了所有用戶信息。在這個矩陣上進(jìn)行相似性計算,可以減少計算量,提高在線推薦速度,并且提高推薦質(zhì)量。實驗表明,該算法在分解矩陣過程中,不可避免數(shù)據(jù)遺失。當(dāng)原始矩陣極度稀疏時,單值分解算法試驗結(jié)果并不理想。算法需要較大的計算量,較少的存儲空間。
2.2.2 聚類
單值分解通過矩陣運(yùn)算降低數(shù)據(jù)稀疏性,聚類[6-9]則是通過一些聚類算法將產(chǎn)品或用戶聚成若干具有共同性質(zhì)的類;然后在小的聚類數(shù)據(jù)中產(chǎn)生推薦。
(1)取前K個用戶作為K個獨(dú)立的聚類質(zhì)心;剩余的每個用戶與其最近質(zhì)心進(jìn)行比較。
(2)在形成聚類質(zhì)心的基礎(chǔ)上,重新計算聚類的質(zhì)心。
(3)聚類內(nèi)部的成員關(guān)系被重新估算。重復(fù)(1)-(3),直到產(chǎn)生的K個聚類不再變化。
(4)在目標(biāo)用戶所在的類中進(jìn)行用戶相似性計算,主要運(yùn)用第一部分中的相關(guān)相似性方法計算,得到最近鄰居集合。
(5)對最近鄰居的評分?jǐn)?shù)據(jù)進(jìn)行加權(quán)處理:
(6)預(yù)測產(chǎn)生后,根據(jù)預(yù)測評分的高低對目標(biāo)用戶進(jìn)行推薦。
2.3 基于內(nèi)容的協(xié)同過濾算法
2.1、2.2節(jié)中介紹的算法都是建立在用戶對產(chǎn)品評分的基礎(chǔ)上,在一定程度上都緩和了數(shù)據(jù)稀疏帶來的問題。基于產(chǎn)品內(nèi)容的協(xié)同過濾算法[11]與前面介紹的幾種算法的不同之處,是考慮到了產(chǎn)品本身的信息。由于增加了信息量,可以有效提高推薦質(zhì)量。
本文原文 單純的基于產(chǎn)品內(nèi)容的算法,根據(jù)單個用戶已評價產(chǎn)品的內(nèi)容信息,如電影的導(dǎo)演、演員、類型等,建立用戶興趣模型,進(jìn)而產(chǎn)生推薦。這樣的算法存在一些弊端:①由于通常獲得的只是產(chǎn)品的部分信息,其他一些未知信息很有可能影響用戶的行為,這就造成了推薦的不準(zhǔn)確。②用戶的喜好通常是多樣的,而單個用戶評分的產(chǎn)品數(shù)量卻非常少。這樣就使推薦局限于特定類型的產(chǎn)品上。
基于內(nèi)容的協(xié)同過濾技術(shù)則不同。目前這方面的算法主要有線性結(jié)合型和連續(xù)結(jié)合型兩個類型,如圖2、3所示。
線性結(jié)合型算法步驟:
(1)通過歷史評價的產(chǎn)品內(nèi)容信息,建立用戶興趣模型。
(2)比較用戶模型,得到基于內(nèi)容的用戶相似性。
(3)根據(jù)用戶—產(chǎn)品評分矩陣,得到基于評分的用戶相似性。
(4)將兩個相似性進(jìn)行線性組合,得到用戶相似性。
(5)根據(jù)相似性,得到目標(biāo)用戶的最近鄰居集。
(6)通過鄰居集對目標(biāo)用戶進(jìn)行評分預(yù)測和推薦。這個過程可以用2.1、2.2節(jié)介紹的算法進(jìn)行。
連續(xù)結(jié)合型算法步驟:
(1)通過歷史評價的產(chǎn)品內(nèi)容信息,建立用戶興趣模型。
(2)根據(jù)每個用戶興趣模型的相互比較,獲得目標(biāo)用戶的最近鄰居集。
(3)將符合目標(biāo)用戶或其鄰居興趣模型的產(chǎn)品推薦給目標(biāo)用戶。
以上兩種算法混合了協(xié)同過濾算法和基于內(nèi)容的推薦算法,緩和了傳統(tǒng)協(xié)同過濾算法沒有考慮產(chǎn)品本身信息的缺陷,也解決了基于內(nèi)容的推薦算法中單個用戶信息稀少的問題。然而,產(chǎn)品信息的獲取和存儲,是一個困難且昂貴的問題。