王永貴,李倩玉
遼寧工程技術(shù)大學(xué) 軟件學(xué)院,遼寧 葫蘆島125105
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展和網(wǎng)絡(luò)資源的日益豐富,隨之而來(lái)的海量信息超載和信息迷航等問(wèn)題使得推薦系統(tǒng)應(yīng)運(yùn)而生,成為電子商務(wù)中不可缺少的工具。推薦系統(tǒng)作為一種可以向用戶(hù)提供個(gè)性化推薦的系統(tǒng),目前已被廣泛應(yīng)用于電子商務(wù)中用來(lái)挖掘用戶(hù)日常行為數(shù)據(jù)中的隱藏商業(yè)價(jià)值。據(jù)電子商務(wù)統(tǒng)計(jì),推薦系統(tǒng)對(duì)網(wǎng)上商品銷(xiāo)售的貢獻(xiàn)率為20%~30%。其中,協(xié)同過(guò)濾[1]是推薦系統(tǒng)中研究最多、應(yīng)用最廣的個(gè)性化推薦技術(shù),其主要特點(diǎn)在于不依賴(lài)商品的內(nèi)容,而是完全依賴(lài)于一組用戶(hù)表示的偏好[2]。通常,協(xié)同過(guò)濾主要分為兩大類(lèi),包括基于內(nèi)存[3]的協(xié)同過(guò)濾和基于模型[4]的協(xié)同過(guò)濾。前者通過(guò)計(jì)算用戶(hù)和物品之間的相關(guān)性,為目標(biāo)用戶(hù)推薦相似的物品;后者通過(guò)研究用戶(hù)的歷史數(shù)據(jù),進(jìn)行優(yōu)化得到統(tǒng)計(jì)模型后推薦,而且大多數(shù)模型是機(jī)器學(xué)習(xí)模型和語(yǔ)言模型,如Bayes[5]、LDA[6]等。由于最近鄰關(guān)系模型使用簡(jiǎn)潔方便,推薦結(jié)果直接明了,因此大多數(shù)推薦系統(tǒng)都采用基于最近鄰關(guān)系模型的協(xié)同過(guò)濾。其中,K-最近鄰模型(KNN[7])是在最近鄰關(guān)系模型中使用頻率最高的一個(gè)模型。
Zhang 等人[8]提出了一種KNN 和SVM 混合的協(xié)同過(guò)濾推薦算法,但因?yàn)橥扑]系統(tǒng)中數(shù)據(jù)的極端稀疏性問(wèn)題,SVM分類(lèi)器的分類(lèi)精度并不準(zhǔn)確。傳統(tǒng)的KNN算法沒(méi)有考慮到數(shù)據(jù)的稀疏性問(wèn)題,時(shí)間復(fù)雜度高,而且只對(duì)兩個(gè)及以上用戶(hù)評(píng)分的物品進(jìn)行分析,容易忽略一些用戶(hù)的潛在信息,導(dǎo)致推薦精度低。此外,采用基于單分類(lèi)[9]的推薦算法預(yù)測(cè)目標(biāo)用戶(hù)[10]的評(píng)分時(shí),容易陷入“單指標(biāo)最優(yōu)”的困境。Bellkor 使用多級(jí)集成學(xué)習(xí)技術(shù),即通過(guò)組合多種不同的推薦算法來(lái)提升推薦準(zhǔn)確度獲得了2009 年Netflix 推薦算法大賽的冠軍。Freund[11]是最早將Boosting 集成學(xué)習(xí)框架應(yīng)用到信息檢索領(lǐng)域的人,但其提出的理論只能解決小規(guī)模樣本集問(wèn)題[12]。方育柯等人通過(guò)大規(guī)模數(shù)據(jù)實(shí)驗(yàn)說(shuō)明Boosting 集成學(xué)習(xí)法用于推薦系統(tǒng)的可行性[13]。
針對(duì)存在的問(wèn)題,本文結(jié)合KNN 和Boosting 算法的功能特點(diǎn),提出一種基于KNN-GBDT 的混合協(xié)同過(guò)濾推薦算法。其主要貢獻(xiàn)可概括如下:
(1)在相似度計(jì)算公式中引入只有單個(gè)用戶(hù)評(píng)價(jià)的物品權(quán)重,以發(fā)現(xiàn)更多目標(biāo)用戶(hù)和物品之間的潛在信息。在相關(guān)計(jì)算中,先使用奇異值分解(SVD[14])法來(lái)減少向量的維數(shù),縮短計(jì)算時(shí)間。
(2)采用GBDT 算法作為基本框架,利用多分類(lèi)器通過(guò)集成多組推薦結(jié)果預(yù)測(cè)評(píng)分,最后為目標(biāo)用戶(hù)推薦預(yù)測(cè)評(píng)分高的物品。
(3)在MovieLens 數(shù)據(jù)集上進(jìn)行大量實(shí)驗(yàn),證明本文算法優(yōu)于其他基于單分類(lèi)的推薦算法,提升了推薦精度,有效解決了數(shù)據(jù)集稀疏性問(wèn)題。
KNN算法的工作原理是在計(jì)算用戶(hù)(物品)相似度的基礎(chǔ)上,來(lái)尋找相應(yīng)的K 近鄰集合,然后根據(jù)最近鄰集合預(yù)測(cè)目標(biāo)用戶(hù)對(duì)物品的評(píng)分并進(jìn)行推薦。
KNN協(xié)同過(guò)濾算法流程如下:
(1)相似度計(jì)算
一般而言,相似度計(jì)算分為基于用戶(hù)的相似度計(jì)算和基于物品的相似度計(jì)算,常用的方法分別為Person相關(guān)性和余弦相似度。假設(shè)總共有n 個(gè)用戶(hù)的集合U={U1,U2,…,Un} 和m 個(gè)物品的集合I={I1,I2,…,Im} 。根據(jù)用戶(hù)-物品矩陣H ∈Rn×m,計(jì)算每個(gè)用戶(hù)(物品)與另外所有用戶(hù)(物品)的相似度。
其中,ru、rv分別表示用戶(hù)u 和用戶(hù)v 的評(píng)分向量;ru,i表示用戶(hù)u 對(duì)物品i 的評(píng)分,rv,i表示用戶(hù)v 對(duì)物品i的評(píng)分。
②余弦相似度(Cosine)
當(dāng)用余弦公式計(jì)算用戶(hù)(物品)之間的相似度時(shí),將每一個(gè)用戶(hù)(物品)看成一個(gè)n 維的向量,再利用上述公式進(jìn)行計(jì)算。
(2)K 個(gè)最近鄰的選擇
在計(jì)算完基于用戶(hù)(物品)之間的相似度后,選擇與目標(biāo)用戶(hù)相似程度最高的K 個(gè)用戶(hù)合并在一個(gè)集合中,這個(gè)集合就是目標(biāo)用戶(hù)的K 最近鄰集合。
(3)預(yù)測(cè)評(píng)分
令目標(biāo)用戶(hù)u 的最近鄰集合為N(u),然后利用目標(biāo)用戶(hù)的K 最近鄰集合中的用戶(hù)對(duì)目標(biāo)用戶(hù)未評(píng)分的物品進(jìn)行評(píng)分,計(jì)算公式如下:
最后,篩選出評(píng)分高的物品推薦給目標(biāo)用戶(hù)。
Booosting 算法是一種集成學(xué)習(xí)法,多級(jí)集成學(xué)習(xí)技術(shù)即通過(guò)集成多個(gè)不同的相似度計(jì)算方法來(lái)提升最終的推薦準(zhǔn)確度。單個(gè)推薦算法容易陷入“單指標(biāo)最優(yōu)”的困境,而多級(jí)集成學(xué)習(xí)技術(shù)則因?yàn)檫@種能力,在很多領(lǐng)域都顯示出了強(qiáng)大的優(yōu)越性與實(shí)用性[15]。
Adaboost算法是Booosting算法的最早的一種實(shí)現(xiàn)版本。在算法的初始化階段,為每個(gè)樣本提供一個(gè)相等的抽樣權(quán)重(一般開(kāi)始時(shí)權(quán)重相等即認(rèn)為均勻分布),換句話說(shuō),在開(kāi)始時(shí)每個(gè)樣本都是同樣重要的。接下來(lái)在這些樣本上訓(xùn)練一個(gè)分類(lèi)器對(duì)樣本進(jìn)行分類(lèi),由此便可以得到這個(gè)分類(lèi)器的誤差率,根據(jù)它的誤差率對(duì)這個(gè)分類(lèi)器賦予一個(gè)權(quán)重,賦予權(quán)重的大小由分類(lèi)器的誤差率所決定,誤差越大權(quán)重越小。然后針對(duì)此次分錯(cuò)的樣本增大它的抽樣權(quán)重,同時(shí)減少分對(duì)樣本的抽樣權(quán)重,這樣訓(xùn)練的下一個(gè)分類(lèi)器就會(huì)更加關(guān)注這些難以分離的樣本,然后再根據(jù)它的誤差率賦予權(quán)重,由此可見(jiàn)精度越高的分類(lèi)器權(quán)重越大,就這樣進(jìn)行n 次迭代,最后得到的就是由多個(gè)弱分類(lèi)器加權(quán)和的強(qiáng)分類(lèi)器。
采用Boosting 集成學(xué)習(xí)法作為本文算法的基本框架,將基于KNN 的協(xié)同過(guò)濾算法作為Boosting 算法的弱分類(lèi)器進(jìn)行分類(lèi)。
在得到用戶(hù)物品矩陣后,改進(jìn)傳統(tǒng)的基于用戶(hù)相似度的計(jì)算式,引入了若只有單個(gè)用戶(hù)評(píng)價(jià)的物品權(quán)重,并將改進(jìn)后的相似度計(jì)算式(基于用戶(hù)的皮爾遜相關(guān)性和基于物品的修正的余弦相似度)得出的多組候選最近鄰居集的預(yù)測(cè)評(píng)分作為GBDT 算法的多分類(lèi)器所需的預(yù)測(cè)空間進(jìn)行集成。最后,篩選出評(píng)分最高的N 個(gè)物品推薦給目標(biāo)用戶(hù)。本文算法流程圖如圖1所示。
圖1 算法流程圖
針對(duì)傳統(tǒng)相似度計(jì)算方法存在的問(wèn)題,本文提出了對(duì)相似度計(jì)算改進(jìn)的方法。在基于用戶(hù)的皮爾遜相似度計(jì)算式中,引入了若只有單個(gè)用戶(hù)評(píng)價(jià)的物品權(quán)重;在基于物品的相似度計(jì)算式中,使用了修正的余弦相關(guān)性。
2.1.1 用戶(hù)相似度計(jì)算方法
使用U 代表用戶(hù),I 代表物品,假設(shè)推薦系統(tǒng)中有n 個(gè)用戶(hù)的集合U={U1,U2,…,Un} 和m 個(gè)物品的集合I={I1,I2,…,Im} 。用戶(hù)評(píng)分?jǐn)?shù)據(jù)集用R 表示,Ri,j代表用戶(hù)Ui對(duì)物品Ij的評(píng)分,這一評(píng)分體現(xiàn)了用戶(hù)對(duì)物品的興趣和偏好。
傳統(tǒng)的KNN 相似度計(jì)算方法中,只對(duì)兩個(gè)用戶(hù)共同評(píng)分的物品進(jìn)行分析,如果兩個(gè)用戶(hù)共同評(píng)分的物品數(shù)量非常少,那么計(jì)算出來(lái)的這兩個(gè)用戶(hù)之間的相似度會(huì)很高。但實(shí)際上,這兩個(gè)用戶(hù)對(duì)物品的興趣相似度并不會(huì)很高。針對(duì)此問(wèn)題,引入只有單個(gè)用戶(hù)評(píng)價(jià)的物品權(quán)重。改進(jìn)后的用戶(hù)相似度計(jì)算式為:
式(6)和式(7)分別在式(1)和式(2)的基礎(chǔ)上,加入只有用戶(hù)u 和只有用戶(hù)v 評(píng)分的物品權(quán)重C1和C2。其中,Iu,v=Iu-Iv表示用戶(hù)u 已經(jīng)進(jìn)行評(píng)分而用戶(hù)v沒(méi)有進(jìn)行評(píng)分的物品。C1表示用戶(hù)u 在Iu,v中對(duì)該物品的評(píng)分,C2表示用戶(hù)v 在Iu,v對(duì)該物品的評(píng)分。
2.1.2 物品相似度計(jì)算方法
在余弦相似度計(jì)算式中沒(méi)有考慮到不同用戶(hù)的評(píng)分尺度問(wèn)題,修正的余弦相關(guān)性通過(guò)減去用戶(hù)對(duì)商品的平均評(píng)分來(lái)改善上述缺陷。對(duì)于物品p 和物品q,分別對(duì)應(yīng)用戶(hù)u 和用戶(hù)v 的評(píng)分。
推薦系統(tǒng)的Boosting 集成過(guò)程:U 代表用戶(hù)集合,I 代表物品集合,Y 中1表示目標(biāo)用戶(hù)購(gòu)買(mǎi)過(guò)該物品,0則表示目標(biāo)用戶(hù)沒(méi)購(gòu)買(mǎi)過(guò)該物品,算法最后計(jì)算的結(jié)果會(huì)將0 值變?yōu)榉? 值,最后系統(tǒng)會(huì)篩選出得分較大的物品,并將其推薦給用戶(hù)。
如前所述,本文采用基于KNN的協(xié)同過(guò)濾算法,將改進(jìn)后的相似度計(jì)算式得出的多組候選最近鄰居集的預(yù)測(cè)評(píng)分作為GBDT算法的多分類(lèi)器所需的預(yù)測(cè)空間,并對(duì)多組推薦結(jié)果進(jìn)行集成。
GBDT算法作為AdaBoost算法的改進(jìn),由梯度提升算法和決策樹(shù)算法兩部分組成,其核心為減小殘差,即負(fù)梯度方向生成一棵決策樹(shù)以減小上一次的殘差。Boosting 思想遵循的基本原則是每一次建立模型都是建立在模型損失函數(shù)梯度下降方向。如果在建立模型的時(shí)候讓損失函數(shù)迭代下降,則就說(shuō)明模型在不斷往優(yōu)化的方向上改進(jìn),GBDT算法就是讓損失函數(shù)在其梯度方向上下降。決策樹(shù)算法具有時(shí)間復(fù)雜度低、預(yù)測(cè)速度快等優(yōu)點(diǎn),但是單個(gè)決策樹(shù)算法很容易因?yàn)檫^(guò)度擬合影響最終的分類(lèi)結(jié)果。GBDT算法使用多分類(lèi)器,創(chuàng)建數(shù)百棵樹(shù),可以最大限度減小決策樹(shù)算法過(guò)度擬合的程度,而且各分類(lèi)器設(shè)計(jì)簡(jiǎn)單,訓(xùn)練的進(jìn)度也會(huì)相應(yīng)加快。
對(duì)于有著N個(gè)樣本點(diǎn)(xi,yi),計(jì)算其在候選最近鄰居集模型F(x:α,β)下的損失函數(shù),最優(yōu)的參數(shù){α,β}就是使損失函數(shù)最小的參數(shù)。其中,α為候選最近鄰居集模型里面的參數(shù),β為每個(gè)候選最近鄰居集模型的權(quán)重。優(yōu)化參數(shù)的過(guò)程就是所謂的梯度優(yōu)化的過(guò)程。假設(shè)目前已經(jīng)得到了m-1 個(gè)候選最近鄰居集模型,在求第m個(gè)候選最近鄰居集模型的時(shí)候,首先對(duì)m-1 個(gè)候選最近鄰居集模型求梯度,得到最快下降方向。候選最近鄰居集模型的最終結(jié)果依賴(lài)于多個(gè)候選最近鄰居集模型結(jié)果相加。GBDT 算法多分類(lèi)器集成過(guò)程如下所示:
為了驗(yàn)證基于KNN-GBDT的混合協(xié)同過(guò)濾推薦算法的性能,將本文所提出的算法和LDA、CMF、SVD 等經(jīng)典推薦算法進(jìn)行比較,并對(duì)得到的實(shí)驗(yàn)結(jié)果進(jìn)行分析。LDA將項(xiàng)目視為一個(gè)單詞,將用戶(hù)視為一個(gè)文檔,由此以計(jì)算推薦物品的可能性。CMF通過(guò)同時(shí)分解多個(gè)矩陣來(lái)合并不同信息源。SVD 是基于特征的協(xié)同過(guò)濾算法。
實(shí)驗(yàn)采用的是MovieLens 數(shù)據(jù)集來(lái)評(píng)價(jià)所提出算法在TopN推薦列表中的效果,其包含100 KB、1 MB、10 MB 三個(gè)規(guī)模的數(shù)據(jù)集,專(zhuān)門(mén)用于研究推薦技術(shù)。MovieLens 是一家電影推薦網(wǎng)站,該數(shù)據(jù)集由明尼蘇達(dá)大學(xué)GropLens研究小組通過(guò)此網(wǎng)站發(fā)布。此數(shù)據(jù)集包含943位用戶(hù)對(duì)1 682部電影的100 000條1~5分的評(píng)分?jǐn)?shù)據(jù),如表1 所示,取值越高代表用戶(hù)對(duì)電影的評(píng)價(jià)越高。為了便于實(shí)驗(yàn),對(duì)評(píng)分值進(jìn)行重新標(biāo)定,將1~5 的評(píng)分值轉(zhuǎn)化為0~1的評(píng)分值。
表1 實(shí)驗(yàn)數(shù)據(jù)集描述
為了更加公平地評(píng)價(jià)算法性能,隨機(jī)將數(shù)據(jù)集分成互不相交的兩部分:訓(xùn)練集和測(cè)試集(比例為7∶3),進(jìn)行10次劃分,分別形成10組不同的訓(xùn)練集和測(cè)試集,然后使用用于評(píng)價(jià)TopN推薦列表的評(píng)價(jià)指標(biāo):召回率(Recall),準(zhǔn)確率(Precision)和F1 來(lái)評(píng)估實(shí)驗(yàn)結(jié)果。最終的算法評(píng)價(jià)是基于這10 組訓(xùn)練集測(cè)試集的平均值。其中,N表示推薦列表中的物品總數(shù),P表示目標(biāo)用戶(hù)在前N項(xiàng)中喜歡的物品數(shù)。
在算法中,對(duì)實(shí)驗(yàn)結(jié)果有影響的參數(shù)有兩個(gè),第一個(gè)是在KNN 推薦算法中,計(jì)算完相似度之后選擇的最佳參數(shù)K個(gè)候選最近鄰居集。第二個(gè)是TopN算法的推薦列表長(zhǎng)度,因?yàn)榭紤]到推薦問(wèn)題的實(shí)用性,推薦列表不適宜太長(zhǎng),因此推薦列表的長(zhǎng)度設(shè)置為5、10、15、20、25。
實(shí)驗(yàn)從最佳參數(shù)K對(duì)準(zhǔn)確率和召回率的影響,在不同數(shù)據(jù)集上的召回率和F1,以及運(yùn)行時(shí)間的長(zhǎng)短對(duì)算法進(jìn)行對(duì)比評(píng)估。
(1)最佳參數(shù)K的影響
最佳參數(shù)K控制著模型復(fù)雜度,若K值過(guò)小,即模型會(huì)過(guò)于簡(jiǎn)單;若K值過(guò)大,會(huì)產(chǎn)生數(shù)據(jù)擬合,導(dǎo)致算法在性能上受到較大影響。實(shí)驗(yàn)利用召回率和準(zhǔn)確率作為評(píng)判標(biāo)準(zhǔn)來(lái)測(cè)試最佳參數(shù)K的值。本文算法將K控制在0~400來(lái)測(cè)試TopN協(xié)同過(guò)濾推薦算法,并且重復(fù)實(shí)驗(yàn)三次,取這三次實(shí)驗(yàn)得到的平均值作為最終結(jié)果,不同K值下的準(zhǔn)確率和召回率如圖2所示。通過(guò)圖2 表明,K值在100~300 時(shí)性能比較穩(wěn)定;當(dāng)K=200時(shí),經(jīng)典的TopN協(xié)同過(guò)濾推薦算法的召回率和準(zhǔn)確率達(dá)到最高;當(dāng)K>300 后性能略微下滑。因此,基于KNN-GBDT 的混合協(xié)同過(guò)濾推薦算法取K值為200,即在協(xié)同過(guò)濾推薦算法中每一個(gè)物品的候選最近鄰居集合數(shù)目為200。
圖2 在不同K 值下推薦結(jié)果的召回率和準(zhǔn)確率
(2)不同數(shù)據(jù)集下的召回率
圖3和圖4表示的是四種推薦算法在數(shù)據(jù)量不同的數(shù)據(jù)集上的召回率,其中橫坐標(biāo)表示的是推薦列表的長(zhǎng)度,縱坐標(biāo)表示的是推薦結(jié)果的召回率,四種算法在召回率上的性能優(yōu)劣如下所示:KNN+GBDT>LDA>SVD>CMF。從圖3 可以看出,當(dāng)推薦列表長(zhǎng)度小于10 時(shí),LDA 算法的召回率是高于本文所提出算法的召回率的,但隨著推薦列表長(zhǎng)度的增加,GBDT迅速上升,此時(shí)能明顯看出,本文算法的召回率高于其他傳統(tǒng)推薦算法的召回率,這說(shuō)明LDA算法性能并不穩(wěn)定,不太適合復(fù)雜的推薦系統(tǒng)。如圖4所示,由于MovieLens1M中的數(shù)據(jù)量大于MovieLens100k,所以MovieLens1M 中的數(shù)據(jù)稀疏性遠(yuǎn)低于MovieLens100k,這使得模型更容易訓(xùn)練,因此MovieLens1M中算法的召回率低于MovieLens100k中算法的召回率。
圖3 數(shù)據(jù)集MovieLens100k的召回率
圖4 數(shù)據(jù)集MovieLens1M的召回率
(3)不同數(shù)據(jù)集下的F1
召回率并不是唯一的評(píng)估指標(biāo),也可以使用F1 來(lái)評(píng)估四種算法的性能。其中橫坐標(biāo)表示的是推薦列表的長(zhǎng)度,縱坐標(biāo)表示的是推薦結(jié)果的F1,四種推薦算法在F1 上的性能優(yōu)劣如下所示:KNN+GBDT>SVD>LDA>CMF。從圖5 可以看出,當(dāng)推薦列表長(zhǎng)度小于10時(shí),SVD 算法和本文所提出算法的F1 相差不大,但隨著推薦列表長(zhǎng)度的增加,準(zhǔn)確度會(huì)增加,相應(yīng)F1 也會(huì)增加,此時(shí)基于多分類(lèi)器的協(xié)同過(guò)濾算法明顯優(yōu)于其他傳統(tǒng)推薦算法,這說(shuō)明了GBDT不僅能夠在推薦列表頂端具有較高的準(zhǔn)確率,同時(shí)在推薦列表的中間部分同樣具有較大的優(yōu)勢(shì)。如圖6所示,由于MovieLens1M中的數(shù)據(jù)稀疏性遠(yuǎn)低于MovieLens100k,因此MovieLens1M 中算法的F1 稍高于MovieLens100k中算法的F1。
圖5 數(shù)據(jù)集MovieLens100k的F1
圖6 數(shù)據(jù)集MovieLens1M的F1
(4)算法運(yùn)行時(shí)間
實(shí)驗(yàn)測(cè)試了兩種模型在不同模型復(fù)雜度下的運(yùn)行時(shí)間,其中橫坐標(biāo)表示的是K值,縱坐標(biāo)表示的是運(yùn)行時(shí)間。在不同的K值下每個(gè)模型運(yùn)行五次后取平均值,實(shí)驗(yàn)結(jié)果如圖7 所示。從圖7 可知,當(dāng)K>300 時(shí),KNN+GBDT算法具有明顯的優(yōu)勢(shì),運(yùn)行時(shí)間較CMF算法減少很多;當(dāng)K=700 時(shí),兩種算法運(yùn)行時(shí)間相差了2 000 s之多,可以得出KNN+GBDT算法更適合復(fù)雜的推薦系統(tǒng),同時(shí)也說(shuō)明了多分類(lèi)器的時(shí)間效率比單分類(lèi)器的時(shí)間效率高;當(dāng)K>700 時(shí)由于實(shí)驗(yàn)性能較差,且運(yùn)行時(shí)間較長(zhǎng),故不做考慮。
圖7 不同K 值下的運(yùn)行時(shí)間
本文旨在分析如何利用多分類(lèi)器提高推薦精度,提出了一種基于KNN-GBDT 的混合協(xié)同過(guò)濾推薦算法。在傳統(tǒng)KNN相似度計(jì)算公式中考慮了只有單個(gè)用戶(hù)評(píng)價(jià)的物品的權(quán)重,得到了目標(biāo)用戶(hù)更多的潛在相關(guān)信息。采用GBDT算法預(yù)測(cè)目標(biāo)用戶(hù)對(duì)物品的評(píng)分,利用多分類(lèi)器對(duì)KNN算法的多組預(yù)測(cè)結(jié)果進(jìn)行集成。
在實(shí)驗(yàn)部分與其他傳統(tǒng)推薦算法進(jìn)行了比較。推薦結(jié)果采用的是TopN形式,即分別統(tǒng)計(jì)目標(biāo)用戶(hù)對(duì)未曾購(gòu)買(mǎi)或者評(píng)價(jià)過(guò)的物品的興趣度,取排在前N位的物品形成推薦集。實(shí)驗(yàn)結(jié)果表明,KNN-GBDT 算法其準(zhǔn)確率和召回率不僅明顯優(yōu)于基于單分類(lèi)器的協(xié)同過(guò)濾算法,還優(yōu)于其他傳統(tǒng)推薦算法。本文算法增加了數(shù)據(jù)預(yù)處理部分,這對(duì)于推薦算法的應(yīng)用來(lái)說(shuō)是一個(gè)不利因素,因此本文下一步的工作就是優(yōu)化模型,改進(jìn)GBDT算法,在預(yù)測(cè)目標(biāo)用戶(hù)對(duì)物品的評(píng)分時(shí)考慮更多用戶(hù)和物品的特性,對(duì)分類(lèi)器進(jìn)行優(yōu)化,提高訓(xùn)練速度。