基于鄰域的top-k推薦方法技術(shù)領(lǐng)域本發(fā)明屬于計算機(jī)技術(shù)領(lǐng)域,涉及由計算機(jī)完成的個性化推薦技術(shù),具體的說是一種基于鄰域的top-k推薦方法。
背景技術(shù):
個性化推薦在我們的日常生活當(dāng)中變得越來越重要,特別是web2.0的出現(xiàn)帶來了海量的數(shù)據(jù)。精確的推薦能夠幫助用戶容易的找到相關(guān)的產(chǎn)品而省去了用戶在海量數(shù)據(jù)中找尋的時間?,F(xiàn)在的電子商務(wù)廠商和以互聯(lián)網(wǎng)廣告為收入的公司都在智能化的個性推薦上面投入大量的人力、物力。從上世紀(jì)90年代中開始,個性化推薦鄰域變成了一個十分重要的科研鄰域。推薦系統(tǒng)中最常用的方法是協(xié)同濾波方法-只依賴于用戶的歷史行為記錄比如用戶的交易記錄、打分記錄,而不必去創(chuàng)建一個明確的用戶興趣資料。當(dāng)收集到一定量的用戶數(shù)據(jù)后,比如Netflix的用戶電影打分記錄,協(xié)同濾波成為了最受歡迎的也是最精確的方法。值得注意的是,協(xié)同濾波不需要行業(yè)知識,不需要去分析被推薦對象的內(nèi)容信息。而且,協(xié)同濾波依賴于用戶的行為有助于揭示復(fù)雜的、不易被預(yù)期到的行為模式。這些是通過已知的數(shù)據(jù)屬性無法做到的。隨著社交網(wǎng)絡(luò)的興起,社會化過濾也成為一個重要的推薦方法,其主要思想就是把社交網(wǎng)絡(luò)內(nèi)興趣相類似的用戶喜歡的東西推薦給目標(biāo)用戶。基于鄰域top-k推薦和基于模型的top-k推薦是當(dāng)下協(xié)同濾波中最流行的兩類推薦方法,基于鄰域的推薦方法擅長于利用關(guān)系比較相近的用戶群進(jìn)行預(yù)測,而基于模型的推薦方法能更好的利用一個用戶的所有的打分記錄。當(dāng)新的產(chǎn)品加入系統(tǒng)后,基于鄰域的方法能夠及時的利用少量的打分信息給目標(biāo)用戶進(jìn)行推薦,而基于模型的方法需要重新進(jìn)行模型訓(xùn)練才能得到該產(chǎn)品的特征向量從而才能對此產(chǎn)品進(jìn)行推薦。到目前為止,社交網(wǎng)絡(luò)內(nèi)的推薦模型主要有三種,但他們都是集中在優(yōu)化RMSE(均方根誤差)。首先數(shù)據(jù)(用戶對產(chǎn)品的打分、購買或點擊數(shù)據(jù))被隨機(jī)切分成訓(xùn)練數(shù)據(jù)集(trainingset)和測試數(shù)據(jù)集(testset),訓(xùn)練數(shù)據(jù)集用來訓(xùn)練模型,測試數(shù)據(jù)集用來測試模型的精度。RMSE定義為:但是對于實際的商用推薦系統(tǒng)來講,根據(jù)用戶的歷史行為來預(yù)測用戶以后會感興趣的內(nèi)容、產(chǎn)品更有實際意義。系統(tǒng)每次給用戶推薦k(一般比較小)個可能感興趣的產(chǎn)品。這種優(yōu)化RMSE的技術(shù)已經(jīng)趨于成熟。對每個用戶u,首先跟據(jù)推薦模型來給每個未打分的產(chǎn)品進(jìn)行預(yù)測打分,然后根據(jù)預(yù)測的分值將產(chǎn)品進(jìn)行從高到低的排序。注意,預(yù)測的打分值是個連續(xù)值,所以排序一般是唯一的。如果碰到兩個相同的分值,則這兩個產(chǎn)品先后排序隨機(jī)。定義相關(guān)產(chǎn)品為用戶喜歡的產(chǎn)品,一般設(shè)個閾值,打分(用戶的實際打分)高于此值的就認(rèn)為是相關(guān)產(chǎn)品。舉個例子,在Epinions數(shù)據(jù)里,我們把打分為5的產(chǎn)品定義為相關(guān)產(chǎn)品,打分小于5的或是打分缺失的定義為不相關(guān)。Top-k命中率定義為測試數(shù)據(jù)集里相關(guān)產(chǎn)品出現(xiàn)在top-k推薦列表上的比例。定義用戶u的測試數(shù)據(jù)集里的所有相關(guān)產(chǎn)品數(shù)目為N(u),定義用戶測試數(shù)據(jù)集里的相關(guān)產(chǎn)品出現(xiàn)在top-k列表的數(shù)目為N(k,u)。用戶u的top-k命中率為:所有用戶的top-k命中率為:對所有用戶的求和。一種典型的在社交網(wǎng)絡(luò)內(nèi)做top-k推薦的方法是基于最近鄰域的方法。首先給目標(biāo)用戶x找到相似的用戶群,然后通過該用戶群預(yù)測用戶x對候選產(chǎn)品的打分,根據(jù)預(yù)測打分的分值將候選產(chǎn)品進(jìn)行排序,推薦排名最高的k個產(chǎn)品給目標(biāo)用戶x。這種方法的缺點是沒有考慮到隱性反饋(缺失的打分)的信息。比如現(xiàn)在給目標(biāo)用戶x選定了一個大小為100的用戶群,現(xiàn)在有兩件產(chǎn)品i,j:用戶群中只有一人對產(chǎn)品i有打分為5,其他人沒打分。而對產(chǎn)品j而言,用戶群中有99人對其打分為5,1人打分為4。如果用加權(quán)平均來預(yù)測用戶x對產(chǎn)品i,j的打分,而所以預(yù)測結(jié)果是用戶在產(chǎn)品i,j中更喜歡產(chǎn)品i。而實際上明顯用戶更喜歡產(chǎn)品j的可能性要很大?;卩徲虻耐扑]方法的核心是如何給目標(biāo)用戶找到相似的用戶群。常用的方法有三種:方法一:每個用戶歷史行為用一個行向量表示,向量第i個值表示對第i個對象的打分值(如果是點擊記錄,1表示點擊了,0表示沒有),通過計算用戶的打分記錄向量計算用戶間的Pearson相似度或計算Cosine相似度在全體用戶中找到跟目標(biāo)用戶最接近的N1個用戶,標(biāo)記該用戶群為方法二:通過社交網(wǎng)絡(luò)過濾的方法可以找到在社交網(wǎng)絡(luò)內(nèi)最相近的N2個用戶,標(biāo)記該用戶群為常用的方法有廣度優(yōu)先搜索、信任值推理和隨機(jī)走動模型。方法三:混合方法一、方法二的用戶群,得到一個混合用戶群。已有的基于鄰域的top-k推薦方法:在所選定的用戶群中,預(yù)測候選產(chǎn)品的打分分值,推薦得分最高的k個產(chǎn)品。具體步驟如下:步驟一:選定相似的用戶群,具體方法見給目標(biāo)用戶找相似的用戶群。標(biāo)記選定的用戶群為Nx。步驟二:找出所選定的用戶群中所有的用戶打分過的產(chǎn)品集合,標(biāo)記為IN。步驟三:預(yù)測目標(biāo)用戶x對集合IN中的所有產(chǎn)品的打分分值,其中有常用的預(yù)測打分方法是選定的用戶群對產(chǎn)品的加權(quán)平均值:注意,對某個產(chǎn)品打分的加權(quán)平均只是對目標(biāo)用戶群中對此產(chǎn)品有打分的用戶而言。步驟四:對該集合中所有產(chǎn)品依照預(yù)測分值進(jìn)行排序,并過濾掉和目標(biāo)用戶已有歷史行為的對象。步驟五:推薦排名最高的k個產(chǎn)品。一種常用的基于鄰域的top-k推薦方法為Trust-CF,詳細(xì)方法參見M.JamaliandM.Ester.利用信任網(wǎng)絡(luò)來提高top-n推薦,ACM推薦系統(tǒng)會議RecSys09.(InACMConferenceonRecommenderSystems(RecSys),2009.)
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對上述現(xiàn)有基于鄰域的推薦方法所存在的無法反應(yīng)隱性反饋的不足,提供一種新的基于鄰域的推薦方法,通過考慮到隱性反饋的因素,實現(xiàn)提高推薦精度的目的。為實現(xiàn)上述目的,本發(fā)明提出下述三種技術(shù)方案。技術(shù)方案一:一種基于鄰域的top-k推薦方法,其特征在于,包括如下步驟:步驟一,響應(yīng)客戶端的請求,建立用戶-對像關(guān)系矩陣;從服務(wù)器中獲取包含目標(biāo)用戶在內(nèi)的一組用戶作為用戶集合,再獲取一組推薦對象作為對象集合;從服務(wù)器中讀取上述用戶集合U中各用戶分別針對對象集合中各推薦對象產(chǎn)生的行為數(shù)據(jù);當(dāng)任一用戶對任一推薦對像未產(chǎn)生行為數(shù)據(jù)時,均以一預(yù)設(shè)值作為假定的行為數(shù)據(jù);根據(jù)獲取的上述行為數(shù)據(jù)值和假定的行為數(shù)據(jù)值,建立一個用戶-對像關(guān)系矩陣;所述行為數(shù)據(jù),可以是用戶對推薦對象的評分?jǐn)?shù)據(jù),如果推薦對象為基于網(wǎng)絡(luò)的產(chǎn)品銷售平臺為用戶提供的商品,行為數(shù)據(jù)可以是用戶對商品的點擊數(shù)據(jù),如點擊該商品展示鏈接的次數(shù),或者是用戶購買商品的數(shù)據(jù),如購買次數(shù),單次購買數(shù)量、總共購買數(shù)量等。步驟二,分解用戶-對像關(guān)系矩陣;通過迭代的方法對步驟一所建立的用戶-對像關(guān)系矩陣進(jìn)行降維處理,獲得分別對應(yīng)各用戶的一組用戶特性向量;所述用戶特性向量中每個數(shù)值表示該用戶對相應(yīng)的對象的潛因子特性的關(guān)聯(lián)程度;如果對象是產(chǎn)品,潛因子特性可以是產(chǎn)品的質(zhì)地,產(chǎn)地,價格等。步驟三,計算目標(biāo)用戶到其他用戶的相似度;逐一計算步驟二獲得的目標(biāo)用戶的用戶特性向量到其他用戶的用戶特性向量的相似度,并將結(jié)果作為目標(biāo)用戶到其他用戶的相似度;所述相似度可以是向量間的cosine相似度,也可以是Pearson相似度。步驟四,建立推薦用戶群;選取與目標(biāo)用戶相似度大于預(yù)設(shè)閥值的用戶,或與目標(biāo)用戶相似度最高的k1個用戶,組成推薦用戶群;步驟五,獲取與步驟四所述的推薦用戶群中的用戶具有行為關(guān)聯(lián)的推薦對象,組成一候選對象集合;步驟六,對候選對象集合中的每個推薦對象,計算推薦用戶群中與該推薦對象具有行為關(guān)聯(lián)的用戶針對該對像產(chǎn)生的行為數(shù)據(jù)的加權(quán)平均值,對應(yīng)各用戶的權(quán)重為與該用戶對應(yīng)的步驟三中所述的相似度值;步驟七,按由大到小順序,排列步驟六所獲得的對應(yīng)各推薦對象的加權(quán)平均值并過濾掉和目標(biāo)用戶已有歷史行為的對象;步驟八,將數(shù)值最大的前k個加權(quán)平均值對應(yīng)的推薦對象返回給客戶端。商用系統(tǒng)中k一般是一個比較小的值,比如1,5,10等,具體數(shù)值由實際系統(tǒng)根據(jù)實際應(yīng)用情況隨意確定。技術(shù)方案二:作為技術(shù)方案一的進(jìn)一步改進(jìn),本發(fā)明還提出下述技術(shù)方案:一種基于鄰域的top-k推薦方法,其特征在于,包括如下步驟:步驟一,響應(yīng)客戶端的請求,建立用戶-對像關(guān)系矩陣;從服務(wù)器中獲取包含目標(biāo)用戶在內(nèi)的一組用戶作為用戶集合,再獲取一組推薦對象作為對象集合;從服務(wù)器中讀取上述用戶集合U中各用戶分別針對對象集合中各推薦對象產(chǎn)生的行為數(shù)據(jù);當(dāng)任一用戶對任一推薦對像未產(chǎn)生行為數(shù)據(jù)時,均以一預(yù)設(shè)值作為假定的行為數(shù)據(jù);根據(jù)獲取的上述行為數(shù)據(jù)值和假定的行為數(shù)據(jù)值,建立一個用戶-對像關(guān)系矩陣;步驟二,分解用戶-對像關(guān)系矩陣;通過迭代的方法對步驟一所建立的用戶-對像關(guān)系矩陣進(jìn)行降維處理,獲得分別對應(yīng)各用戶的一組用戶特性向量;所述用戶特性向量中每個數(shù)值表示該用戶對相應(yīng)的對象的潛因子特性的關(guān)聯(lián)程度;步驟三,計算目標(biāo)用戶到其他用戶的相似度;逐一計算步驟二獲得的目標(biāo)用戶的用戶特性向量到其他用戶的用戶特性向量的相似度,并將結(jié)果作為目標(biāo)用戶到其他用戶的相似度;所述相似度可以是向量間的cosine相似度,也可以是Pearson相似度。步驟四,建立推薦用戶群;選取與目標(biāo)用戶相似度大于預(yù)設(shè)閥值的用戶,或與目標(biāo)用戶相似度最高的k1個用戶,組成推薦用戶群;步驟五,模擬推薦;計算所述推薦用戶群各用戶的大于預(yù)定闕值的行為數(shù)據(jù)與該用戶到目標(biāo)用戶的特性相似度之積,并將結(jié)果作為單個用戶對相應(yīng)對象的推薦力度,計算不同用戶對同一個對象的推薦力度值之和作為推薦用戶群對此推薦對象的推薦力度;步驟六,過濾掉和目標(biāo)用戶已有歷史行為的對象,然后進(jìn)行top-k推薦;將用戶群對各推薦對象的推薦力度值由大到小進(jìn)行排序;將數(shù)值最大的k個推薦力度值對應(yīng)的k個推薦對象返回給客戶端。技術(shù)方案三:作為技術(shù)方案一的再進(jìn)一步改進(jìn),在上述技術(shù)方案二的基礎(chǔ)上,針對目前很多網(wǎng)站同時具有社交功能,本發(fā)明還提供一種融合社交用戶群的基于鄰域的推薦方法,具體如下:一種基于鄰域的top-k推薦方法,其特征在于,包括如下步驟:步驟一,響應(yīng)客戶端的請求,建立用戶-對像關(guān)系矩陣;從服務(wù)器中獲取包含目標(biāo)用戶在內(nèi)的一組用戶作為用戶集合,再獲取一組推薦對象作為對象集合;從服務(wù)器中讀取上述用戶集合U中各用戶分別針對對象集合中各推薦對象產(chǎn)生的行為數(shù)據(jù);當(dāng)任一用戶對任一推薦對像未產(chǎn)生行為數(shù)據(jù)時,均以一預(yù)設(shè)值作為假定的行為數(shù)據(jù);根據(jù)獲取的上述行為數(shù)據(jù)值和假定的行為數(shù)據(jù)值,建立一個用戶-對像關(guān)系矩陣;步驟二,分解用戶-對像關(guān)系矩陣;通過迭代的方法對步驟一所建立的用戶-對像關(guān)系矩陣進(jìn)行降維處理,獲得分別對應(yīng)各用戶的一組用戶特性向量;所述用戶特性向量中每個數(shù)值表示該用戶對相應(yīng)的對象的潛因子特性的關(guān)聯(lián)程度;步驟三,計算目標(biāo)用戶到其他用戶的相似度;逐一計算步驟二獲得的目標(biāo)用戶的用戶特性向量到其他用戶的用戶特性向量的相似度,并將結(jié)果作為目標(biāo)用戶到其他用戶的相似度;所述相似度可以是向量間的cosine相似度,也可以是Pearson相似度。步驟四,建立推薦用戶群;選取用戶集合中與目標(biāo)用戶相似度最高的k1個用戶,或者與目標(biāo)用戶相似度大于預(yù)設(shè)閥值的用戶,組成主用戶群;從服務(wù)器獲取與目標(biāo)用戶關(guān)系距離最近的k2個用戶,或者與目標(biāo)用戶關(guān)系距離小于預(yù)設(shè)閥值的用戶,組成輔助用戶群;混合主用戶群和輔助用戶群,得到一個混合用戶群;步驟五,模擬推薦;計算所述混合用戶群中各用戶的大于預(yù)定闕值的行為數(shù)據(jù)與該用戶到目標(biāo)用戶的相似度或關(guān)系距離的倒數(shù)之積,并將結(jié)果作為單個用戶對相應(yīng)對象的推薦力度,再計算不同用戶對同一個推薦對象的推薦力度值之和作為用戶群對此推薦對象的推薦力度;步驟六,過濾掉和目標(biāo)用戶已有歷史行為的對象,然后進(jìn)行top-k推薦;將用戶群對各推薦對象的推薦力度值由大到小進(jìn)行排序;將數(shù)值最大的k個推薦力度值對應(yīng)的k個推薦對象返回給客戶端。上述方案中,步驟五所述的推薦力度還以直接選用目標(biāo)用戶到其他用戶間的相似度或關(guān)系距離的倒數(shù)。具體描述如下:取對推薦對象產(chǎn)生的行為數(shù)據(jù)大于預(yù)定闕值的用戶的到目標(biāo)用戶的相似度或關(guān)系距離的倒數(shù),作為該用戶對相應(yīng)推薦對象的推薦力度。本發(fā)明的有益效果是:其一,通過模型訓(xùn)練得到用戶的特性向量,通過用戶特性向量給目標(biāo)用戶尋找興趣相似的用戶群,這樣可以在訓(xùn)練模型時引入對缺失數(shù)據(jù)的預(yù)測補(bǔ)充,成功的在基于鄰域的推薦過程中考慮到了隱性反饋,增加了推薦的精度。其二,提出了一種類似于投票式的模擬推薦的方案,通過計算推薦力度來完成top-k的篩選。有效的解決了,現(xiàn)有基于鄰域的推薦方法中,直接計算評分平均值的方法在特殊情況下失真的問題。其三,進(jìn)一步提出了一種輔助用戶群,被通過在具有社交功能等網(wǎng)絡(luò)給目標(biāo)尋找到興趣相似的另一個用戶群,與常規(guī)用戶群進(jìn)行混合得到新的用于模擬推薦的用戶群。這種混合用戶群考慮到了用戶與用戶之間的關(guān)系,可以通過用戶間的關(guān)系進(jìn)一步輔正推薦結(jié)果,有效減少特殊情況下推薦結(jié)果出現(xiàn)較大偏差。用戶與用戶間的關(guān)系數(shù)據(jù),可以有效彌補(bǔ)用戶對推薦對象的行為數(shù)據(jù),當(dāng)用戶對推薦對象的行為數(shù)據(jù)很少量的時候,優(yōu)點尤其突出。附圖說明圖1是本發(fā)明所述推薦方法的整個推薦過程的流程圖。具體實施方式下面結(jié)合圖1,對本發(fā)明上述三個方案中更為優(yōu)選的基于混合鄰域的推薦方法做進(jìn)一步的詳細(xì)描述。步驟一:建立用戶-對象關(guān)系矩陣。從服務(wù)器中獲取包含目標(biāo)用戶在內(nèi)的一組用戶u作為用戶集合U,用戶數(shù)標(biāo)記為u0,再獲取一組推薦對象i作為對象集合I;從服務(wù)器中讀取上述用戶集合U中各用戶分別針對對象集合中各推薦對象產(chǎn)生的行為數(shù)據(jù);當(dāng)任一用戶對任一推薦對像未產(chǎn)生行為數(shù)據(jù)時,均以一預(yù)設(shè)值rm作為假定的行為數(shù)據(jù);根據(jù)獲取的上述行為數(shù)據(jù)值和假定的行為數(shù)據(jù)值,建立一個用戶-對像關(guān)系矩陣;在該矩陣中,橫向排列的是同一用戶針對不同推薦對象產(chǎn)生的行為數(shù)據(jù)或假定的行為數(shù)據(jù),縱向排列的是不同用戶針對同一推薦對象產(chǎn)生的行為數(shù)據(jù)或假定的行為數(shù)據(jù)。步驟二:分解用戶-對象關(guān)系矩陣。以下列公式(3)作為目標(biāo)函數(shù),以公式(5)作為對像特性矩陣,公式(6)作為用戶特性矩陣,對步驟一建立的用戶-對象關(guān)系矩陣進(jìn)行降維優(yōu)化處理。獲得對象特性向量和用戶特性向量。其中,Ro&i是填充有假定的行為數(shù)據(jù)的用戶-對象關(guān)系矩陣。如果用戶u對產(chǎn)品i產(chǎn)生有行為數(shù)據(jù),則否則Ru,i表示用戶-對象關(guān)系矩陣中用戶u對產(chǎn)品i的行為數(shù)據(jù)。用戶-對象關(guān)系矩陣中,u0為用戶集合U的用戶數(shù),i0為對象集合I的推薦對象數(shù)。是預(yù)測的用戶u對產(chǎn)品i行為數(shù)據(jù),rm∈□為全局性偏量。Wu,i是用戶打分的訓(xùn)練權(quán)重,定義如下:wm∈□+,是一個可調(diào)參數(shù)。Qu是用戶特性矩陣中用戶u的特性向量,Pi是對象特性矩陣中產(chǎn)品i的特性向量。上述用戶特性矩陣和對象特性矩陣中,j0<<i0,u0。||·||F是Frobenius范式。λ>0是一個正則化參數(shù)。常用的解法為交替最小二乘法,固定產(chǎn)品特性矩陣P,更新用戶特性矩陣Q,然后固定用戶特性矩陣Q,再更新產(chǎn)品特性矩陣P,這樣一直迭代直到收斂為止。其中.在矩陣中表示向量的所有項;是以權(quán)重矩陣W中的第i列為對角值的對角矩陣。是單位矩陣。其中,是以權(quán)重矩陣W中的第u行為對角值的對角矩陣。步驟三:計算目標(biāo)用戶到其他用戶的相似度。逐一計算步驟二獲得的目標(biāo)用戶的用戶特性向量到其他用戶的用戶特性向量的cosine相似度或Pearson相似度。并將結(jié)果作為目標(biāo)用戶到其他用戶的相似度;標(biāo)記為sim(x,v)。步驟四:建立推薦用戶群。選取用戶集合中與目標(biāo)用戶相似度最高的k1個用戶,或者與目標(biāo)用戶x相似度大于預(yù)設(shè)閥值的用戶,組成主用戶群。標(biāo)記該用戶群為Nx。從服務(wù)器獲取與目標(biāo)用戶關(guān)系距離最近的k2個用戶,或者與目標(biāo)用戶x關(guān)系距離小于預(yù)設(shè)閥值的用戶,組成輔助用戶群。標(biāo)記該用戶群為常用的方法有廣度優(yōu)先搜索、信任值推理和隨機(jī)走動模型。所述關(guān)系距離,是指用數(shù)值表征的用戶間的任何關(guān)系。例如,好友關(guān)系,直接好友,可以用1表征,一級間接好友,即直接好友的直接好友,可以用2表征,二級間接好友,即直接好友的一級間接好友,可以用3表征,依此類推。另外,還可以將兩個直接好友共同的直接好友的關(guān)系距離可以表征為(2-1)/2,三個直接好友共同的直接好友,關(guān)系距離可以表征為(2-1)/3,依此類推。再例如,行為關(guān)系,同樣點擊過某一個鏈接的兩個用戶,關(guān)系距離表征為10,同樣點擊過某兩個鏈接的兩個用戶,關(guān)系距離表征為10/2,同樣點擊過某三個鏈接的兩個用戶,關(guān)系距離表征為10/3,依此類推。還可以是關(guān)注關(guān)系,通信關(guān)系等等。所述關(guān)系距離可以標(biāo)記為d(x,v)。在廣度優(yōu)先搜索中,用戶v對目標(biāo)用戶x的推薦權(quán)重的計算為wt(x,v)=1/d(x,v),d(x,v)為x與v在社交網(wǎng)絡(luò)中的最短跳數(shù)?;旌现饔脩羧汉洼o助用戶群,得到一個混合用戶群。具體混合的方法有:一、選擇輔助用戶群中未被包含在主用戶群中的用戶,與主用戶群組合得到混合用戶群。二、從兩個用戶群中找出相同數(shù)量的用戶,要保證不會從兩個用戶群中選出相同的用戶。三、通過不斷的測試找出最優(yōu)的N1,N2組合,同時保證不會從兩個用戶群中選出相同的用戶。也可以,在建立輸助用戶群時,直接從服務(wù)器獲取不包含在主用戶群中的與目標(biāo)用戶關(guān)系距離最近的k2個用戶,或者與目標(biāo)用戶關(guān)系距離小于預(yù)設(shè)閥值的用戶。步驟五:模擬推薦。假設(shè)混合用戶群中每個用戶推薦自己喜歡的產(chǎn)品給目標(biāo)用戶x,推薦的權(quán)重定義為:w(x,v)為用戶v給目標(biāo)用戶x推薦感興趣產(chǎn)品時v投票權(quán)重,上式的意思就是,如果v屬于上頁步驟二得到的相似群,則w值為sim(x,v);若v屬于上頁步驟三從社交網(wǎng)絡(luò)中得到的相似群,則w值為wt(x,v)。對候選產(chǎn)品的投票值為:其中,δ為Kroneckerdelta函數(shù),Iv為用戶v的評分大于預(yù)定闕值的對象集合。用戶x的相似用戶群中的每一個用戶對其感興趣的商品投一票,這一票的權(quán)重為w(x,v),這票的推薦力度為w(x,v)×Rv,i,所以相似用戶群向用戶x推薦產(chǎn)品i的力度為Votex,i。步驟六:top-k推薦。將用戶群對各推薦對象的推薦力度值由大到小進(jìn)行排序,過濾掉和目標(biāo)用戶已有歷史行為的對象;將數(shù)值最大的k個推薦力度值對應(yīng)的k個推薦對象返回給客戶端。下面以對用戶u1的推薦為例,以一個具體實例說明本發(fā)明三種技術(shù)方案各步驟在實際商業(yè)系統(tǒng)中的應(yīng)用過程,及各方案的優(yōu)缺點,對其他用戶的產(chǎn)品推薦與此相同。步驟一,建立用戶-產(chǎn)品關(guān)系矩陣。用戶的歷史行為數(shù)據(jù)庫記錄了用戶的對產(chǎn)品的評價,以打分形式表現(xiàn)出來或轉(zhuǎn)化成用戶對產(chǎn)品的打分信息。用戶評分信息在數(shù)據(jù)庫中一般以一張表的形式存儲:(用戶Id,產(chǎn)品Id,評分?jǐn)?shù)值,時間戳),數(shù)據(jù)庫中的每一行表示一條用戶評分記錄。數(shù)據(jù)可以從用戶評分表直接讀取。這個信息可以表示為一個用戶-產(chǎn)品打分矩陣。每行表示一個用戶,每列表示一個產(chǎn)品,單元格(i,j)表示用戶ui對產(chǎn)品ij的評分。如表1i1i2i3i4i5i6i7u15155(測試)2u241541u351551u452u525u625表1:某產(chǎn)品評論網(wǎng)站中用戶對產(chǎn)品的打分假設(shè)用戶打分取值為1-5的整數(shù),5表示非常喜歡,4表示一般喜歡,3表示一般,2表示不喜歡,1表示很討厭。表格中空缺表示用戶沒有評分。推薦系統(tǒng)從產(chǎn)品與評論數(shù)據(jù)庫中讀取用戶對產(chǎn)品的打分?jǐn)?shù)據(jù)。表1中u1對i6的評分是在測試數(shù)據(jù)集中,即我們模型訓(xùn)練過程和推薦過程是不知道u1對i6的評分。我們的推薦方法會最后給用戶u1返回一個推薦列表,里面是u1可能感興趣的產(chǎn)品。如果i6出現(xiàn)在最后的推薦列表中,則表示推薦準(zhǔn)確。步驟二,根據(jù)潛因子模型(公式1),建立用戶對產(chǎn)品的評分模型,如下:本例中rm使用的數(shù)值我們選用所有用戶的評分值的平均值×0.6,在本例中為rm=2.0步驟三:建立訓(xùn)練模型,如下:進(jìn)一步如下:從表1中可知,上式中即為用戶u1對產(chǎn)品i1的評分,因為用戶u1對產(chǎn)品i2的評分缺失,所以用rm填充。其余的類似。步驟四:用最小交叉二乘法求解訓(xùn)練模型,并得到所有用戶和特性向量。對于而言,亦即表1中的第一行,將缺失的值用rm填充。具體的例子如下:wm為沒觀測到的數(shù)據(jù)點的權(quán)重,本例中用wm=0.01產(chǎn)品特性向量Pi,.迭代公式的中的跟上面類似。每步迭代中用到的產(chǎn)品特性向量和用戶特性向量都是前一輪迭代的結(jié)果。初始的用戶特性向量和產(chǎn)品特性向量為正態(tài)分布的采樣點。我們用到的正太分布的均值為0,標(biāo)準(zhǔn)差為0.5.取用戶、產(chǎn)品向量維度j0=5,用戶的初始特征向量為:經(jīng)過迭代后得到的用戶向量為:步驟五:根據(jù)步驟四所得到的用戶特性向量給每個用戶選擇與其興趣愛好最相似的用戶群。通過計算目標(biāo)用戶的用戶特性向量與其他用戶的用戶特性向量間的Pearson相關(guān)度距離我們得到,sim(u1,u2)=0.69sim(u1,u3)=0.70sim(u1,u4)=-0.22sim(u1,u5)=0.13sim(u1,u6)=0.11如果我們對每個用戶選取與其相似度高于0.3的用戶作為其相似用戶,與u1興趣相似的用戶群為(u2,u3),這個也即圖1中的CF-ULF鄰域。步驟六:在社交網(wǎng)絡(luò)中廣度優(yōu)先搜索用戶的社交好友,組成社交鄰域。比如,用戶u1在此產(chǎn)品評論網(wǎng)站中關(guān)注了用戶u6,u6沒有關(guān)注其他人。則u1的社交鄰域為(u6),這也即圖1中的社交鄰域。如果我們設(shè)wt(u1,u6)=1/d(u1,u6),d(u1,u6)為u1與u6在社交網(wǎng)絡(luò)中的最短跳數(shù),則wt(u1,u6)=1。步驟七:由CF-ULF鄰域和社交鄰域組成混合鄰域。用戶u1的混合鄰域為(u2,u3,u6),投票的權(quán)重所以w(u1,u2)=0.69w(u1,u3)=0.70w(u1,u6)=1步驟八:u1混合鄰域中的用戶投票其喜歡的產(chǎn)品給用戶u1。本例中認(rèn)為評分為5表示用戶喜歡。u2喜歡產(chǎn)品i4,所以u2投票力度的結(jié)果為(0,0,0,3.45,0,0,0),此投票力度向量對應(yīng)于產(chǎn)品(i1,i2,...,i7)。u3喜歡產(chǎn)品i1,i5,i6,所以u3投票的結(jié)果為(3.50,0,0,0,3.50,3.50,0)。u6喜歡產(chǎn)品i6,所以u6投票的結(jié)果為(0,0,0,0,0,5,0)。將混合鄰域中的用戶投票結(jié)果合計起來得到最終的投票結(jié)果為:(3.5,0,0,3.45,3.5,6.95,0)。步驟九:將產(chǎn)品根據(jù)投票結(jié)果進(jìn)行排序,得到(i6,i5,i1,i4,i3,i2,i7)。步驟十:進(jìn)行可能的產(chǎn)品過濾,比如說某產(chǎn)品斷貨了,可將其從步驟九中的列表中濾掉。過濾掉目標(biāo)用戶已評分過的產(chǎn)品,得到的列表為:(i6,i5,i2)步驟十一:得到最終的top-k推薦列表。比如推薦1個產(chǎn)品給u1的話,則最終top-1推薦結(jié)果為(i6)。i6出現(xiàn)在了最后的推薦列表中,而且確實是用戶u1喜歡的產(chǎn)品。上面描述的是技術(shù)方案三的實施過程。技術(shù)方案二的實施過程為:步驟一,獲取服務(wù)器中存儲的,以數(shù)值表征的,包含目標(biāo)用戶的一組用戶中各用戶分別針對各推薦對象產(chǎn)生的行為數(shù)據(jù),根據(jù)該獲取的行為數(shù)據(jù)建立一個用戶-對像關(guān)系矩陣;得到的數(shù)據(jù)表和表1一樣。步驟二,通過迭代的方法對步驟一所建立的用戶-對像關(guān)系矩陣進(jìn)行降維處理,獲得分別對應(yīng)各用戶的一組用戶特性向量;所述用戶特性向量中每個數(shù)值表示該用戶對相應(yīng)的對象的特性的喜好程度;迭代的過程和技術(shù)方案三一樣,得到每個用戶的特性向量。步驟三,逐一計算步驟二獲得的目標(biāo)用戶的用戶特性向量到其他用戶的用戶特性向量的相關(guān)度距離,并將結(jié)果作為目標(biāo)用戶到其他用戶的相似度。所述相關(guān)度距離是指向量間的cosine相關(guān)度距離或是Pearson相關(guān)度距離;sim(u1,u2)=0.69sim(u1,u3)=0.70sim(u1,u4)=-0.22sim(u1,u5)=0.13sim(u1,u6)=0.11步驟四,選取與目標(biāo)用戶相似度最高的k1個用戶,組成推薦用戶群;如果我們對每個用戶選取與其相似度高于0.3的用戶作為其相似用戶,與u1興趣相似的用戶群為(u2,u3)步驟五,計算所述推薦用戶群各用戶的大于預(yù)定闕值的行為數(shù)據(jù)與該用戶到目標(biāo)用戶的特性相似度之積,并將結(jié)果做為單個用戶對相應(yīng)對象的推薦力度,計算不同用戶對同一個對象的推薦力度值的和作為推薦用戶群對此推薦對象的推薦力度;u2喜歡產(chǎn)品i4,所以u2投票力度的結(jié)果為(0,0,0,3.45,0,0,0),此投票力度向量對應(yīng)于產(chǎn)品(i1,i2,...,i7)。u3喜歡產(chǎn)品i1,i5,i6,所以u3投票的結(jié)果為(3.50,0,0,0,3.50,3.50,0)。用戶投票結(jié)果合計起來得到最終的投票結(jié)果為:(3.50,0,0,3.45,3.50,3.50,0)。步驟六:將用戶群對各推薦對象的推薦力度值由大到小進(jìn)行排序并過濾掉目標(biāo)用戶已評分過的產(chǎn)品;排列的順序為:(i6,i5,i1,i4,i3,i2,i7)過濾掉u1已評過分的產(chǎn)品得到的列表為:(i6,i5,i2),由于i6和i5的推薦力度一樣大,所以順序隨機(jī)。步驟七:將步驟六中數(shù)值最大的k個推薦力度值對應(yīng)的k個推薦對象推薦給目標(biāo)用戶。得到最終的top-k推薦列表。比如推薦1個產(chǎn)品給u1的話,則最終top-1推薦結(jié)果為(i6)。i6出現(xiàn)在了最后的推薦列表中,而且確實是用戶u1喜歡的產(chǎn)品。但也有可能i5排在i6的前面。所以,在我們的例子中top-1推薦準(zhǔn)確的概率是50%。技術(shù)方案一的實施過程為:步驟一,獲取服務(wù)器中存儲的,以數(shù)值表征的,一組用戶分別針對各被推薦目標(biāo)的行為數(shù)據(jù),根據(jù)該獲取的數(shù)據(jù)建立一用戶-目標(biāo)關(guān)系矩陣;得到的數(shù)據(jù)表和表1一樣。步驟二,分解步驟一所建立的用戶-目標(biāo)關(guān)系矩陣,獲得一組分別對應(yīng)各用戶的用戶特性向量;迭代的過程和技術(shù)方案三一樣,得到每個用戶的特性向量。步驟三,根據(jù)步驟二獲得的用戶特性向量計算當(dāng)前用戶到步驟二所述各用戶的特性相似度;所以跟原有方法比,計算用戶相似度時,我們考慮到了隱性反饋。sim(u1,u2)=0.69sim(u1,u3)=0.70sim(u1,u4)=-0.22sim(u1,u5)=0.13sim(u1,u6)=0.11步驟四,選取步驟二所述各用戶中與當(dāng)前用戶特性相似度最高的k1個用戶組成用戶群;如果我們對每個用戶選取與其相似度高于0.3的用戶作為其相似用戶,與u1興趣相似的用戶群為(u2,u3)步驟五,找出步驟四所述的用戶群中所有的用戶打分過的被推薦目標(biāo),組成一產(chǎn)品集合。產(chǎn)品集合為:(i1,i2,i3,i4,i5,i6,i7)步驟六,計算步驟四所述的用戶群中各用戶針對同一被推薦目標(biāo)的行為數(shù)據(jù)的加權(quán)平均值;對產(chǎn)品集合的中每個產(chǎn)品預(yù)測u1的評分值為:(4.50,1,1,5,5,4.50,1)步驟七,按由大到小順序,排列步驟六所獲得的對應(yīng)各被推薦目標(biāo)的加權(quán)平均值并過濾掉目標(biāo)用戶已評分過的產(chǎn)品。排列的順序為:(i4,i5,i6,i1,i2,i3,i7)過濾掉u1已評過分的產(chǎn)品得到的列表為:(i5,i6,i2),得到最終的top-k推薦列表。比如推薦1個產(chǎn)品給u1的話,則最終top-1推薦結(jié)果為(i5)。i6沒有出現(xiàn)在了最后的推薦列表中。從技術(shù)方案一與從技術(shù)方案二的對比可以看出,投票推薦的優(yōu)勢。投票推薦考慮到了用戶對產(chǎn)品沒有打分的情況,這個時候投票力度為0,而計算平均值則只考慮到了觀測到的打分信息。從技術(shù)方案二與技術(shù)方案三的對比可以看出,社交網(wǎng)絡(luò)能帶來額外的用戶興趣信息,因為社交好友的興趣在一些方面是相似的。所以推薦過程中引入社交的因素能提高推薦的準(zhǔn)確度。