何 麗 麻 強(qiáng)
(北方工業(yè)大學(xué)信息學(xué)院,100144,北京)
根據(jù)中國(guó)互聯(lián)網(wǎng)信息中心發(fā)布的《中國(guó)互聯(lián)網(wǎng)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》中顯示,我國(guó)上網(wǎng)人數(shù)已達(dá)8.29億,其中通過(guò)網(wǎng)絡(luò)購(gòu)物的用戶超過(guò)了6億,年增長(zhǎng)率為14.4%. 由此可見(jiàn),我國(guó)的互聯(lián)網(wǎng)已經(jīng)進(jìn)入了高速發(fā)展階段,但隨之也帶來(lái)了信息過(guò)載的問(wèn)題[1],在網(wǎng)絡(luò)中獲取所需的信息成了一件困難的事情,因此推薦系統(tǒng)應(yīng)運(yùn)而生. 通過(guò)分析用戶數(shù)據(jù)為其推薦可能感興趣的信息已經(jīng)在電商、電影、圖書(shū)、音樂(lè)、廣告、新聞等各大領(lǐng)域中應(yīng)用,并取得了良好的效果. 近幾年,相關(guān)學(xué)者致力于研究提升推薦精度的方法,并提出了基于內(nèi)容的推薦、基于鄰域的推薦、基于模型的推薦和協(xié)同過(guò)濾推薦.[3]其中,基于用戶和商品的協(xié)同過(guò)濾(Collaborative Fdtering,簡(jiǎn)稱CF)推薦是目前使用較多的算法. 其核心思想是根據(jù)用戶真實(shí)的評(píng)分,預(yù)測(cè)出一個(gè)密集的評(píng)分矩陣. 但是如果數(shù)據(jù)非常稀疏,可能造成預(yù)測(cè)的矩陣不準(zhǔn)確,進(jìn)而影響推薦效果. 在電商領(lǐng)域中,用戶在購(gòu)買(mǎi)商品后得到的評(píng)分?jǐn)?shù)據(jù)相對(duì)于行為數(shù)據(jù)來(lái)說(shuō)非常少,如果只用較少的顯式評(píng)分作為判斷用戶對(duì)商品的喜好程度,并不能產(chǎn)生好的推薦結(jié)果. 對(duì)于這些問(wèn)題,不少學(xué)者提出了解決方案. 例如:Ma和Liu等人將用戶的社交關(guān)系融入到模型學(xué)習(xí)過(guò)程中[4];Chen等人提出了一種融合時(shí)間序列和近鄰信息的奇異值分解特征算法.[5]
然而,上述工作均是基于顯式信息的評(píng)分矩陣,在真實(shí)情景中,用戶產(chǎn)生更多的是隱式行為數(shù)據(jù),由于其數(shù)量巨大,更加穩(wěn)定的特點(diǎn),近幾年研究的學(xué)者越來(lái)越多,用戶在挑選商品的過(guò)程中產(chǎn)生的數(shù)據(jù)可以真實(shí)地反映用戶的態(tài)度,具有很高的研究?jī)r(jià)值.
隱式反饋數(shù)據(jù)一般存在以下3種明顯的缺陷:1)數(shù)據(jù)噪聲高:用戶的行為記錄是購(gòu)買(mǎi)過(guò)程中的一種操作,這種操作有很大可能來(lái)自于隨便看看或者誤點(diǎn)廣告等,不能代表用戶的偏好. 2)缺少負(fù)反饋:隱式反饋數(shù)據(jù)不能反映出用戶對(duì)某物品是否喜歡. 3)偏好程度無(wú)法評(píng)估:?jiǎn)未涡袨橛涗浛尚哦炔⒉桓?,只有高頻率的事件才有可信度.
針對(duì)這些缺陷,研究人員提出了許多基于隱式反饋的推薦算法,其中較主流的方法是將隱式反饋轉(zhuǎn)換為顯示評(píng)分形式,通過(guò)協(xié)同過(guò)濾推薦算法進(jìn)行推薦. Pan等人提出了加權(quán)的交替最小二乘法算法(Weighted Alternating Least Squares,簡(jiǎn)稱WALS),其核心思想是對(duì)所有的樣本進(jìn)行加權(quán),判斷用戶是否對(duì)某件商品進(jìn)行了操作,從而將其權(quán)重設(shè)置為1或小于1的值,通過(guò)WALS算法有效地對(duì)行為數(shù)據(jù)進(jìn)行了轉(zhuǎn)換.[6]Min等人提出了一種MCF算法,將用戶隱式行為轉(zhuǎn)換為評(píng)分,用戶對(duì)物品每產(chǎn)生一次行為,便給該物品的計(jì)數(shù)加1,用來(lái)建立用戶與物品間的偏好對(duì)應(yīng)關(guān)系,用戶喜歡某物品的程度跟計(jì)數(shù)高低有直接關(guān)系.[7]王聰提出了主觀上給用戶的行為設(shè)定數(shù)值,點(diǎn)擊1分、收藏2分、加購(gòu)物車3分、購(gòu)買(mǎi)5分,然后通過(guò)協(xié)同過(guò)濾算法進(jìn)行推薦,也能夠得到較好的推薦結(jié)果.[8]但由于該算法是主觀的賦值,缺乏對(duì)整個(gè)數(shù)據(jù)環(huán)境的客觀分析,并且每個(gè)用戶對(duì)于每種行為的權(quán)重也不一樣,不能夠做到個(gè)性化的推薦.
本文將用戶不同的隱式反饋信息轉(zhuǎn)換為顯示評(píng)分的形式,并融入了用戶行為購(gòu)買(mǎi)率,對(duì)層次分析法(Ardytic Hierarchy Process,簡(jiǎn)稱AHP)算法得到的權(quán)值進(jìn)行個(gè)性化的調(diào)整,通過(guò)spark大數(shù)據(jù)平臺(tái)中的交替最小二乘法 (Alternative Least Squares,簡(jiǎn)稱ALS)進(jìn)行模型訓(xùn)練. 實(shí)驗(yàn)結(jié)果表明,該方法能夠有效的為每個(gè)用戶賦予不同行為權(quán)重,緩解了數(shù)據(jù)稀疏問(wèn)題,使推薦的準(zhǔn)確性有了更好的提升.
用戶在購(gòu)買(mǎi)商品的過(guò)程中會(huì)產(chǎn)生大量的隱式反饋信息,一般可以采用主觀和客觀2種賦權(quán)方法將其轉(zhuǎn)換為分值的形式,最長(zhǎng)用的主觀賦權(quán)法分為二項(xiàng)系數(shù)法、AHP算法和專家調(diào)查法;客觀賦權(quán)法分為標(biāo)準(zhǔn)離差法、熵權(quán)法和CRITIC法.
在信息論領(lǐng)域,事務(wù)的穩(wěn)定性一般是通過(guò)信息熵來(lái)度量,得到的信息量越多,不確定性越低,信息熵越小. 相反,信息量越少,不確定性越高,信息熵越大. 根據(jù)熵的性質(zhì),一般可以把熵看作是一種物質(zhì)的無(wú)序程度或隨機(jī)性,也可以通過(guò)熵來(lái)判斷一種指標(biāo)的離散程度. 一個(gè)指標(biāo)的離散度越高,該指標(biāo)對(duì)整體評(píng)價(jià)的影響就越大.
因此,通過(guò)每種指標(biāo)的不確定性,可以通過(guò)熵權(quán)法來(lái)為各個(gè)指標(biāo)計(jì)算出權(quán)重,對(duì)整體評(píng)分有一個(gè)較好的依據(jù). 計(jì)算過(guò)程有7個(gè)步驟:
1)選取n個(gè)用戶和m個(gè)指標(biāo),在本文中指標(biāo)為用戶產(chǎn)生的瀏覽、加購(gòu)、刪購(gòu)、下單、收藏5種行為,符號(hào)xij表示第i個(gè)用戶的第j個(gè)指標(biāo)的數(shù)值(i=1,2,…,n;j=1,2,…,m).
2)歸一化:由于每項(xiàng)指標(biāo)的單位不同,因此需要將不同單位的指標(biāo)進(jìn)行標(biāo)準(zhǔn)化處理,由于存在正負(fù)差異較大的指標(biāo),因此對(duì)正負(fù)指標(biāo)的標(biāo)準(zhǔn)化處理也會(huì)不同,正向指標(biāo)越高越好,負(fù)向指標(biāo)越低越好.
正項(xiàng)指標(biāo):
(1)
負(fù)項(xiàng)指標(biāo):
(2)
則x′ij為第i個(gè)用戶的第j個(gè)指標(biāo)歸一化后的數(shù)值. 為了方便起見(jiàn),歸一化后的數(shù)據(jù)仍記為xij.
3)計(jì)算第j項(xiàng)指標(biāo)中第i個(gè)樣本占當(dāng)前指標(biāo)的比重:
j=1,2,…,m
(3)
4)計(jì)算第j項(xiàng)指標(biāo)的熵值:
(4)
5)計(jì)算信息熵冗余度:
dj=1-ej,j=1,2,…,m
(5)
6)計(jì)算各項(xiàng)指標(biāo)的權(quán)值:
(6)
7)計(jì)算各樣本的綜合得分:
(7)
1.2.AHP算法
AHP是一種具有系統(tǒng)性和層次性,并且將定性與定量融合在一起的分析方法. 根據(jù)每個(gè)指標(biāo)對(duì)結(jié)果的影響程度,主觀的對(duì)指標(biāo)進(jìn)行比較,得出比例結(jié)果. 最后通過(guò)聯(lián)合已知函數(shù)求解出每個(gè)指標(biāo)的權(quán)重. 這種方法的特點(diǎn)是使用更少的定量信息使決策的思維數(shù)學(xué)化,在此基礎(chǔ)上深入研究本質(zhì),影響因素和內(nèi)涵,比較適合在指標(biāo)數(shù)量較少的情況下使用.
表1 熵權(quán)法賦權(quán)結(jié)果
分析問(wèn)題的性質(zhì)并結(jié)合想達(dá)到的目標(biāo),層次分析法能夠把問(wèn)題分解成不同的元素,元素之間存在相互關(guān)系、從屬和影響,從而形成一個(gè)多層次的結(jié)構(gòu)模型. 在確定每一層的權(quán)重時(shí),主觀賦值往往比較困難. 因此,Saaty等人提出將所有的指標(biāo)進(jìn)行兩兩比較,盡量減少因性質(zhì)不同而造成比較的困難,提高比較的準(zhǔn)確性.[9]兩兩比較的賦值可參考表2.
表2 AHP算法賦值參考表
對(duì)于實(shí)驗(yàn)中的5種行為,按照重要性順序?yàn)橐来闻帕袨橄聠巍⒓尤胭?gòu)物車、收藏、瀏覽、刪除購(gòu)物車,權(quán)重分別記為:w1,w2,w3,w4,w5. 其中刪除購(gòu)物車體現(xiàn)出用戶不在關(guān)注此商品,因此可以當(dāng)做負(fù)反饋,本文給出表3比值作為實(shí)驗(yàn)參數(shù).
表3 AHP算法公式取值
由于權(quán)值的總和為1,通過(guò)聯(lián)合表3中的式子得出每種行為對(duì)應(yīng)的權(quán)值,結(jié)果如表4所示.
表4 AHP算法賦權(quán)結(jié)果
推薦系統(tǒng)想要得到更加準(zhǔn)確的數(shù)據(jù),訓(xùn)練數(shù)據(jù)必然非常龐大,但數(shù)據(jù)量過(guò)大會(huì)造成運(yùn)行時(shí)間過(guò)長(zhǎng),基于此,本文利用處理大數(shù)據(jù)業(yè)務(wù)的spark平臺(tái),進(jìn)行推薦算法的模型訓(xùn)練.
除了計(jì)算速度慢、運(yùn)行時(shí)間過(guò)長(zhǎng)的問(wèn)題,有些用戶喜歡“貨比三家”,僅瀏覽商品但不下訂單;有些用戶在挑選商品時(shí)不浪費(fèi)太多時(shí)間,看到比較滿意的商品便會(huì)下單. 因此第一類用戶的瀏覽行為權(quán)重應(yīng)該低于第二類用戶,這種現(xiàn)象說(shuō)明了不同用戶在購(gòu)買(mǎi)商品時(shí)的行為權(quán)值不盡相同,不論主觀賦權(quán)法還是客觀賦權(quán)法,得到的權(quán)重只有一組,只能代表當(dāng)前數(shù)據(jù)集下的平均權(quán)重,不能反映出每種用戶的個(gè)性行為權(quán)重.
在AHP算法的基礎(chǔ)上,本文提出了AHP-PR(Analytic Hierarchy Process Purchase Rate)算法,由于每個(gè)用戶對(duì)待商品的態(tài)度各不相同,有的用戶喜歡將商品添加到購(gòu)物車或者收藏夾然后慢慢比較,最終挑選出來(lái)一款比較喜歡的產(chǎn)品購(gòu)買(mǎi),因此在眾多行為數(shù)據(jù)中,瀏覽和加購(gòu)物車的數(shù)據(jù)遠(yuǎn)不如購(gòu)買(mǎi)行為的數(shù)據(jù)重要;相反的,有的用戶看好一件喜歡的商品便會(huì)購(gòu)買(mǎi),不會(huì)產(chǎn)生更多的數(shù)據(jù),因此瀏覽行為或者加購(gòu)行為變得比較重要. 本文將各種行為的購(gòu)買(mǎi)率(Purchase Rate,簡(jiǎn)稱PR)融入到AHP方法中,在得到每個(gè)行為的權(quán)重后,融入了每個(gè)用戶的每種行為購(gòu)買(mǎi)率,對(duì)AHP算法得到的權(quán)值進(jìn)行調(diào)整,設(shè)置最大浮動(dòng)比例為f. 由于每個(gè)用戶的購(gòu)買(mǎi)率各不相同,因此對(duì)2種行為的調(diào)整幅度也會(huì)不同,進(jìn)而構(gòu)造出個(gè)性化的權(quán)重值. 以瀏覽購(gòu)買(mǎi)率為例給出公式(8).
(8)
其中n為用戶產(chǎn)生每種行為的次數(shù),r瀏覽為用戶的瀏覽購(gòu)買(mǎi)率. 將瀏覽購(gòu)買(mǎi)率劃分為9個(gè)階段,若為0時(shí),則代表該用戶的瀏覽行為相對(duì)購(gòu)買(mǎi)行為而言極不重要,因此將其權(quán)重降低百分之百最大浮動(dòng)比例. 若為1時(shí),則代表該用戶的瀏覽行為相對(duì)購(gòu)買(mǎi)行為而言極其重要,因此將其權(quán)重增加百分之百最大浮動(dòng)比例. 剩下7個(gè)階段將按照瀏覽購(gòu)買(mǎi)率的均值進(jìn)行劃分,詳情如表5所示.
表5 PR浮動(dòng)比例
根據(jù)表5,瀏覽行為權(quán)重會(huì)根據(jù)每個(gè)用戶的購(gòu)買(mǎi)率不同進(jìn)行相應(yīng)的調(diào)整,同樣的,加入購(gòu)物車的購(gòu)買(mǎi)率和收藏的購(gòu)買(mǎi)率也按照上述方法進(jìn)行計(jì)算,最終得到了基于用戶實(shí)際購(gòu)買(mǎi)情況產(chǎn)生的權(quán)重,進(jìn)而得到個(gè)性化的評(píng)分結(jié)果.
本實(shí)驗(yàn)數(shù)據(jù)集來(lái)自京東算法大賽中提供的2018年2月— 4月京東商城中用戶對(duì)商品的6種行為數(shù)據(jù),分別是瀏覽、加購(gòu)、收藏、刪夠、下單和點(diǎn)擊. 將數(shù)據(jù)按照月份劃分,得到3個(gè)數(shù)據(jù)集,每個(gè)月的行為數(shù)據(jù)均達(dá)到了千萬(wàn)級(jí),以3月數(shù)據(jù)為例,共有96 087個(gè)用戶,23 753件商品以及25 916 378條行為. 但并非所有數(shù)據(jù)都是有效的,本文首先對(duì)原數(shù)據(jù)集進(jìn)行清洗,由于點(diǎn)擊行為和瀏覽行為在一定程度上非常相似,且瀏覽行為是指對(duì)商品詳情頁(yè)的瀏覽,比點(diǎn)擊行為更具有代表性,因此本文只分析瀏覽、加購(gòu)、刪購(gòu)、下單、收藏這5種行為. 按照下面3種情況進(jìn)行過(guò)濾:1)點(diǎn)擊行為數(shù)量巨大但無(wú)購(gòu)買(mǎi)行為的數(shù)據(jù);2)點(diǎn)擊行為數(shù)量較大但無(wú)任何收藏或加購(gòu)等其他行為的數(shù)據(jù);3)無(wú)任何瀏覽或點(diǎn)擊行為,但有收藏或加購(gòu)行為的數(shù)據(jù). 表6為清洗前后數(shù)據(jù)情況.
表6 數(shù)據(jù)集清洗前后數(shù)據(jù)總數(shù)
本實(shí)驗(yàn)的環(huán)境基于spark平臺(tái), spark提出了一種彈性分布式數(shù)據(jù)集RDD(Resilient Distributed Dataset). 具有非常好的容錯(cuò)性,當(dāng)一個(gè)RDD分片丟失時(shí),spark會(huì)根據(jù)日志中的信息復(fù)原RDD,從而保證數(shù)據(jù)前后一致性. RDD緩存會(huì)存儲(chǔ)在內(nèi)存中,下次計(jì)算時(shí)直接從內(nèi)存中讀取,比一般的大數(shù)據(jù)平臺(tái)節(jié)省從磁盤(pán)中讀取數(shù)據(jù)的時(shí)間,提高計(jì)算速度,非常適合做迭代計(jì)算的矩陣分解算法.
本實(shí)驗(yàn)采用spark的原生語(yǔ)言Scala編寫(xiě)程序,綜合利用spark的機(jī)器學(xué)習(xí)庫(kù)和Hadoop的分布式文件系統(tǒng),實(shí)驗(yàn)中的參數(shù)按如下設(shè)定,maxIter為15、rank為50、lambda為0.25、floatMax為0.5.
熵權(quán)法是目前主流的賦權(quán)方法,具有客觀公正的特點(diǎn). 采用ALS作為優(yōu)化矩陣分解模型損失函數(shù)的算法[10],為了確定實(shí)驗(yàn)中ALS算法的最優(yōu)參數(shù),本文先通過(guò)熵權(quán)法對(duì)隱式信息進(jìn)行轉(zhuǎn)換,并將數(shù)據(jù)集按照8∶2的比例劃分為訓(xùn)練集和測(cè)試集. 使用參考文獻(xiàn)[11]中的評(píng)估方法作為評(píng)價(jià)指標(biāo),RMSE和MAE的計(jì)算方法分別如公式(9)和(10)所示.
(9)
(10)
這2種評(píng)估方法的誤差越小,表示算法的預(yù)測(cè)準(zhǔn)確率越高. 協(xié)同過(guò)濾推薦算法中rank一般設(shè)置在10~100為最好,隨著rank越來(lái)越高,執(zhí)行所消耗的時(shí)間會(huì)成倍提升,設(shè)計(jì)此實(shí)驗(yàn)是為了獲取最優(yōu)rank和lambda的值,如圖1所示.
通過(guò)圖1可以看出當(dāng)rank值在50以上會(huì)有良好的結(jié)果,但隨著rank取值越大,消耗時(shí)間成倍增長(zhǎng),因此rank選擇50,而lambda為0.25時(shí)RMSE和MAE最小,因此下面將基于這2個(gè)取值進(jìn)行實(shí)驗(yàn). 本文采用了4種賦權(quán)方法進(jìn)行實(shí)驗(yàn):熵權(quán)法、AHP、混合法以及AHP-PR算法. 將隱式反饋信息轉(zhuǎn)換為顯式評(píng)分,并通過(guò)隱語(yǔ)義模型(LFM)的ALS算法對(duì)京東數(shù)據(jù)集中不同月份的數(shù)據(jù)進(jìn)行訓(xùn)練. 實(shí)驗(yàn)結(jié)果如表7所示.
表7 實(shí)驗(yàn)結(jié)果
從表7中可得出,使用AHP-PR算法在RMSE和MAE兩個(gè)評(píng)估方法中分別比熵權(quán)法提高了58.15%和58.46%,比AHP算法提高了42.45%和42.29%,比混合法提高了14.39%和12.74%,從圖2也可值觀看出改進(jìn)后的AHP算法能夠較好地提高推薦的準(zhǔn)確度.
針對(duì)推薦系統(tǒng)中存在的因用戶評(píng)分?jǐn)?shù)據(jù)稀少而導(dǎo)致推薦結(jié)果精度較低的問(wèn)題,本文提出了一種將用戶的隱式行為轉(zhuǎn)換為分值形式,通過(guò)融入用戶的瀏覽購(gòu)買(mǎi)率給每個(gè)用戶分配個(gè)性化的行為權(quán)重,大大提高了推薦系統(tǒng)的準(zhǔn)確率. 借助大數(shù)據(jù)平臺(tái)加快計(jì)算效率,在spark集群下進(jìn)行實(shí)驗(yàn),結(jié)果表明,使用AHP-PR方法不僅可以有效的解決推薦系統(tǒng)中矩陣稀疏的問(wèn)題,還能提高推薦的準(zhǔn)確率,接下來(lái)的研究工作將引入時(shí)間梯度和各行為的收藏率或加購(gòu)率,以期獲得更好的推薦效果.