徐健雄,何先波,何清玉
(西華師范大學(xué) a.計(jì)算機(jī)學(xué)院,b.地理科學(xué)學(xué)院,四川 南充 637009)
推薦系統(tǒng)自誕生起就受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。對(duì)于購(gòu)物網(wǎng)站和視頻網(wǎng)站而言,推薦系統(tǒng)能否根據(jù)用戶(hù)的喜好進(jìn)行個(gè)性化推薦,會(huì)在很大程度上影響公司的收益。早在2003年,亞馬遜購(gòu)物網(wǎng)站應(yīng)用Lindan等設(shè)計(jì)的基于物品的協(xié)同過(guò)濾算法,將其銷(xiāo)售額提升了30%。因此,捕捉用戶(hù)喜好對(duì)于推薦系統(tǒng)而言至關(guān)重要。
早期,基于用戶(hù)的協(xié)同過(guò)濾算法[1]和基于物品的協(xié)同過(guò)濾算法[2]應(yīng)用較廣泛,它們能很好地利用用戶(hù)和物品間的聯(lián)系實(shí)現(xiàn)推薦,但這些算法的構(gòu)建不夠靈活。而后基于矩陣分解的推薦算法[3]可使推薦系統(tǒng)的構(gòu)造變得更加靈活便捷,但卻難以解決數(shù)據(jù)稀疏性問(wèn)題,且不夠個(gè)性化。為了解決上述問(wèn)題,基于馬爾科夫鏈的推薦算法[4-5]被提出,該算法能一定程度捕捉用戶(hù)的興趣變化。但利用馬爾科夫鏈為每一用戶(hù)隨著時(shí)間構(gòu)建轉(zhuǎn)移矩陣,會(huì)使工作量和成本變得難以負(fù)擔(dān)。深度學(xué)習(xí)的方法,如Wide & Deep[6],能很好地?cái)M合用戶(hù)的興趣特征,并能將更多維的用戶(hù)特征信息組合起來(lái),但卻難以捕捉用戶(hù)的喜好變化。受益于A(yíng)ttention網(wǎng)絡(luò)在自然語(yǔ)言處理等領(lǐng)域的出色效果[7],利用Attention網(wǎng)絡(luò)捕捉用戶(hù)興趣偏好的方式被廣泛應(yīng)用于推薦系統(tǒng)中,如DIN[8]、DSIN[9]等,但其開(kāi)銷(xiāo)往往較大。
用戶(hù)個(gè)體的喜好往往是不斷變化和難以捕捉的,但用戶(hù)群體的喜好變化則穩(wěn)定得多。如男性和女性?xún)蓚€(gè)群體,不但可以從過(guò)往兩個(gè)群體的信息中得到其對(duì)運(yùn)動(dòng)、電影一類(lèi)話(huà)題不同的關(guān)注度,還可以根據(jù)奧運(yùn)會(huì)、奧斯卡和一些其他的新聞事件預(yù)測(cè)兩個(gè)群體接下來(lái)一段時(shí)間更有可能關(guān)注的話(huà)題。為此,本文構(gòu)建了一種基于用戶(hù)群體興趣變化的個(gè)性化推薦算法,該算法利用馬爾科夫鏈、K均值聚類(lèi)和多層神經(jīng)網(wǎng)絡(luò)的方式來(lái)捕捉用戶(hù)群體的興趣變化,并據(jù)此對(duì)用戶(hù)進(jìn)行個(gè)性化推薦。通過(guò)在MovieLens數(shù)據(jù)集上同多個(gè)流行算法的對(duì)比試驗(yàn)表明,本文提出的算法在多個(gè)評(píng)價(jià)指標(biāo)上優(yōu)于對(duì)比算法。
非個(gè)性化推薦算法往往利用物品的流行度對(duì)用戶(hù)進(jìn)行推薦,如一些電影網(wǎng)站根據(jù)電影的觀(guān)看量多少給用戶(hù)推送;而個(gè)性化推薦算法,則通過(guò)捕捉用戶(hù)的興趣偏好進(jìn)行推薦,用戶(hù)的興趣偏好不但包括他的歷史行為記錄,還和其基本信息等相聯(lián)系。除了各種協(xié)同過(guò)濾算法外,越來(lái)越多的深度學(xué)習(xí)算法被用來(lái)捕捉用戶(hù)的興趣偏好,進(jìn)行個(gè)性化推薦,如DeepFM[10]、NCF[11]等。DeepFM通過(guò)構(gòu)建線(xiàn)性和非線(xiàn)性的兩個(gè)部分,同時(shí)學(xué)習(xí)用戶(hù)高階和低階的興趣特征,之后通過(guò)多層神經(jīng)網(wǎng)絡(luò)將兩部分特征組合,聯(lián)合訓(xùn)練出最后的結(jié)果。NCF則通過(guò)將用戶(hù)的歷史行為信息分為長(zhǎng)期和短期兩個(gè)部分進(jìn)行學(xué)習(xí),利用矩陣分解和多層神經(jīng)網(wǎng)絡(luò)的方式模擬用戶(hù)兩個(gè)不同時(shí)期的興趣變化,最后利用多層神經(jīng)網(wǎng)絡(luò)將兩部分結(jié)合在一起,訓(xùn)練出最后的結(jié)果。
多層神經(jīng)網(wǎng)絡(luò)在上述算法中得到了廣泛的應(yīng)用,本文將利用多層神經(jīng)網(wǎng)絡(luò)的方法來(lái)捕捉用戶(hù)的興趣變化,其優(yōu)秀的記憶能力和擬合能力,能有效學(xué)習(xí)用戶(hù)的興趣特征,且具有開(kāi)銷(xiāo)小、運(yùn)行快的優(yōu)點(diǎn)。
單個(gè)用戶(hù)的喜好和其所在群體的喜好有很大的關(guān)聯(lián)。如對(duì)于大學(xué)生群體而言,向其推送兼職、考研一類(lèi)的信息往往能得到回應(yīng),而向其推送房產(chǎn)、養(yǎng)老一類(lèi)的信息則難以得到回復(fù)。一些基于聚類(lèi)的推薦算法一定程度上利用了這種聯(lián)系,如將用戶(hù)和物品分為不同類(lèi)別,通過(guò)類(lèi)別間聯(lián)系進(jìn)行推薦的Coculstering[12]算法,但該算法難以捕捉用戶(hù)群體的興趣變化。對(duì)于用戶(hù)群體而言,他們的喜好隨著時(shí)間變化。如對(duì)男性群體而言,在世界杯期間,整個(gè)群體關(guān)注世界杯相關(guān)新聞的比重上升;而在世界杯結(jié)束后,其他類(lèi)別的新聞?dòng)謺?huì)重新占據(jù)男性群體更多的關(guān)注。本文利用聚類(lèi)的方式將用戶(hù)劃分為不同的群體,并利用馬爾科夫鏈的方式捕捉不同用戶(hù)群體喜好的變化。
相對(duì)于用戶(hù)的興趣變化,用戶(hù)群體的興趣變化更加容易捕捉和有跡可循。通過(guò)捕捉用戶(hù)群體的興趣變化,可以更好地對(duì)用戶(hù)進(jìn)行推薦。為此本文提出了一種基于用戶(hù)群體興趣變化的個(gè)性化推薦算法。
設(shè)U={u1,u2,…,un}為用戶(hù)集合,I={i1,i2,…,in}為物品集合。首先使用用戶(hù)的所有基本信息,利用K均值聚類(lèi)算法將用戶(hù)劃分為k個(gè)用戶(hù)群體,之后劃分T個(gè)時(shí)段,用馬爾科夫鏈的方式得到不同的用戶(hù)群體在不同時(shí)段上對(duì)每個(gè)物品的點(diǎn)擊概率β。之后利用多層神經(jīng)網(wǎng)絡(luò)的方法,得到用戶(hù)對(duì)每個(gè)物品的點(diǎn)擊概率p,讓兩個(gè)點(diǎn)擊概率p與β相加,得到用戶(hù)對(duì)每個(gè)物品最終的點(diǎn)擊概率pfinal,最后按照這個(gè)概率的高低排序,取前N個(gè)最高點(diǎn)擊概率且用戶(hù)未交互過(guò)的物品,作為最終的用戶(hù)推薦列表。
用戶(hù)群體的劃分對(duì)于基于用戶(hù)群體興趣變化的個(gè)性化推薦算法至關(guān)重要。簡(jiǎn)單地按照用戶(hù)的某一項(xiàng)信息(如性別或年齡)劃分用戶(hù)群體,不但不能很好地利用用戶(hù)的其他信息,而且劃分的結(jié)果也過(guò)于寬泛。如豆瓣網(wǎng)上的用戶(hù)對(duì)電影的評(píng)分和其觀(guān)影數(shù)量就呈現(xiàn)明顯的正態(tài)分布,如果簡(jiǎn)單地將所有看電影多的人劃分為電影愛(ài)好者一個(gè)群體,那么,毫無(wú)疑問(wèn)會(huì)造成推薦系統(tǒng)性能的缺失。為此,本算法引入K均值聚類(lèi)算法進(jìn)行用戶(hù)群體的劃分。該算法適用于事先不知道具體劃分多少類(lèi)別數(shù)的問(wèn)題,且在數(shù)據(jù)量較大的時(shí)候收斂速度快,效果良好,利用用戶(hù)的所有基本信息,將用戶(hù)劃分為k個(gè)用戶(hù)群體。
(1)
(2)
利用式(1),可以找到第k類(lèi)用戶(hù)群體Gk的聚類(lèi)質(zhì)心ek,將得到的質(zhì)心ek帶入到式(2)中,可以計(jì)算出每一個(gè)用戶(hù)u距不同用戶(hù)群體質(zhì)心ek的距離,從而將用戶(hù)分配到離其最近的用戶(hù)群體,之后隨著每次訓(xùn)練,不斷更新這兩個(gè)公式,可以將每一個(gè)用戶(hù)分配到最適合的用戶(hù)群體中去。
為了衡量將用戶(hù)劃分為多少個(gè)用戶(hù)群體合適,引入CH(Calinski-Harabaz Index)和輪廓系數(shù)(Silhouette Coefficient)來(lái)衡量最佳的用戶(hù)群體數(shù)k。
(3)
(4)
式(3)中s(k)代表CH的計(jì)算結(jié)果,tr代表矩陣的跡,Bk是類(lèi)別間的協(xié)方差矩陣,Wk是類(lèi)別內(nèi)部協(xié)方差矩陣。CH代表用戶(hù)與其所在用戶(hù)群體的分離度與緊密度的比值,其值越大,代表每一個(gè)用戶(hù)群體自身越緊密,用戶(hù)群體之間差別越明顯,聚類(lèi)效果越好。式(4)中s代表輪廓系數(shù)的計(jì)算結(jié)果,a代表了用戶(hù)群體內(nèi)部用戶(hù)與其他用戶(hù)的平均距離,b代表用戶(hù)群體內(nèi)部用戶(hù)到最相鄰的不同用戶(hù)間的平均距離。輪廓系數(shù)值越大,代表聚類(lèi)效果越好。通過(guò)使用這兩個(gè)指標(biāo),可以衡量得出用戶(hù)群體最合適的劃分?jǐn)?shù)k。如表1所示,對(duì)于MovieLens數(shù)據(jù)集,取CH與輪廓系數(shù)皆不為負(fù)且最大時(shí)的k值為最合適的用戶(hù)群體劃分?jǐn)?shù),因此取k=8。
表1 MovieLens數(shù)據(jù)集上,不同k下的CH與輪廓系數(shù)值
本算法采用馬爾科夫鏈的方式來(lái)模擬這種用戶(hù)群體的喜好變化。將所有訓(xùn)練集的數(shù)據(jù)按照時(shí)間先后順序劃分為等長(zhǎng)的T個(gè)時(shí)段,為了避免數(shù)據(jù)過(guò)于稀疏和時(shí)間劃分跨度過(guò)大,導(dǎo)致馬爾科夫鏈的學(xué)習(xí)變的不準(zhǔn)確,這里按照月份將訓(xùn)練數(shù)據(jù)集進(jìn)行劃分,將某些數(shù)據(jù)量十分少的月份的數(shù)據(jù)等比例并入其上一個(gè)月和下一個(gè)月的數(shù)據(jù)中去。記錄每個(gè)用戶(hù)群體Gk對(duì)不同物品i在時(shí)段T上的交互信息,存在與物品i交互的記做1,未交互的記做0,如圖1所示。
對(duì)于一個(gè)用戶(hù)群體G,假設(shè)其在t1,t2,t3時(shí)刻上,對(duì)物品i1,i2,i3的點(diǎn)擊概率如圖2矩陣1所示,從矩陣1中可以得到用戶(hù)群體G在t1->t2時(shí)刻存在(i1,i2,i3)->(i2,i3),在t2->t3時(shí)刻存在(i2,i3)->(i1,i2)。則對(duì)于用戶(hù)群體G,上一時(shí)刻選了i2下一時(shí)刻選擇i1的概率為0.5(存在(i2,i3)->(i1,i2)),選擇i2的概率為1(存在(i1,i2,i3)->(i2,i3),(i2,i3)->(i1,i2)),選擇i3的概率為0.5(存在(i1,i2,i3)->(i2,i3)),從而可以構(gòu)建如圖2的矩陣2。
進(jìn)一步可以由圖2矩陣2得到下一個(gè)未知時(shí)刻t4時(shí),用戶(hù)群體G選擇i1的可能性為0.25=0.5*0+0.5*0.5(存在(i1,i2)->(i1))。則對(duì)于T=n,可以由公式(5)得到用戶(hù)群體G對(duì)下一時(shí)刻交互物品i的預(yù)測(cè)概率β,t代表不同的時(shí)段。
(5)
本算法利用多層神經(jīng)網(wǎng)絡(luò)的方式,進(jìn)行用戶(hù)建模,得到用戶(hù)對(duì)所有未交互商品的點(diǎn)擊概率。其建模結(jié)構(gòu)如圖3所示。將用戶(hù)特征和物品特征嵌入多維的Embedding層,通過(guò)將Embedding層提取的用戶(hù)特征和物品相互連接,作為多層網(wǎng)絡(luò)的輸入,從而擬合出用戶(hù)對(duì)未交互商品的預(yù)測(cè)點(diǎn)擊概率p。整個(gè)結(jié)構(gòu)嵌套四層網(wǎng)絡(luò),每一層網(wǎng)絡(luò)使用relu作為激活函數(shù)。
(6)
其中,σ是最后輸出層的激活函數(shù)softmax,hn代表整個(gè)網(wǎng)絡(luò)的隱藏層狀態(tài),w和b為多層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)。整個(gè)網(wǎng)絡(luò)利用交叉熵?fù)p失作為損失函數(shù),如公式(7)所示,逐個(gè)帶入真實(shí)值y和預(yù)測(cè)值p進(jìn)行計(jì)算,從而可以衡量出每次預(yù)測(cè)結(jié)果的好壞,并由此更新整個(gè)網(wǎng)絡(luò)。
(7)
將通過(guò)馬爾科夫鏈方式得到的用戶(hù)群體對(duì)未交互商品的預(yù)測(cè)點(diǎn)擊概率β,與多層神經(jīng)網(wǎng)絡(luò)得到的用戶(hù)對(duì)未交互商品的預(yù)測(cè)點(diǎn)擊概率p相加,從而可以得到最終用戶(hù)對(duì)未交互商品的點(diǎn)擊概率pfinal。公式為:
pfinal=p+β。
(8)
這種結(jié)合方式耗資源少,且能保留更多的信息。通過(guò)將用戶(hù)對(duì)所有未交互商品的點(diǎn)擊概率pfinal從大到小排列,將最高的前N個(gè)取出來(lái),構(gòu)成對(duì)用戶(hù)的最終推薦列表。
實(shí)驗(yàn)數(shù)據(jù)集為MovieLens-1M數(shù)據(jù)集。其每一條數(shù)據(jù)由用戶(hù)ID,物品ID,用戶(hù)對(duì)物品的評(píng)分和評(píng)分時(shí)間組成。每個(gè)用戶(hù)都至少擁有20條評(píng)分?jǐn)?shù)據(jù),評(píng)分區(qū)間為1~5。共由6040個(gè)用戶(hù),3952部電影和1 000 209條評(píng)分?jǐn)?shù)據(jù)構(gòu)成。用戶(hù)信息包括性別、年齡、郵件地址,物品信息包括電影名、電影類(lèi)型、電影導(dǎo)演、電影演員和發(fā)布時(shí)間。
3.2.1 數(shù)據(jù)集劃分
將數(shù)據(jù)集按照8∶2的比例劃分為訓(xùn)練集和測(cè)試集。對(duì)于訓(xùn)練集,將所有與用戶(hù)有交互的物品項(xiàng)取作正樣本;隨機(jī)抽取跟正樣本數(shù)量相同的且與用戶(hù)無(wú)交互的物品項(xiàng)作為負(fù)樣本。對(duì)于測(cè)試集,將所有與用戶(hù)有交互的物品項(xiàng)取做正樣本;隨機(jī)抽取跟正樣本數(shù)量相同的與用戶(hù)無(wú)交互且不存在于訓(xùn)練集上的物品項(xiàng)作為負(fù)樣本。
3.2.2 準(zhǔn)確率
準(zhǔn)確率(Precision)描述的是最終推薦列表中發(fā)生過(guò)的用戶(hù)-物品評(píng)分記錄的比例,其值越高,代表最終推薦效果越好,如式(9)所示,T(u)表示用戶(hù)在測(cè)試集上的正樣本集合,R(u)表示推薦系統(tǒng)返回的推薦列表:
(9)
3.2.3 召回率
召回率(Recall)描述的是最終推薦列表中發(fā)生過(guò)的用戶(hù)-物品評(píng)分記錄在測(cè)試集正樣本集合上的比例,其值越高,代表最終的推薦效果越好,如式(10)所示:
(10)
本算法使用了多層神經(jīng)網(wǎng)絡(luò)的方式捕捉用戶(hù)興趣變化,并使用了聚類(lèi)的算法劃分用戶(hù)群體,因此選取一個(gè)聚類(lèi)的算法CoClustering和一個(gè)多層神經(jīng)網(wǎng)絡(luò)的方法Deep-FM作為對(duì)比算法,同時(shí)選取兩個(gè)經(jīng)典的推薦算法UCF和MF用于衡量本算法的有效性。
1)UCF:基于用戶(hù)的協(xié)同過(guò)濾算法,利用用戶(hù)間的相似性,將相似用戶(hù)喜好的物品推薦給用戶(hù)[1]。
2)CoClustering:一種利用用戶(hù)間和物品間的相似性進(jìn)行推薦的聚類(lèi)推薦算法[12]。
3)MF:通過(guò)將用戶(hù)物品的交互矩陣劃分為p*k,q*k兩個(gè)矩陣,利用這兩個(gè)矩陣相乘得到預(yù)測(cè)結(jié)果[3]。
4)Deep-FM:將用戶(hù)和物品等多維特征,通過(guò)FM和深層網(wǎng)絡(luò)兩個(gè)部分分別進(jìn)行學(xué)習(xí),用多層神經(jīng)網(wǎng)絡(luò)將兩部分的值結(jié)合到一起,擬合出最后的結(jié)果[10]。
為了探究本算法的有效性,本文在MovieLens-1M數(shù)據(jù)集上,將上述算法同本算法進(jìn)行了對(duì)比試驗(yàn),結(jié)果如表3所示,TOP-N代表按照用戶(hù)對(duì)未交互物品點(diǎn)擊概率從低到高排序,返回的前N個(gè)作為推薦列表的物品。從表3中可以看出,隨著TOP-N的N值增大,所有算法的準(zhǔn)確率降低,召回率提升?;诰垲?lèi)的Coclustering算法效果好于傳統(tǒng)的基于用戶(hù)的協(xié)同過(guò)濾算法,表明聚類(lèi)算法能有效捕捉用戶(hù)間聯(lián)系。本算法利用聚類(lèi)算法將用戶(hù)劃分入不同的用戶(hù)群體。
表3 不同TOP-N下不同算法的準(zhǔn)確率與召回率
矩陣分解算法MF效果良好,說(shuō)明了組合用戶(hù)物品信息進(jìn)行推薦的意義。利用多層神經(jīng)網(wǎng)絡(luò)方法的Deep-FM算法效果明顯好于MF和CoClustering算法,體現(xiàn)了多層神經(jīng)網(wǎng)絡(luò)在擬合用戶(hù)興趣方面的強(qiáng)大能力。本算法利用多層神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)用戶(hù)對(duì)所有未交互物品的點(diǎn)擊概率。無(wú)論TOP-N值如何變化,本算法都始終優(yōu)于上述對(duì)比算法。
接下來(lái)進(jìn)一步討論基于用戶(hù)群體興趣變化的個(gè)性化推薦算法中,用戶(hù)群體興趣變化對(duì)用戶(hù)個(gè)性化推薦的效果。為此進(jìn)行了如圖4所示的試驗(yàn),探究是否加入用戶(hù)群體對(duì)物品點(diǎn)擊概率β對(duì)兩個(gè)評(píng)價(jià)指標(biāo)的影響。從圖4中可以看出,加入用戶(hù)群體對(duì)物品點(diǎn)擊概率β后,基于用戶(hù)群體興趣變化的個(gè)性化推薦算法在召回率和準(zhǔn)確率上都有明顯提升,這表明了本文捕捉用戶(hù)群體興趣變化方法的有效性,以及用戶(hù)群體興趣變化對(duì)用戶(hù)個(gè)性化推薦的正面影響。