李昆侖,趙佳耀,王萌萌,于志波
(河北大學(xué) 電子信息工程學(xué)院,河北 保定 071002)
推薦算法可以分為基于內(nèi)容的推薦、基于協(xié)同過濾的推薦、基于關(guān)聯(lián)規(guī)則的推薦、基于知識的推薦等類別,其中協(xié)同過濾推薦是應(yīng)用最廣泛的推薦算法之一,但它也存在數(shù)據(jù)稀疏性、冷啟動問題、可擴展性等問題[1].目前針對稀疏性問題的優(yōu)化可以分為兩大類,第一類是通過聚類或引入優(yōu)化因子的方式提高相似性度量精度;第二類是按照某種方法對部分缺失值進行填充[2].本文采用第一類優(yōu)化方法,以提高相似性度量精度.
一方面,由于傳統(tǒng)的大多數(shù)聚類算法的聚類精度難以滿足要求,因而可以從聚類方式的角度進行改進.H.Koohi等人使用Fuzzy C-Means聚類對用戶分組,精確了最近鄰用戶搜索范圍,解決了近鄰用戶尋找不準確問題[3];為了解決H.Koohi的算法中用戶聚類結(jié)果不理想問題,S.Fremal等人根據(jù)屬性進行項目聚類,在多個集群中對目標項目進行評分預(yù)測,然后使用加權(quán)策略將這些預(yù)測評分合并[4].為了進一步提高協(xié)同過濾算法中聚類模型的性能,以提升推薦質(zhì)量和推薦效率,本文提出了一種基于k近鄰密度估計的半監(jiān)督AP聚類(Semi-supervised AP clustering based onk-nearest neighbor density estimation,SAP-KND):使用基于近鄰密度選擇的成對約束信息與上層推舉思想改進AP聚類.另一方面,也可以考慮從相似性度量的角度進行改進.M.Shamr等人考慮到并非所有評分對用戶都有相同的重要性,將評分權(quán)重融入到Pearson相關(guān)系數(shù)中[5];S.Bag為了將用戶的總評價向量融入相似度計算,將相關(guān)Jaccard相似度和均方距離相似度進行了融合[6];孫紅等人在Pearson相似度原理上添加物品熱門因子,一定程度上提高了推薦的精確度[7].
根據(jù)上述分析,本文提出了一種基于半監(jiān)督AP聚類和改進用戶相似度的協(xié)同過濾算法:首先使用基于近鄰密度選擇的成對約束信息與上層推舉思想改進的AP聚類(SAP-KND)得到項目類簇;然后利用初始評分矩陣構(gòu)造用戶對項目類簇的偏好矩陣;最后使用改進后的用戶相似性度量得到近鄰用戶集,通過具有相似偏好的用戶評分預(yù)測評分值.本文實驗部分使用vowel、glass 及Movielens這3種數(shù)據(jù)集,采用FMI值和平均絕對誤差(MAE)評價本文算法,并得到實驗結(jié)果.
由上文可知,傳統(tǒng)協(xié)同過濾算法中相似性度量對象較為單一,無法同時利用項目側(cè)和用戶側(cè)的近鄰項信息.近年來為了解決此問題,研究人員提出了一種基于項目類別偏好的混合協(xié)同過濾算法(Hybrid Collaborative filtering algorithm based on user preference model,UP-HCF):K.Shinde等人對穩(wěn)定的項目特征進行聚類,構(gòu)建用戶對項目類別的偏好模型,并結(jié)合傳統(tǒng)協(xié)同過濾算法預(yù)測評分,尋找近鄰用戶得到推薦結(jié)果[8];J.Li等人根據(jù)電影屬性形成電影特征向量,并結(jié)合用戶評價矩陣生成用戶興趣向量,通過迭代的方式對電影特征向量和用戶興趣向量進行相互更新,然后根據(jù)用戶興趣向量構(gòu)造用戶相似度矩陣[9].
在傳統(tǒng)的UP-HCF算法中使用的K-Means、K-medoids、DBSCAN、BIRCH等無監(jiān)督聚類算法在面對噪音數(shù)據(jù)和大規(guī)模數(shù)據(jù)時,存在一定的局限性,進而導(dǎo)致聚類算法無法在稀疏的數(shù)據(jù)集中完成推薦任務(wù).近鄰傳播聚類(Affinity Propagation,AP)與以往的無監(jiān)督聚類方法相比,此方法可以更快的處理大規(guī)模數(shù)據(jù),不受限于選擇初始類代表點的選擇,且能夠得到高精度聚類結(jié)果,其最大的優(yōu)點在于,AP算法的輸入矩陣沒有規(guī)定相似度矩陣的對稱性,因此提高了AP算法的泛化能力[10].AP算法假設(shè)所有的樣本點都為聚類中心;在各個節(jié)點(樣本點)之間,存在被稱為吸引度(Responsibility)和歸屬度(Availability)的兩種消息在不斷地進行迭代傳遞;直到找到距離最近的類代表點的相似度之和最大的數(shù)據(jù)點,作為最優(yōu)的類代表點集合[10].
現(xiàn)有的半監(jiān)督聚類算法大致可分為兩類:基于約束的半監(jiān)督聚類、基于距離的半監(jiān)督聚類.其中基于約束的(constraint-based)半監(jiān)督聚類:在聚類過程中遵循約束條件,使聚類結(jié)果滿足所有約束信息,must-link約束表示兩個樣本必須被聚到同一類簇中,cannot-link約束表示兩個樣本必須被聚到不同類簇中[11].由于成對約束具有弱監(jiān)督特性,在實際問題中往往更容易獲取先驗信息.但是,對于復(fù)雜結(jié)構(gòu)的數(shù)據(jù)集,AP聚類通常不能得到合理的聚類結(jié)果.AP聚類的相似度矩陣S包含數(shù)據(jù)對之間的信息,因此,利用先驗信息約束數(shù)據(jù)對,更容易達到提高聚類精度的目的.基于以上啟發(fā),本文考慮將半監(jiān)督AP聚類算法應(yīng)用到推薦系統(tǒng),旨在進一步提高推薦性能.
傳統(tǒng)UP-HCF算法的相似性度量方式仍然存在以下問題:1)計算用戶相似度時往往只依賴評分數(shù)值的大??;2)將所有用戶或物品對計算相似度的貢獻視為一致的;3)沒有考慮到用戶評分行為的相似性帶來的影響.為了全面客觀地評價用戶相似度,本文使用用戶活躍度和用戶行為軌跡對相似度進行改進.
利用先驗信息改進相似度矩陣,可以有效優(yōu)化AP算法.但是在實際問題中,數(shù)據(jù)本身沒有任何先驗信息;無論是球型數(shù)據(jù)結(jié)構(gòu)還是流形結(jié)構(gòu),同一類簇的樣本主要分布于一個密度較高的區(qū)域,類簇之間通常存在于一個低密度區(qū)域,且簇中心只是部分存在于高密度區(qū)域.為了避免Parzen算法中窗函數(shù)h的選擇問題,本文采用了k近鄰思想估計局部密度,然后假設(shè)處于高密度極值點的樣本的k個最近鄰樣本必定與該樣本屬于同一類別,并且在極為稀疏的幾個區(qū)域的大部分樣本存在cannot-link關(guān)系.基于此極端假設(shè)對數(shù)據(jù)集進行少量標記,可以使靠近的點更近,遠離的點更遠,同時避免must-link約束信息過于集中而產(chǎn)生違反問題.
雖然針對較復(fù)雜的數(shù)據(jù)傾向于產(chǎn)生更多的類,說明算法具有較高的聚類精度,但是往往無法滿足實際需求,無法得到合理的聚類結(jié)果.為了避免增加算法復(fù)雜度同時可以保障理想的聚類結(jié)果,首先使用傳統(tǒng)歐式距離計算相似度矩陣,然后使用馬氏距離處理AP聚類結(jié)果.因此SAP-KND使用馬氏距離(Mahalanobis distance)并融合上層推舉思想,得到期望的簇數(shù).SAP-KND算法詳細過程如下.
k近鄰密度估計法不斷擴大體積Vi直到區(qū)域內(nèi)包含k個樣本點,進而對數(shù)據(jù)集進行密度結(jié)構(gòu)分析.則樣本xi的局部密度估計值如式(1)[12]:
(1)
(xi,xj)∈must-link&&(xj,xk)∈must-link?(xi,xk)∈must-link
(xi,xj)∈must-link&&(xj,xk)∈cannot-link?(xi,xk)∈cannot-link
利用上述傳遞關(guān)系可以進一步擴大M集和C集.
本文采用歐式距離構(gòu)建相似度矩陣S[s(i,j) ]Z×Z,使用成對約束信息可將數(shù)據(jù)集分為3種集合,這里的集合M又稱為高密度集,設(shè)置集合D{D∈X&D?M∪C}為中密度集,集合C又稱稀疏集.按如下方法調(diào)整相似度矩陣:
s(k,k)為偏向參數(shù)(Preference),AP算法假設(shè)所有點成為簇中心的可能性相同,即s(k,k)=p,一般將p值設(shè)置為相似度矩陣的均值p=median(s),且p越大簇數(shù)越大.在SAP-KND算法中,需要對AP聚類結(jié)果進行再聚類,所以這里將p值設(shè)置稍大.
吸引度r(i,j)代表點j適合作為i的類代表點的代表程度;歸屬度a(i,j)代表點i選擇點j作為其類代表的適合程度.利用相似度矩陣S和歸屬度矩陣A=[a(i,k)],更新吸引度矩陣R=[r(i,k)]:
r(i,k)←s(i,k)-max{a(i,k′)+s(i,k′)},i≠k
(2)
r(k,k)←p(k)-max{a(k,k′)+s(k,k′)},i=k
(3)
再根據(jù)吸引度矩陣R更新歸屬度矩陣A:
(4)
(5)
引入阻尼因子λ,默認值為0.5消除可能出現(xiàn)的震蕩:
rnew(i,k)=λ×rold(i,k)+(1-λ)×r(i,k)
(6)
anew(i,k)=λ×aold(i,k)+(1-λ)×a(i,k)
(7)
假設(shè)第t次迭代后簇中心集合為Etold,如果Et=Et-1,則穩(wěn)定次數(shù)δ加1,若此時δ=stableNum則完成迭代,最后計算A+R的值得到AP過程的簇中心點:
(8)
由于AP算法容易產(chǎn)生較多的類,無法滿足本文推薦模型的聚類目標,所以需要對簇中心進行再聚類,使聚類算法輸出一個固定的類簇數(shù)m.這里考慮融入上層推舉思想:計算簇中心點間的距離,選出距離最近的一對簇中心,將所代表的類簇合并,并計算新類簇的簇中心;重新計算新簇中心和其他簇中心的距離,重復(fù)上述過程直至得到期望類簇數(shù)目m和最終簇中心集合Etnew.鑒于推薦算法所使用的數(shù)據(jù)集中各類別的占比具有很大的差異性且簇中心具有較強的代表性,所以此過程要考慮到簇中心各分量的差別以及樣本各特征之間的聯(lián)系,因此這里使用馬氏距離度量簇中心間的相似性:
(9)
其中Σ-1為矩陣[ci,cj]的協(xié)方差矩陣的逆矩陣[14].
本文聚類算法步驟如算法1所示.
算法1.基于k近鄰密度估計的半監(jiān)督AP聚類算法
輸入:數(shù)據(jù)集X,kN,p,δ,stableNum,m.
輸出:簇中心集合為Etnew,m個類簇.
Step1.使用k近鄰密度估計法得到p1,…,pZ,使用kd-tree選擇出集合H、集合L;
Step2.分別將集合H和集合L通過特定方式標記為must-link和cannot-link,生成M約束集和C約束集;
Step3.使用成對約束對相似度矩陣進行3段式處理,并進行AP聚類;
Step4.不斷交替更新矩陣A和矩陣R,迭代完成得到Etold;
Step5.利用上層推舉思想進行再聚類,簇中心間距離使用馬氏距離,得到Etnew,m個類簇.
針對傳統(tǒng)用戶相似度存在的問題.
問題1.假設(shè)A用戶與B用戶只有兩個共同評分項目且分值大小相近,而A用戶與C用戶擁有30個共同評分項但是A的評分均值大于C,則得到的相似度結(jié)果就是:AB之間的相似程度遠遠大于AC之間的相似度.而事實卻恰恰相反,這就造成了極大的誤差.
問題2.如果一個愛好廣泛的用戶對所有的類型都有評分記錄,那么這個用戶就沒有其利用的價值,共同評分項的數(shù)量也不能完全成為決定相似度的因素.為了全面客觀地評價用戶相似度,本節(jié)基于Jaccard相似度(軌跡相似度)[6]的思想和皮爾遜相關(guān)系數(shù)法(Pearson)[15]改進用戶相似度.兩種傳統(tǒng)相似度公式分別如式(10)、(11)所示:
(10)
(11)
在稀疏矩陣中,用戶間評論項目的軌跡信息對降低推薦所產(chǎn)生的誤差尤為重要.針對問題一可以考慮結(jié)合Jaccard相似度,但是Jaccard相似度只考慮了用戶間共同評分項的數(shù)量,沒有利用共同評分項的評分等級.Tanimoto系數(shù)(廣義Jaccard相似度)的元素的取值可以是實數(shù),所以也同時將評分等級的影響融入了計算結(jié)果,因此本文使用了Tanimoto系數(shù),計算方式如式(12):
Ej(A,B)=(A*B)/(‖A‖2+‖B‖2-A*B)
(12)
其中,其中A、B分別表示為兩個向量,向量中每個元素表示為向量中的一個維度,在每個維度上,取值為非二值性的,A*B表示向量乘積,‖A‖2表示向量的模.
針對問題二本文加入了活躍用戶懲罰因子.本文的活躍用戶懲罰因子根據(jù)用戶對19類電影類型的評分記錄的數(shù)量來衡量.根據(jù)函數(shù)的特性,本文使用y=1/ln(2x-1)(ln─以e為底的對數(shù))作為懲罰函數(shù),N(u)代表活躍用戶u的活躍度,當活躍度到達閾值β時,則啟動懲罰因子,表達式如(13):
(13)
在計算相似度時,本文綜合考慮了活躍用戶懲罰因子f、軌跡相似度E以及實際評分對結(jié)果的影響,將活躍用戶懲罰因子融入Pearson相似度并于軌跡相似度相結(jié)合,旨在為相似性度量提供更多的信息,緩解數(shù)據(jù)稀疏性帶來的影響.與傳統(tǒng)Pearson相似度不同的是,式(14)中的i表示用戶x和y的共同評分項目類別,并且融入了懲罰因子f.本文相似性度量具體公式見式(14):
(14)
(15)
newSim=?Sim1(u,v)+(1-?)Sim2(u′,v′)
(16)
其中,Sim2(x,y)為Tanimoto系數(shù),x′、y′代表經(jīng)過數(shù)據(jù)處理的用戶評分向量;N(u)代表活躍用戶u的活躍度,這里的活躍度是指用戶對19個種類的評價狀況;?為權(quán)重因子,取值范圍是[0,1].
對于本文算法有以下兩點論述:1)相似性度量依據(jù)具有相似偏好的用戶生成相似度矩陣,所以本文算法相似性度量結(jié)果的有效性極大依賴于用戶對電影類別的偏好;2)一個電影標簽可能同時存在于多個電影中,每個電影還有多個特征向量,因此數(shù)據(jù)集的復(fù)雜結(jié)構(gòu)增加了聚類的難度.使用近鄰密度尋找成對約束的方法可以初步標記各個類別的初始位置和分類間隔的位置,最后使用SAP-KND算法可以得到一個更加精確的電影分類結(jié)果,進而可以更準確的得出用戶對電影類別的偏好.具體實現(xiàn)過如算法2所示.
算法2. 本文算法
輸入:評分矩陣R,近鄰個數(shù)N.
輸出:預(yù)測評分矩陣R*,MAE值.
Step1.加載數(shù)據(jù)集,得到評分矩陣R和電影特證矩陣M.
Step2.使用SAP-KND對電影特征矩陣M進行聚類,將全部電影分為19類(電影的全部類別).
Step3.聚類結(jié)果結(jié)合評分矩陣R,得到每個用戶對19個電影種類的平均分,生成矩陣U1,且U1中還有大量缺失值.
Step4.使用本文提出的相似度newSim(x,y),基于U1構(gòu)造用戶相似矩陣U2.
Step5.根據(jù)用戶相似矩陣U2生成近鄰用戶集(top-n),使用式(17)對U1進行缺失值填充,得到矩陣U3.
Step6.觀察缺失值所屬電影種類,根據(jù)U3將評分矩陣R中的缺失值填充,生成新的評分矩陣R*.
Step7.加載測試集數(shù)據(jù),使用評分矩陣R*計算MAE.
其中,評分預(yù)測公式見式(17):
(17)
本實驗在CPU為 Intel(R) Core(TM)i5-7200U,運行內(nèi)存為4GB內(nèi)存的計算機上運行,使用python3.6中的sklearn等程序包進行實驗.本文的推薦算法實驗數(shù)據(jù)集采用的是Minnesota大學(xué)Grouplens項目組制作的Movielens100k版本的數(shù)據(jù)集[3].訓(xùn)練集和測試集分別使用ua.base文件和ua.text文件.
本文采用的聚類實驗數(shù)據(jù)是從 UCI 機器學(xué)習(xí)數(shù)據(jù)庫中選出2個標準數(shù)據(jù)集:vowel和glass.采用5重交叉驗證(cross validation),每次從原始數(shù)據(jù)集中抽取80%作為訓(xùn)練數(shù)據(jù)集,剩余的20%作為測試數(shù)據(jù)集.相關(guān)信息見表1所示.
表1 數(shù)據(jù)集相關(guān)信息Table 1 Data set
本文所采用的聚類評價指標是FMI指標,其將準確率和召回率結(jié)合在一起來評價聚類結(jié)果.對于實際類別w和簇類Cm的準確率和召回率分別是:pre(w,Cm)=Nwm/Nm,Rec(w,Cm)=Nwm/Nw其中:Nwm代表簇類m中實際類別為w的樣本數(shù);Nm代表簇類m中的樣本數(shù);Nw代表實際類別w中的樣本數(shù)[16].對于整劃分的FMI值為:
(18)
其中FMI的取值越大則算法越準確.本文所采用的推薦質(zhì)量度量標準是平均絕對誤差MAE (Mean Absolute Error),表達式如式(19)所示:
(19)
其中pi表示系統(tǒng)對用戶的預(yù)測評分,qi表示用戶實際的評分.
6.3.1 聚類算法分析
6.3.1.1 不同密度估計參數(shù)kN值對t、MAE的影響
首先,針對SAP-KND中簇中心的迭代次數(shù)t設(shè)置對比試驗,以體現(xiàn)算法在不同kN值下的收斂速度.其次,為了得到算法在不同kN值下的預(yù)測準確度,這里設(shè)置了針對MAE值的對比試驗.控制其他參數(shù)不變的情況下,將kN設(shè)置為24,28,32,36,40,44,48,依據(jù)7個數(shù)值進行實驗從而獲取迭代次數(shù)t和MAE值,依據(jù)這兩個變量可以更好的確定最佳kN值.在尋找最近kN值的同時,將傳統(tǒng)AP算法的迭代次數(shù)t和F值與SAP-KND算法進行對比.
圖1 不同kN值對迭代次數(shù)t的影響Fig.1 Influence of different kN values on iteration times t圖2 不同kN值對MAE的影響Fig.2 Influence of different kN values on MAE
針對SAP-KND算法的曲線.考慮到實驗中的偶然性因素,每組均通過多次實驗取平均值的方式得到上述結(jié)果.結(jié)果顯示,圖1中可以清晰的得到折線圖總體呈現(xiàn)一種低凹形狀,因此kN范圍在[28,40]區(qū)間時的迭代次數(shù)t較少,意味著迭代次數(shù)較快達到了穩(wěn)定次數(shù)stableNum;圖2中顯示折線圖總體趨勢與圖1表現(xiàn)相類似,但也有細微差別,可以得到在本文算法中迭代次數(shù)的大小對MAE值具有相對較大的影響而且呈正相關(guān).因此,當kN取28與32時推薦精度相對較高,綜合觀察兩組實驗可以得到SAP-KND算法在kN的取值在32附近時算法綜合性能最好.
針對AP算法的曲線.圖1的實驗結(jié)果表明,成對約束的引入使數(shù)據(jù)集得到了稀疏化,進而降低數(shù)據(jù)復(fù)雜度,使得算法較快滿足類簇中心集{ci}的穩(wěn)定條件.兩組實驗表明SAP-KND算法提高了聚類精度,加快了收斂速度.
6.3.1.2 不同聚類算法在不同數(shù)據(jù)集下的對比
為了更好的體現(xiàn)本文聚類算法的優(yōu)越性.在其他參數(shù)不變的情況下,SAP-KND算法針對3個數(shù)據(jù)集設(shè)置不同的m值,在最佳kN值的情況下計算FMI值.其他兩種算法取10次5重交叉驗證的最優(yōu)值作為FMI值,并設(shè)計以下對比實驗,見表2所示.
表2 不同算法在數(shù)據(jù)集下的FMI值Table 2 FMI values of different algorithms in data sets
表2的實驗結(jié)果得到了以下結(jié)論:1) SAP-KND算法相較于傳統(tǒng)AP算法得到了一定的提高,相較于K-Means具有明顯的優(yōu)勢;2) K-Means算法適合處理小規(guī)模復(fù)雜度較低的數(shù)據(jù);3) 觀察AP算法及其改進算法SAP-KND,AP系列算法適用于不同規(guī)模的數(shù)據(jù),其穩(wěn)定性較高;4) 對比兩種AP算法,驗證了近鄰密度標記規(guī)則的有效性,使不同類簇的樣本點更好的分割開來.
6.3.2 本文算法在不同相似度參數(shù)下的對比
活躍因子與活躍程度的函數(shù)關(guān)系如圖3所示,縱坐標是活躍因子f,橫坐標是活躍度N(u).在計算相似度時,由于f作為相似度公式分子的一部分并作為一種限制因素,所以其取值不能大于1.原始圖像縱坐標的取值范圍(0,+∞)不能應(yīng)用于實際的算法計算,因此本文規(guī)定取值范圍為0 本節(jié)旨在直觀的表現(xiàn)出不同活躍度閾值β在不同權(quán)值?下的MAE值的變化情況,同時得到MAE到達最小值時兩參數(shù)的最佳取值.?值的意義可以描述為:計算相似度時更偏重用戶可靠度(行為軌跡因素)或者更偏重分值的差異因素.當近鄰個數(shù)設(shè)置為12時,將β初始值設(shè)為6,以1為間隔逐步增至16;權(quán)值?選取0.2、0.4、0.6、0.8,實驗結(jié)果如圖4所示. 圖3 f的函數(shù)圖像Fig.3 Function image of f圖4 不同相似度參數(shù)下的對比Fig.4 Comparison of different similarity parameters 首先,觀察MAE值的變化情況可以得出,β值對預(yù)測精度的影響大于?值產(chǎn)生的影響.當?=0.4時節(jié)點處在最低處,所以此處為最優(yōu)權(quán)值,進而說明用戶的軌跡相似性對相似度的準確性影響更大.其次從總體的折線走勢中可以看出,4條曲線總體走勢基本相似,說明β值對預(yù)測精度的相對影響不隨著其他因素的變化而變化.最后,觀察β在6至12的區(qū)間時變化緩慢,在β為14時到達了最低點,隨后β為16時出現(xiàn)了一個大幅度增加.結(jié)果說明當用戶的活躍度為14時啟動活躍因子為最佳時間,如果對活躍度過于敏感會得到適得其反的效果. 6.3.3 本文相似度有效性驗證 為了驗證本文相似度的有效性,將沒有考慮融入用戶活躍度的算法( algorithm1)、沒有考慮軌跡相似度的算法( algorithm 2)、只考慮軌跡相似度的算法( algorithm3)作為3種對比算法,與本文算法(The new algorithm)在不同近鄰個數(shù)N的情況下進行對比.選取的目標用戶最近鄰居數(shù)初始化為4,并以2為間隔逐步增至20. 從圖5中首先可以看出,algorithm3的MAE值明顯高于其它3個算法,并與algorithm2相比較可以得出:只考慮用戶之間的評分軌跡相似性而不考慮評分的數(shù)值最終會導(dǎo)致相似度的有效性極低,并且Pearson相似度的有效性要高于Tanimoto系數(shù);其次觀察到 algorithm2隨著近鄰數(shù)的增加,MAE值下降的趨勢較為明顯,這說明:近鄰用戶越多,活躍用戶因子f的懲罰功能對算法精度的影響越明顯.最后綜合觀察4種相似度所對應(yīng)的4條曲線可以得出:綜合考慮用戶的活躍度、可靠度以及用戶實際評分3種因素的協(xié)同過濾推薦算法有效性明顯高于單獨考慮一種因素的算法,同時也驗證了本文算法的有效性. 圖5 4種算法在不同近鄰個數(shù)N下的對比Fig.5 Comparison of four algorithms under different N neighbors 6.3.4 不同算法在不同近鄰個數(shù)N下的對比 為了驗證本文算法的有效性,這里選擇了4種算法作為對比進行實驗: 1)基于用戶聚類協(xié)同過濾算法(Collaborative filtering algorithm based on user clustering,UBCF)[3]; 2)基于項目聚類和加權(quán)策略的協(xié)同過濾算法(Collaborative filtering algorithm based on item clustering and weighting strategy,ICWSCF)[4]; 3) 基于用戶偏好的混合協(xié)同過濾算法(Hybrid Collaborative filtering algorithm based on user preference model,UP-HCF)[5]; 4) 融合混合興趣向量和評級自適應(yīng)權(quán)重的推薦算法(A recommendation algorithm that hybrid interest vectors and rating adaptive weights,IVAWCF)[6]. 最近鄰居數(shù)目的選定對推薦質(zhì)量有著重要的影響,為了對不同鄰域條件下的實驗結(jié)果進行評價和比較,本節(jié)將4種算法與本文算法(The proposed algorithm)在不同近鄰個數(shù)N下進行對比.將選取的目標用戶最近鄰居數(shù)初始化為4,并以2為間隔逐步增至20,在kN、?、β為最優(yōu)值的情況下進行實驗,實驗結(jié)果如圖6所示. 圖6 不同算法在不同近鄰個數(shù)N下的對比Fig.6 Comparison of different algorithms under different numbers of neighbors N 結(jié)果顯示,IVAWCF的MAE值隨著近鄰數(shù)的增加呈下降趨勢并逐漸趨于平緩;本文算法與UP-HCF的算法相比曲線走勢明顯較為平緩且在N為10時MAE值最小,剩余兩種算法在N為12時MAE值最小,通過綜合觀察近鄰個數(shù)為10-12時推薦效果最佳. 本文算法在近鄰個數(shù)相同的幾種情況下比UBCF 、IVAWCF和IVAWCF在預(yù)測精度上具有明顯的提高;IVAWCF具有較高的近鄰用戶需求量,本文算法在低近鄰用戶需求量時更具有優(yōu)勢.通過與ICWSCF算法的對比可以證明:同時利用用戶和項目兩側(cè)信息尋找近鄰用戶的方法明顯優(yōu)于僅憑單一側(cè)尋找近鄰項目的方法.與UP-HCF算法相比,本文算法在穩(wěn)定性上得到了明顯的提高,在推薦精度方面也得到了一定提高,說明SAP-KND算法在一定程度上克服了無監(jiān)督聚類算法的局限性. 傳統(tǒng)的基于項目類別偏好的混合協(xié)同過濾算法存在相似性度量精度較低的問題,為此本文首先提出一種半監(jiān)督聚類算法-SAP-KND算法,并用于項目聚類,然后對相似度計算方式進行了改進.理論分析和實驗結(jié)果均表明:與傳統(tǒng)算法相比,本文算法可以保證近鄰用戶與目標用戶具有更高的相似度進而提高了推薦的準確性與穩(wěn)定性.本文的下一步工作考慮將上述半監(jiān)督聚類與遷移學(xué)習(xí)相融合,希望可以利用更豐富的偏好信息為用戶推薦項目.7 總 結(jié)