陳南平
(湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖北 武漢 430062)
一種改進(jìn)的個(gè)性化協(xié)同推薦算法研究
陳南平
(湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖北 武漢 430062)
在協(xié)同推薦算法實(shí)際應(yīng)用基礎(chǔ)上,提出了一種改進(jìn)措施,將多層次相似性度量應(yīng)用到推薦系統(tǒng)kNN算法中,即借助層次關(guān)系矩陣,將內(nèi)容之間的一些固有屬性信息融合到相似度計(jì)算中。該改進(jìn)措施在實(shí)際推薦系統(tǒng)應(yīng)用中取得了較好的效果。
協(xié)同推薦;相似度;多層次度量;冷啟動(dòng)
推薦算法是目前個(gè)性化推薦系統(tǒng)的研究熱點(diǎn),在電子商務(wù)領(lǐng)域有著廣泛應(yīng)用,其核心思想是利用數(shù)據(jù)挖掘與人工智能技術(shù)來(lái)改進(jìn)傳統(tǒng)的協(xié)同過(guò)濾算法[1-2]。系統(tǒng)算法通常是某類推薦模型的實(shí)現(xiàn),它負(fù)責(zé)獲取數(shù)據(jù),以及預(yù)測(cè)給定的用戶組會(huì)對(duì)哪些選項(xiàng)感興趣。推薦算法通常分為4大類:協(xié)同過(guò)濾推薦算法、基于內(nèi)容的推薦算法、混合推薦算法和流行度推薦算法。
基于協(xié)同過(guò)濾推薦的系統(tǒng)從用戶角度進(jìn)行相應(yīng)推薦,由系統(tǒng)自動(dòng)完成。它一般采用最近鄰技術(shù)(KNN),利用用戶的歷史喜好信息計(jì)算用戶間的距離,然后根據(jù)目標(biāo)用戶的最近鄰居對(duì)商品評(píng)價(jià)的加權(quán)評(píng)價(jià)值來(lái)預(yù)測(cè)目標(biāo)用戶對(duì)特定商品的喜好程度,從而根據(jù)這一喜好程度對(duì)目標(biāo)用戶進(jìn)行推薦。即用戶獲得的推薦是系統(tǒng)從購(gòu)買(mǎi)模式或?yàn)g覽行為等隱式獲得,不需要用戶尋找推薦信息。Zhang等[3]提出了推薦系統(tǒng)中應(yīng)用的SVM分類器,其缺陷是在數(shù)據(jù)稀疏時(shí)分類精度受到很大影響。Grarm等[4]將KNN與SVM的性能進(jìn)行了對(duì)比,結(jié)論表明其推薦精度與數(shù)據(jù)質(zhì)量高度相關(guān)。針對(duì)這些問(wèn)題,本文提出一種改進(jìn)措施,將多層次相似性度量應(yīng)用到推薦系統(tǒng)kNN算法中,在實(shí)際推薦系統(tǒng)中取得了較好的效果。
協(xié)同過(guò)濾是基于這樣的假設(shè):為一用戶找到感興趣內(nèi)容的方法是首先找到與此用戶有相似興趣的用戶,然后將感興趣的內(nèi)容推薦給此用戶。日常生活中,人們往往會(huì)利用好友的推薦來(lái)進(jìn)行選擇。協(xié)同過(guò)濾把這一思想運(yùn)用到電子商務(wù)推薦系統(tǒng)中,基于其他用戶對(duì)某一內(nèi)容的評(píng)價(jià)向目標(biāo)用戶推薦。
1.1 推薦系統(tǒng)建模
記推薦系統(tǒng)中有m個(gè)用戶的集合T={t1,t2,…,tm}和n個(gè)內(nèi)容的集合D={d1,d2,…,dn}。用戶評(píng)估數(shù)據(jù)集合可用m×n階矩陣Rm×n表示。某一用戶ti對(duì)內(nèi)容dj(di∈D,tj∈T)的評(píng)測(cè)值為ri、j,這個(gè)評(píng)測(cè)值體現(xiàn)了用戶ti對(duì)內(nèi)容dj的興趣和偏好。某個(gè)用戶感興趣的內(nèi)容集用向量dj=(r1j,r2j,...,rnj)表示,其中r1j表示第1個(gè)用戶t1對(duì)內(nèi)容d1感興趣的權(quán)重,值越大表示用戶對(duì)該內(nèi)容越感興趣。如果用戶t1選取第j項(xiàng)內(nèi)容,取r1j為1;如果用戶t1未選擇第j項(xiàng)內(nèi)容,選取為0。所以,計(jì)算dj各分量的值為:
(1)
其中TF-IDF(tk,dj)是第k個(gè)用戶對(duì)第j個(gè)內(nèi)容選擇次數(shù),Nk是所有內(nèi)容中包括第k個(gè)用戶的數(shù)量。最終第k個(gè)用戶對(duì)第j項(xiàng)內(nèi)容感興趣的程度由下式獲得:
(2)
1.2 內(nèi)容信息集合與內(nèi)容屬性相似度
記內(nèi)容di的r個(gè)屬性信息為Ci=(ci1,ci2,…,cir) ,Cij是指第i個(gè)內(nèi)容的第j個(gè)屬性。同一內(nèi)容可以擁有多個(gè)屬性。記內(nèi)容類別信息S=(sj1,sj2,...sjr’),Sji是指第j個(gè)類別包含第i個(gè)內(nèi)容。同一類別一般包含多個(gè)相關(guān)內(nèi)容。C矩陣和S矩陣之間的關(guān)系由一個(gè)層次關(guān)系矩陣PK=(pK1,pK2,…,pKR)聯(lián)系起來(lái)。層次關(guān)系矩陣P定義為:如果Cir屬于sjr,那么就記pij=1,否則pij=0。根據(jù)以上定義,內(nèi)容Da與Db的屬性相似度公式:
(3)
1.3 用戶評(píng)估相似度
度量用戶間的相似性主要有兩種方法[5]:余弦相似性和相關(guān)相似性。余弦相似性實(shí)現(xiàn)起來(lái)較簡(jiǎn)單,也能較好地度量項(xiàng)目間的相似性,而且計(jì)算速度較快。本文采用余弦相似性度量?jī)?nèi)容間的評(píng)分相似性。但是在單獨(dú)使用單一層次的評(píng)估作為評(píng)判用戶相似度的基礎(chǔ)數(shù)據(jù)時(shí),會(huì)遇到“相似不相同”的問(wèn)題。使用用戶評(píng)估作相似度計(jì)算時(shí),可能會(huì)因?yàn)檫@兩個(gè)用戶沒(méi)有共同的評(píng)估項(xiàng)目而認(rèn)為他們不相似,但實(shí)際上這兩個(gè)用戶的評(píng)估內(nèi)容屬于相同的類別。本文采用多層次相似性度量來(lái)解決這個(gè)問(wèn)題,即借助層次關(guān)系矩陣PK,將內(nèi)容之間的一些固有屬性信息融合到相似度的計(jì)算中。這種改進(jìn)措施保證了計(jì)算的準(zhǔn)確性,并得到各項(xiàng)目的最近鄰居集。
構(gòu)造兩個(gè)層次:①用戶的所有屬性構(gòu)成的類別;②所有屬性屬于的類別。這兩個(gè)層次之間的關(guān)系由S矩陣聯(lián)系。根據(jù)S矩陣定義的關(guān)系修正用戶對(duì)內(nèi)容評(píng)價(jià)的相似度。對(duì)用戶未選擇的內(nèi)容評(píng)估公式如下:
(4)
然后使用修正的余弦相似度公式計(jì)算用戶之間的相似度,并根據(jù)用戶相似度閾值進(jìn)行篩選,得到目標(biāo)用戶的最近鄰居集T。
1.4 預(yù)測(cè)推薦結(jié)果集
將相似度最高的若干內(nèi)容作為目標(biāo)內(nèi)容di的鄰居集合M= { m1,m2,…,mn},且集合M 中的內(nèi)容按照與di的相似度從高到低排列。
得到用戶的最近鄰居集后,可以根據(jù)鄰居對(duì)項(xiàng)目的喜好記錄計(jì)算推薦結(jié)果。對(duì)于目標(biāo)用戶未評(píng)分的項(xiàng)目,重新預(yù)測(cè)其評(píng)分,計(jì)算公式如下:
(5)
將上述改進(jìn)的算法用于實(shí)際推薦系統(tǒng)。實(shí)現(xiàn)協(xié)同過(guò)濾分為3個(gè)步驟:①抽象用戶喜好特征;②發(fā)現(xiàn)相似用戶;③計(jì)算目標(biāo)推薦。算法流程需要設(shè)計(jì)3個(gè)基本數(shù)據(jù)結(jié)構(gòu):用戶信息矩陣T、內(nèi)容信息矩陣D和用戶對(duì)內(nèi)容評(píng)價(jià)矩陣R。用戶信息矩陣用于新用戶注冊(cè)時(shí),增加其基本注冊(cè)信息; 內(nèi)容信息矩陣D用于新增一個(gè)內(nèi)容到推薦系統(tǒng),補(bǔ)充其相關(guān)屬性信息; 當(dāng)一個(gè)用戶對(duì)某個(gè)內(nèi)容進(jìn)行評(píng)價(jià)后,他對(duì)該內(nèi)容的評(píng)價(jià)信息將增加到矩陣R中。
(1)抽象用戶喜好特征。抽象用戶喜好特征需要從用戶的特征性行為中發(fā)現(xiàn)其規(guī)律信息,并以此為依據(jù)進(jìn)行推薦。系統(tǒng)可設(shè)計(jì)多種方式探測(cè)用戶的喜好信息,常用的有投票、評(píng)分、點(diǎn)擊流、轉(zhuǎn)發(fā)、保存書(shū)簽、購(gòu)買(mǎi)及頁(yè)面停留時(shí)間等。實(shí)際推薦引擎設(shè)計(jì)中可以綜合考慮幾種方式,以獲得用戶喜好程度的準(zhǔn)確信息。
要在一個(gè)推薦系統(tǒng)中得到用戶喜好信息需要綜合考慮多種不用的用戶行為,可采用以下兩種不同的方式組合各種不同的用戶行為:①將不同的用戶行為分組,然后根據(jù)不同的用戶行為按分組類別計(jì)算不同用戶對(duì)物品的感興趣程度;②對(duì)不同行為產(chǎn)生的用戶喜好按照預(yù)先設(shè)定的權(quán)值進(jìn)行加權(quán)處理,然后求出用戶對(duì)物品的總體喜好特征。本算法采用第②種方式。
得到用戶的行為數(shù)據(jù)后,再對(duì)數(shù)據(jù)進(jìn)行除噪和歸一化預(yù)處理,最終得到一張二維表,即用戶評(píng)價(jià)矩陣,如表1所示。其中一維是用戶列表,另一維是內(nèi)容列表,值是用戶對(duì)商品的評(píng)價(jià)。
表1 用戶評(píng)價(jià)矩陣
(2)發(fā)現(xiàn)相似用戶。得到某個(gè)用戶的評(píng)價(jià)特征矩陣后,可根據(jù)用戶的喜好計(jì)算相似用戶,然后向相似用戶進(jìn)行推薦。本算法應(yīng)用多層次相似性度量的改進(jìn)措施,采用公式(4)計(jì)算與其相似的鄰居用戶。
首先建立內(nèi)容與用戶關(guān)聯(lián)映射表,用來(lái)保存對(duì)若干內(nèi)容發(fā)生過(guò)行為的用戶。映射表系數(shù)矩陣N[i][j]=|N[i]∪N[j]|。如果用戶i和用戶j同時(shí)屬于表中Nk個(gè)物品對(duì)應(yīng)的用戶列表,則N[i][j]=Nk。然后掃描映射表中每項(xiàng)內(nèi)容對(duì)應(yīng)的用戶列表,將用戶列表中有重疊內(nèi)容的系數(shù)項(xiàng)加1,最后得到所有用戶之間的系數(shù)矩陣N,其值為0或1。
建立一個(gè)m*n的 用戶相似度矩陣R,R的初始取值計(jì)算方式為:對(duì)于內(nèi)容a,將r[a][b]和r[b][a]加1,對(duì)于內(nèi)容b,將r[a][c]和r[c][a]加1,直至掃描完所有內(nèi)容。
內(nèi)容的屬性信息由C矩陣表示,多個(gè)屬性屬于不同層次,本算法將所有內(nèi)容設(shè)定為兩個(gè)層次,兩個(gè)層次之間的關(guān)系由內(nèi)容類別信息S矩陣聯(lián)系。同一個(gè)類別包含多個(gè)相關(guān)內(nèi)容。C矩陣和S矩陣之間的關(guān)系由層次關(guān)系矩陣PK=(pK1,pK2,…,pKR)聯(lián)系。如果Cir屬于sjr,那么就記pij=1,否則pij=0。矩陣之間關(guān)聯(lián)的計(jì)算公式為C·P∈S。掃描所有內(nèi)容,按照公式(4)進(jìn)行計(jì)算,可得到最終的R矩陣,即為最終的用戶相似度矩陣。
(3)計(jì)算目標(biāo)推薦。得到用戶相似度矩陣后,再計(jì)算與該用戶相似的K個(gè)鄰居用戶感興趣的內(nèi)容并進(jìn)行推薦。 對(duì)于用戶di沒(méi)有發(fā)生行為的內(nèi)容j,他對(duì)j的感興趣程度計(jì)算過(guò)程為:①利用用戶di的評(píng)估相似度矩陣找到與其最相似的K個(gè)鄰居用戶;②采用K個(gè)鄰居用戶和D(j)的交集得到K個(gè)用戶中對(duì)j感興趣的若干用戶集合v(D(j)為對(duì)物品j有興趣的用戶集合); ③將用戶di與集合v中的每個(gè)v[j]的相似度乘積進(jìn)行累加求和即為用戶di對(duì)內(nèi)容的感興趣程度。算法中用戶di對(duì)物品j的喜好程度用如下公式度量:
(6)
其中,D(di,K) 包含與用戶di喜好最接近的K個(gè)用戶,D(j)表示對(duì)物品j有過(guò)行為的用戶集合,rdi,v表示用戶di和用戶v的喜好相似度,rvj表示用戶v對(duì)物品j的喜好。
3.1 實(shí)驗(yàn)環(huán)境
以MovieLens 站點(diǎn)( http://movielens.umn.edu) 的實(shí)驗(yàn)數(shù)據(jù)集為例,數(shù)據(jù)集為500個(gè)用戶對(duì)1 200個(gè)影片的6萬(wàn)條投票記錄。每個(gè)影片都有所屬的類別,將類別作為影片的屬性。實(shí)驗(yàn)中取其中兩個(gè)類別進(jìn)行模擬,以獲得影片兩個(gè)層次的屬性相似度。表2中α表示第1個(gè)層次相似度的權(quán)值,1-α表示第2個(gè)層次相似度權(quán)值。兩層相似度計(jì)算都采用余弦函數(shù)法。表2為k=10時(shí)的一組實(shí)驗(yàn)結(jié)果。表3為k=20時(shí)的一組實(shí)驗(yàn)結(jié)果。RMSE表示平均絕對(duì)偏差,實(shí)驗(yàn)中用它度量對(duì)比結(jié)果。
(7)
表2 實(shí)驗(yàn)結(jié)果 (k=10)
表3 實(shí)驗(yàn)結(jié)果 (k=20)
3.2 結(jié)果分析
從上述表格可以看出,多層次相似度計(jì)算的結(jié)果優(yōu)于傳統(tǒng)的單層相似度計(jì)算,但并不總優(yōu)于傳統(tǒng)計(jì)算方法。當(dāng)α接近于1時(shí),結(jié)果比傳統(tǒng)的要差。α=1時(shí)即為傳統(tǒng)的單層相似度。α參數(shù)決定了系統(tǒng)對(duì)相似內(nèi)容的評(píng)估轉(zhuǎn)化能力和認(rèn)知能力。
本文在協(xié)同推薦算法實(shí)際應(yīng)用中提出一種改進(jìn)措施,將多層次相似性度量應(yīng)用到推薦系統(tǒng)kNN算法中,實(shí)踐證明效果較好。系統(tǒng)實(shí)際應(yīng)用中要考慮的因素會(huì)更多,關(guān)于層次的選擇和劃分以及系統(tǒng)實(shí)驗(yàn)效果還有待繼續(xù)研究探討。例如在應(yīng)用此方法時(shí)會(huì)算出用戶對(duì)類別的評(píng)估矩陣,這個(gè)矩陣可以拓展得到用戶的興趣模型,內(nèi)容的冷啟動(dòng)問(wèn)題也可得到解決。
[1]UNGARLH,F(xiàn)OSTERDP.Clusteringmethodsforcollaborativefilter-ring[C].ProcofWorkshoponRecommendationSystems.California:AAAIPress,1998:11-15.
[2]BREESEJS,HECKERMAND,KADIEC.Empiricalanalysisofpre-dctivealgorithmsforcollaborativefiltering[C].Procof14thConfe-renceonUncertaintyinArtificialIntelligence.1998 :43-52.
[3]ZHANGTONG,IYENGARVS.Recommendersystemsusinglinearclassfliers[J].JournalofMachineLearningResearch,2002(2):313-334.
[4]GRARM,F(xiàn)ORTUNAB,MLADENID,etal.KNNversusSVMinthecollaborativefilteringframework[C].ProcofDataScienceandClassification,2006:251-260.
[5]COGGINSJM,JAINAK.Aspatialfilteringapproachtotextureanalysis[J].EuropeanComputer-IndustryResearchCenter(ECRC)PatternRecognitionLetters,1985(3):195-203.
(責(zé)任編輯:杜能鋼)
陳南平(1975-),女,湖北武漢人,碩士,湖北大學(xué)計(jì)算機(jī)與信息工程學(xué)院講師,研究方向?yàn)槿斯ぶ悄堋⒕W(wǎng)絡(luò)應(yīng)用。
10.11907/rjdk.161444
TP312
A
1672-7800(2017)003-0045-03