楊懷珍,張 靜,李 雷
(1.桂林電子科技大學(xué) 商學(xué)院,廣西 桂林 541004;2.桂林理工大學(xué) 商學(xué)院,廣西 桂林 541004)
推薦系統(tǒng)通過挖掘用戶歷史行為數(shù)據(jù)如購買記錄、評分信息等進(jìn)行個性化推薦,從而緩解“信息過載”問題[1,2]。協(xié)同過濾算法[3,4]通過分析“用戶-項目”評分矩陣實現(xiàn)推薦。但由于歷史數(shù)據(jù)存在稀疏性導(dǎo)致其推薦精度低[5],針對該問題,王建芳等[6]聯(lián)合用戶間協(xié)同相似度、偏好相似度和具有時序的用戶興趣信息預(yù)測評分。張潤蓮等[7]將多種相似度加權(quán)構(gòu)造混合相似度并通過K-means聚類分析來提高協(xié)同過濾推薦算法的精度。張怡文等[8]通過分析用戶偏好,提出了雙極協(xié)同過濾算法。任永功等[9]利用相似物品評分信息對稀疏的用戶評分矩陣進(jìn)行填充,然后計算近鄰用戶對評分矩陣進(jìn)一步進(jìn)行填充。Shi等[10]利用奇異值分解加加模型探討用戶可靠性和受歡迎程度等內(nèi)部因素對推薦性能的影響。Nahta等[11]在協(xié)同過濾算法中嵌入元數(shù)據(jù),Liu等[12]K-means聚類分析提取新聞內(nèi)容特征并考慮新聞的受歡迎程度結(jié)合奇異值分解技術(shù)以解決協(xié)同過濾算法的數(shù)據(jù)矩陣稀疏問題。Panda等[13]提出了基于規(guī)范化的協(xié)同過濾算法。這類方法的實時性較差,主要應(yīng)用在數(shù)據(jù)量相對較小的場合。
近年來,一些學(xué)者[14,15]將機(jī)器學(xué)習(xí)算法與協(xié)同過濾算法相結(jié)合,提出了基于模型的協(xié)同過濾算法。Chen等[16]利用神經(jīng)網(wǎng)絡(luò)解決了單對相互作用問題。李凌等[17]利用隨機(jī)森林在不同子區(qū)域篩選特征,并由協(xié)同過濾算法進(jìn)行推薦。程明月等[18]利用貝葉斯模型對協(xié)同過濾算法進(jìn)行優(yōu)化,提升了其預(yù)測準(zhǔn)確性。神經(jīng)網(wǎng)絡(luò)具有良好的非線性逼近特性,王玉珍等[19]結(jié)合協(xié)同過濾算法和徑向基神經(jīng)網(wǎng)絡(luò)設(shè)計推薦算法。Fu等[20]將受限玻爾茲曼機(jī)與協(xié)同過濾算法相結(jié)合用于設(shè)計推薦算法。以上算法通過挖掘歷史數(shù)據(jù)的深層特征,可緩解數(shù)據(jù)稀疏性對模型的影響,然而特征提取過程耗時較多且僅采用“用戶-項目”交互數(shù)據(jù)。
針對以上問題,文中在評分矩陣中融入項目元數(shù)據(jù)并由大規(guī)模信息嵌入網(wǎng)絡(luò)(large-scale information network embedding,LINE)求解混合相似矩陣的精確近鄰集,將其輸入CatBoost預(yù)測項目評分并利用Top-N推薦項目。采用MovieLens數(shù)據(jù)集對評估其性能并與結(jié)合徑向基神經(jīng)網(wǎng)絡(luò)的協(xié)同過濾(collaborative filtering combined with radial basis function neural network,RBF-CF)、結(jié)合XGBoost的協(xié)同過濾(collaborative filtering combined with extreme gradient boosting,XGB-CF)、基于用戶的協(xié)同過濾(user-based collaborative filtering,UCF)和CatBoost進(jìn)行對比。
協(xié)同過濾算法廣泛地應(yīng)用在各類推薦系統(tǒng)中,其依據(jù)用戶或項目的歷史信息實現(xiàn)最終的推薦。整個協(xié)同過濾推薦算法主要分為:評分矩陣構(gòu)建、相似度矩陣構(gòu)建和項目推薦3個階段,相似度矩陣的構(gòu)建處于核心地位,其好壞決定了推薦算法的精度。常見的相似度計量函數(shù)見表1。
CatBoost[21]是以梯度提升決策樹(gradient boosted decision tree,GBDT)框架為核心的集成學(xué)習(xí)方法,具有參數(shù)量少、穩(wěn)健性強(qiáng)等優(yōu)點,常用于處理類別型變量。其通過將樣本特征組合達(dá)到利用樣本特征間信息的目的并采用排序提升的方法對數(shù)據(jù)進(jìn)行處理降低樣品數(shù)據(jù)中噪聲對模型的影響。此外,該方法可解決模型過擬合的問題,提升其準(zhǔn)確性及泛化能力。協(xié)同過濾算法能夠依據(jù)用戶的歷史數(shù)據(jù)實現(xiàn)目標(biāo)用戶感興趣項目的推薦。文中結(jié)合多重相似度分析和CatBoost提出了一種全新的推薦算法,其流程如圖1所示。該算法具有較高的推薦精度和較強(qiáng)的穩(wěn)定性,能夠為用戶準(zhǔn)確推薦其感興趣項目。
與傳統(tǒng)協(xié)同過濾算法的不同之處在于,該算法首先對項目元數(shù)據(jù)和評分?jǐn)?shù)據(jù)進(jìn)行哈夫曼編碼,將項目元數(shù)據(jù)和用戶評分?jǐn)?shù)據(jù)利用修正的余弦函數(shù)求出對應(yīng)的相似度矩陣,并將得到的結(jié)果進(jìn)行融合;然后采用LINE提取混合相似矩陣的精確近鄰集并利用Skip-Gram提取其深層特征作為CatBoost的輸入對項目未知評分進(jìn)行預(yù)測。
階段一:編碼及相似性分析
傳統(tǒng)的協(xié)同過濾算法直接對原始數(shù)據(jù)進(jìn)行處理,會增加算法運行時間。文中采用對項目元數(shù)據(jù)和評分?jǐn)?shù)據(jù)進(jìn)行哈夫曼編碼,以達(dá)到縮減運行時間的目的。
(1)評分?jǐn)?shù)據(jù)編碼及相似性分析
假設(shè)Ui為用戶i,Ij為項目j,P={xi,j} 為用戶i對項目j的評分,則構(gòu)成的評分矩陣P見表2。
表2 用戶-項目評分矩陣
(1)
(2)項目元數(shù)據(jù)編碼及相似性分析
(2)
(3)混合矩陣相似性分析
大規(guī)模信息嵌入網(wǎng)絡(luò)(large-scale information network embedding,LINE)通過求解描述一階、二階鄰近關(guān)系目標(biāo)函數(shù)的解作為節(jié)點的近鄰節(jié)點,這樣可以緩解稀疏數(shù)據(jù)對模型性能的影響。在LINE中相似數(shù)據(jù)結(jié)點關(guān)系如圖2所示,其主要有以下兩種類型:①直接相連接的結(jié)點5和結(jié)點7相似,這類結(jié)點主要位于網(wǎng)絡(luò)頂點,采用1階鄰近關(guān)系模型進(jìn)行衡量;②共享較多數(shù)量的鄰近節(jié)點5和節(jié)點6相似,采用2階鄰近關(guān)系模型進(jìn)行衡量。
圖2 LINE網(wǎng)絡(luò)中相似結(jié)點
一階鄰近關(guān)系模型:以混合相似矩陣Λ中項目為節(jié)點構(gòu)建網(wǎng)絡(luò),任選網(wǎng)絡(luò)中節(jié)點vi和vj, 則其一階鄰近關(guān)系概率為
(3)
(4)
(5)
最終求解目標(biāo)函數(shù)g1的最小值
(6)
二階鄰近關(guān)系模型:二階鄰近關(guān)系模型主要用于判別共享鄰近節(jié)點的相似度。通常,網(wǎng)絡(luò)中節(jié)點還包含其它節(jié)點“上下文”,故首先采用節(jié)點vi計算節(jié)點vk生成的概率
(7)
(8)
最終求解目標(biāo)函數(shù)g2的最小值
(9)
階段二:特征向量提取
(10)
為求解其精確近鄰集,對上式兩邊取對數(shù),即
(11)
(12)
依據(jù)最小化式(12)對中心詞向量進(jìn)行優(yōu)化,求解出節(jié)點vi的精確集Fvi。
階段三:預(yù)測評分并推薦
將Skip-Gram提取的樣本特征向量Fvi送入CatBoost中訓(xùn)練評分預(yù)測模型,其中Fvi={(X1,Y1),(X2,Y2)…(Xn,Yn)},n為樣本個數(shù),Xn表示第n個樣本的m維特征,即Xn={x1,x2,…,xm};Yn為第n個樣本的屬性。在建立預(yù)測模型時首先利用數(shù)值s替換類別型變量,其中s為
(13)
然后對其弱學(xué)習(xí)器進(jìn)行訓(xùn)練,最終使損失函數(shù)的值趨于0。也就是說CatBoost最終是使ht最小,即
(14)
式中:ht為CatBoost中的弱學(xué)習(xí)器,F(xiàn)t-1(x) 為上一輪訓(xùn)練得到的強(qiáng)學(xué)習(xí)器。經(jīng)過多次循環(huán)迭代最終得到的CatBoost模型為
Ft(x)=Ft-1(x)+ht
(15)
MovieLens數(shù)據(jù)集中包含有1682部電影且943個用戶對電影的評分,評分值為0~5之間,此外統(tǒng)計了電影的標(biāo)題、類型和主演等信息。文中以MovieLens數(shù)據(jù)集為實例,隨機(jī)選取MovieLens數(shù)據(jù)集中20%的數(shù)據(jù)作為測試集、80%的數(shù)據(jù)作為訓(xùn)練集進(jìn)行評估實驗,并與RBF-CF、XGB-CF、UCF和CatBoost對比來進(jìn)一步驗證文中方法的有效性。
文中采用預(yù)測精度、平均絕對偏差和運行時間作為評價指標(biāo),對各模型的性能進(jìn)行評估。其中,預(yù)測精度用于評估用戶喜歡的項目在推薦項目總數(shù)中的占比,其值越大說明模型性能越優(yōu),反之模型性能越差;平均絕對偏差用于衡量項目預(yù)測評分和項目實際評分的差值,其值越小說明項目預(yù)測評分越接近項目真實評分,反之項目預(yù)測評分與項目實際評分差距越大。預(yù)測精度(Precision)和平均絕對偏差(mean absolute error,MAE)計算公式可表述為
(16)
(17)
(1)相似度函數(shù)確定
選擇合理的相似度函數(shù)可準(zhǔn)確求解出評分相似矩陣和項目元數(shù)據(jù)的相似矩陣,從而提高推薦模型的預(yù)測精度、降低平均絕對偏差。利用歐幾里得函數(shù)、余弦相似度函數(shù)、修正的余弦函數(shù)和皮爾遜函數(shù)求解的評分相似矩陣和項目元數(shù)據(jù)相似矩陣的預(yù)測精度如圖3所示。從圖中可看出,與歐幾里得函數(shù)、余弦函數(shù)和皮爾遜函數(shù)相比,修正的余弦函數(shù)求解的相似矩陣用于模型預(yù)測評分具有更高的精度,因此文中采用修正的余弦函數(shù)作為求解相似矩陣的衡量標(biāo)準(zhǔn)。
(2)CatBoost中決策樹個數(shù)確定
CatBoost選用決策樹作為其弱學(xué)習(xí)器對項目的評分進(jìn)行預(yù)測,最終利用投票決策的方式求解出項目的預(yù)測評分。較少的決策樹數(shù)目會降低CatBoost對項目的預(yù)測精度,然而較多的決策樹數(shù)目則會增加CatBoost的運行時間。表3給出了決策樹數(shù)目為50~450時CatBoost的預(yù)測精度及運行時間。從表中可看出,當(dāng)CatBoost中決策樹數(shù)目小于300時,隨著決策樹數(shù)目的增加CatBoost的預(yù)測精度和運行時間均增加且決策樹數(shù)目為300時CatBoost的預(yù)測精度最高;當(dāng)CatBoost中決策樹數(shù)目超過300后,CatBoost的預(yù)測精度并未明顯增加但運行時間卻大幅增加,故而文中將CatBoost中決策樹數(shù)目設(shè)定為300。
表3 不同決策樹數(shù)目下模型的預(yù)測精度和運行時間
通過與RBF-CF、XGB-CF、UCF和CatBoost對比,從預(yù)測精度、運行時間和平均絕對偏差3個方面對各模型的有效性進(jìn)行評估。RBF-CF、XGB-CF、UCF、CatBoost和CatBoost-CF(文中所提算法)在不同近鄰集數(shù)目下的預(yù)測精度見表4。從表中可看出,隨著近鄰集數(shù)目的增加,各模型的預(yù)測精度均逐漸增加。此外,在不同近鄰集數(shù)目中,CatBoost-CF的預(yù)測精度均最高、XGB-CF和RBF-CF的預(yù)測精度次之,UCF的預(yù)測精度最差。這主要是由于CatBoost-CF模型在評分?jǐn)?shù)據(jù)中融入了項目元數(shù)據(jù),并且采用修正的余弦相似度函數(shù)和LINE求解的項目近鄰集更準(zhǔn)確,從而提高了模型的預(yù)測性能;XGB-CF中采用集成學(xué)習(xí)的策略,能夠提升模型的非線性建模能力;RBF-CF中采用神經(jīng)網(wǎng)絡(luò)抽取用戶評分歷史數(shù)據(jù)的深層特征,可緩解評分?jǐn)?shù)據(jù)稀疏性導(dǎo)致的模型預(yù)測精度低的問題。
表4 不同近鄰集數(shù)目下各算法的預(yù)測精度
RBF-CF、XGB-CF、UCF、CatBoost和CatBoost-CF在不同近鄰集數(shù)目下的運行時間見表5。從表中可容易的看出,UCF的運行時間最短,這主要是由于UCF直接采用相似矩陣進(jìn)行預(yù)測評分無需其它操作;CatBoost-CF的運行時間較UCF和CatBoost的運行時間長,這主要是由于CatBoost-CF需要經(jīng)過LINE網(wǎng)絡(luò)求解多階相鄰節(jié)點。RBF-CF和XGB-CF的運行時間相當(dāng)且前者運行時間更長,這主要是由于RBF神經(jīng)網(wǎng)絡(luò)需要多次迭代尋優(yōu)而XGB中包含多棵決策樹需要多次運算出最優(yōu)結(jié)果。
表5 不同近鄰集數(shù)目下各算法的運行時間
為進(jìn)一步說明CatBoost-CF在各階段的耗時,文中以近鄰集數(shù)目為85時進(jìn)行實驗,其各階段及總運行時間見表6。從表中可看出,CatBoost-CF中階段三耗時最多、階段一耗時次之、階段二耗時最少。這主要是由于CatBoost需要經(jīng)過多個弱學(xué)習(xí)器進(jìn)行項目評分的預(yù)測最后再投票決策,而階段一耗時則主要是由于LINE網(wǎng)絡(luò)迭代求解多階近鄰節(jié)點。
表6 CatBoost-CF在近鄰集為85時各階段的運行時間及總運行時間
模型的穩(wěn)定性決定了模型預(yù)測結(jié)果的可靠性,文中以MAE作為RBF-CF、XGB-CF、UCF、CatBoost和CatBoost-CF算法穩(wěn)定性的衡量標(biāo)準(zhǔn),各算法在不同近鄰集下的MAE值如圖4所示。從圖中可看出,隨著近鄰數(shù)集個數(shù)增加各推薦算法的MAE均逐漸降低,這說明隨著訓(xùn)練集樣本增加,各模型的穩(wěn)定性也逐漸增強(qiáng)。此外,在不同近鄰集數(shù)目下CatBoost-CF的MAE均低于對比方法,XGB-CF次之,UCF的MAE值最高。這主要是評分?jǐn)?shù)據(jù)中融入了項目元數(shù)據(jù)并由修正的余弦相似度函數(shù)和LINE精確求解項目的近鄰集,從而增強(qiáng)了CatBoost-CF的穩(wěn)定性。然而傳統(tǒng)的UCF直接采用評分?jǐn)?shù)據(jù)進(jìn)行預(yù)測評分而近鄰集數(shù)目越大其越不精確故而穩(wěn)定性最差。RBF-CF和XGB-CF的MAE值相當(dāng)且優(yōu)于UCF,說明集成學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)均可以改善模型的穩(wěn)定性。
圖4 各算法在不同近鄰集下的MAE
文中結(jié)合多重相似度分析和CatBoost提出了一種推薦算法,該算法具有較高的推薦精度、較強(qiáng)的穩(wěn)定性。與傳統(tǒng)推薦算法不同的是,其采用修正的余弦相似度函數(shù)和LINE求解項目元數(shù)據(jù)和評分?jǐn)?shù)據(jù)的精確近鄰集并由Skip-Gram挖掘其深層特征輸入CatBoost中預(yù)測項目評分最終由Top-N算法推薦項目。最后,采用MovieLens數(shù)據(jù)集對該算法性能進(jìn)行評估,結(jié)果表明,該算法推薦精度更高、穩(wěn)定性更強(qiáng),可緩解數(shù)據(jù)稀疏性帶來的推薦質(zhì)量低的問題。但是該算法較對比方法運行時間較長,在后續(xù)工作中嘗試將該算法并行化處理以縮短其運行時間。