王君威,余 粟
(上海工程技術(shù)大學(xué) 機(jī)械與汽車(chē)工程學(xué)院,上海 201620)
隨著互聯(lián)網(wǎng)的興起以及淘寶、京東等電子商務(wù)網(wǎng)站的發(fā)展,商品數(shù)據(jù)以爆發(fā)式的速度積累,信息量也隨之增長(zhǎng)。當(dāng)顧客面對(duì)如此龐大體量的商品數(shù)據(jù)信息時(shí),往往會(huì)出現(xiàn)“信息迷失”,個(gè)性化推薦也就應(yīng)運(yùn)而生。個(gè)性化的推薦系統(tǒng)能夠根據(jù)用戶和商品的特有屬性和用戶對(duì)商品的行為信息,向目標(biāo)客戶提供能夠符合其興趣的商品和信息,幫助目標(biāo)客戶完成購(gòu)物。在數(shù)據(jù)科學(xué)中,能在個(gè)性化的推薦系統(tǒng)中使用的主流技術(shù)有關(guān)聯(lián)規(guī)則,聚類(lèi)算法,協(xié)同過(guò)濾算法等等,協(xié)同過(guò)濾算法是目前在推薦算法領(lǐng)域應(yīng)用最多的一類(lèi)算法。
傳統(tǒng)的協(xié)同過(guò)濾算法不需要用戶提出明確的需求,而是基于顯式數(shù)據(jù)即用戶對(duì)商品的直接評(píng)價(jià),給目標(biāo)客戶進(jìn)行商品的個(gè)性化推薦。傳統(tǒng)的協(xié)同過(guò)濾算法主要包含近鄰模型和隱向量模型兩種實(shí)現(xiàn)方式,近鄰模型主要是尋找用戶或項(xiàng)目間的關(guān)系,借此構(gòu)建近鄰集合,由近鄰集合的評(píng)分產(chǎn)生預(yù)測(cè),近鄰模型的算法實(shí)現(xiàn)可以分為基于用戶和基于項(xiàng)目的協(xié)同過(guò)濾兩種。基于用戶的協(xié)同過(guò)濾算法是通過(guò)用戶對(duì)商品的評(píng)分來(lái)估測(cè)用戶的興趣大小,通過(guò)對(duì)所有用戶興趣的估測(cè)作為相似度的衡量標(biāo)準(zhǔn),根據(jù)計(jì)算出的相似度,來(lái)獲取目標(biāo)用戶的最近鄰居,再依靠最近鄰居的興趣估測(cè),產(chǎn)生目標(biāo)用戶對(duì)其他商品的預(yù)測(cè)評(píng)分,最后按照預(yù)測(cè)評(píng)分從商品集合中產(chǎn)生商品推薦。基于項(xiàng)目的協(xié)同過(guò)濾算法和基于用戶的協(xié)同過(guò)濾算法相似,都是根據(jù)相似度計(jì)算產(chǎn)生目標(biāo)客戶商品推薦?;陧?xiàng)目的過(guò)濾算法的不同之處是根據(jù)喜歡商品的用戶量來(lái)計(jì)算商品的相似度。
針對(duì)用戶的評(píng)價(jià)數(shù)據(jù)規(guī)模大、數(shù)據(jù)稀疏、推薦精度和準(zhǔn)確度低,以及冷啟動(dòng)等問(wèn)題,專家們?cè)诮?jīng)典協(xié)同過(guò)濾算法的基礎(chǔ)上進(jìn)行了改進(jìn)和修正。李紅梅等采用多探尋機(jī)制改進(jìn)的P穩(wěn)態(tài)分布的局部敏感哈希,對(duì)用戶評(píng)分?jǐn)?shù)據(jù)進(jìn)行降維與索引,來(lái)實(shí)現(xiàn)近似近鄰搜索,快速獲取目標(biāo)用戶的近鄰用戶集合,在一定程度上提高了準(zhǔn)確率;任永功等提出了混合填充算法來(lái)緩解數(shù)據(jù)稀疏,通過(guò)相似物品的評(píng)分來(lái)填補(bǔ)稀疏數(shù)據(jù),基于填充后的數(shù)據(jù)來(lái)確定目標(biāo)的近鄰用戶,雖然提高了用戶推薦的精度,但在數(shù)據(jù)高度稀疏的情況下,類(lèi)似商品的評(píng)分填充較為單一。本文在傳統(tǒng)協(xié)同過(guò)濾和關(guān)聯(lián)規(guī)則等推薦算法的基礎(chǔ)上,對(duì)隱式數(shù)據(jù)進(jìn)行調(diào)整,通過(guò)改進(jìn)后用戶評(píng)分公式來(lái)計(jì)算用戶興趣,通過(guò)Apriori算法獲取的強(qiáng)關(guān)聯(lián)規(guī)則來(lái)降低原始評(píng)分?jǐn)?shù)據(jù)索引,構(gòu)建目標(biāo)用戶的近鄰集合,可以有效提高推薦算法的準(zhǔn)確度。
通過(guò)個(gè)性化的協(xié)同過(guò)濾算法對(duì)目標(biāo)用戶提供合適的商品推薦,幫助目標(biāo)用戶完成購(gòu)物過(guò)程,協(xié)同過(guò)濾推薦算法的實(shí)現(xiàn)步驟分為3步:獲取目標(biāo)用戶信息,尋找目標(biāo)的最近鄰居,獲取前個(gè)()的商品推薦;獲取用戶信息并不是指要獲取用戶的自有屬性,而是要獲取用戶對(duì)商品的評(píng)價(jià),這種評(píng)價(jià)一般以數(shù)字的形式呈現(xiàn)用戶對(duì)商品的興趣大小,以此計(jì)算用戶之間的相似性;通過(guò)相似性計(jì)算尋找目標(biāo)客戶的最近鄰居,就是尋找與目標(biāo)客戶在興趣評(píng)分上最相近的用戶;最后產(chǎn)生的推薦是根據(jù)最近鄰居對(duì)商品的評(píng)分信息,產(chǎn)生目標(biāo)用戶的預(yù)測(cè)評(píng)分,從中選出前個(gè)評(píng)分高的預(yù)測(cè)商品,完成針對(duì)目標(biāo)用戶的個(gè)性化推薦。
假設(shè)系統(tǒng)中的用戶集合{,,,…,U},商品集合{,,,…,I},用戶評(píng)分矩陣表示用戶集合中的每個(gè)用戶對(duì)商品集合中感興趣的商品的興趣大小,見(jiàn)表1。表示商品的數(shù)目,表示用戶的人數(shù),R表示第個(gè)用戶對(duì)第個(gè)商品的興趣值。
表1 用戶商品偏好模型Tab.1 User product preference model
用來(lái)衡量用戶是否相似的計(jì)算公式很多,常用余弦相似度、修正余弦相似度以及皮爾遜相關(guān)系數(shù)(Pearson相關(guān)系數(shù))等。余弦相似度常用來(lái)計(jì)算向量間的余弦?jiàn)A角,通過(guò)角度的大小來(lái)衡量?jī)蓚€(gè)向量的相似性;修正余弦相似度在余弦相似度的基礎(chǔ)上調(diào)整了不同用戶對(duì)商品的評(píng)分尺度的差異;Pearson相關(guān)系數(shù)用來(lái)表示兩個(gè)變量之間的線性相關(guān)的程度,且該系數(shù)在度量精度上比修正余弦相似度更有優(yōu)勢(shì)。所以本文使用Pearson相關(guān)系數(shù)來(lái)測(cè)量用戶間的相似性,計(jì)算公式(1):
為了評(píng)估用戶對(duì)特定商品的興趣,在找到目標(biāo)用戶的最近鄰居后,通過(guò)獲取最近鄰居對(duì)該特定商品的興趣評(píng)分,來(lái)預(yù)測(cè)目標(biāo)用戶對(duì)商品的興趣程度,商品興趣預(yù)測(cè)公式(2):表示用戶和用戶的相似度。
Apriori算法作為關(guān)聯(lián)規(guī)則的經(jīng)典算法,經(jīng)常會(huì)用來(lái)尋找物與物之間的隱含關(guān)系,輸出物品的頻繁項(xiàng)集或強(qiáng)關(guān)聯(lián)規(guī)則。頻繁項(xiàng)集一般指經(jīng)常一起出現(xiàn)的物品集合,常用支持度來(lái)評(píng)估,是支持度大于最小支持度的項(xiàng)集;強(qiáng)關(guān)聯(lián)規(guī)則一般指物品間有著比較強(qiáng)的關(guān)系,常用置信度來(lái)評(píng)估,是置信度大于最小置信度的項(xiàng)集。
支持度用來(lái)表示物品出現(xiàn)在數(shù)據(jù)集中的次數(shù)或概率,式(3)。
置信度則表示某物品已經(jīng)出現(xiàn)的條件下,另一個(gè)物品出現(xiàn)的概率,式(4)。
Apriori算法的實(shí)現(xiàn)即尋找頻繁項(xiàng)集,在頻繁項(xiàng)集中找出強(qiáng)關(guān)聯(lián)規(guī)則。尋找頻繁項(xiàng)集就是遍歷數(shù)據(jù)集,計(jì)算遍歷到的每一項(xiàng)數(shù)據(jù)的頻數(shù),以最小支持度為判斷標(biāo)準(zhǔn),從數(shù)據(jù)集中找出頻繁1項(xiàng)集;在頻繁1項(xiàng)集的基礎(chǔ)上繼續(xù)以最小支持度為衡量標(biāo)準(zhǔn),產(chǎn)生頻繁2項(xiàng)集;不斷反復(fù)掃描數(shù)據(jù)集,直到1項(xiàng)集不在滿足最小支持度,取第項(xiàng)集為結(jié)果。從頻繁項(xiàng)集中找到強(qiáng)關(guān)聯(lián)規(guī)則。遍歷第一步獲取的頻繁項(xiàng)集,根據(jù)支持度來(lái)計(jì)算每個(gè)頻繁項(xiàng)集的置信度,在所有滿足最小置信度標(biāo)準(zhǔn)的頻繁項(xiàng)集中挖掘出強(qiáng)關(guān)聯(lián)規(guī)則,進(jìn)而構(gòu)建規(guī)則庫(kù)。
在電子商務(wù)網(wǎng)站中,用戶和商品以及用戶對(duì)商品的行為,每日都會(huì)產(chǎn)生大量的數(shù)據(jù)。用戶會(huì)對(duì)商品產(chǎn)生瀏覽、點(diǎn)擊、關(guān)注、加入購(gòu)物車(chē)、下單和刪除購(gòu)物車(chē)等6種行為,除此之外,用戶還會(huì)在商品到貨后對(duì)商品的質(zhì)量給出評(píng)論。
用戶對(duì)商品的不同行為可以衡量用戶對(duì)商品的興趣大??;
其他用戶對(duì)商品的評(píng)論會(huì)對(duì)目標(biāo)用戶對(duì)商品的興趣產(chǎn)生影響;
根據(jù)用戶的行為不同來(lái)確定用戶對(duì)特定商品的興趣度,將用戶對(duì)商品的這6種行為分別定為{1,2,3,4,5,0}。根據(jù)假設(shè),通過(guò)用戶對(duì)商品不同的行為來(lái)評(píng)估用戶對(duì)商品偏好程度,加入其他用戶對(duì)商品評(píng)論造成的影響,由此來(lái)構(gòu)建用戶評(píng)分偏好模型,式(5):
其中,表示用戶對(duì)商品的評(píng)分;表示用戶對(duì)商品的興趣度;是一個(gè)常數(shù),用來(lái)表示商品受歡迎程度;表示目前其他用戶對(duì)該商品產(chǎn)生差評(píng)的概率。
改進(jìn)算法通過(guò)使用Apriori算法獲取數(shù)據(jù)集中商品的強(qiáng)關(guān)聯(lián)規(guī)則,對(duì)相似度計(jì)算進(jìn)行改進(jìn),將用戶間在強(qiáng)關(guān)聯(lián)規(guī)則中的共同商品作為集合,改進(jìn)后的公式為式(6):
其中,A表示用戶和用戶在強(qiáng)關(guān)聯(lián)規(guī)則中的共同商品集合。
使用改進(jìn)算法針對(duì)用戶進(jìn)行商品個(gè)性化推薦,主要步驟:根據(jù)改進(jìn)的用戶評(píng)分偏好模型對(duì)商品進(jìn)行興趣預(yù)測(cè),使用Apriori算法獲取商品集合中的強(qiáng)關(guān)聯(lián)規(guī)則,根據(jù)興趣預(yù)測(cè)和強(qiáng)關(guān)聯(lián)規(guī)則,使用改進(jìn)后的相似度計(jì)算方法計(jì)算用戶間的相似度,獲取目標(biāo)用戶的最近鄰居,從而得到目標(biāo)用戶的的商品推薦。改進(jìn)的協(xié)同過(guò)濾算法見(jiàn)表2。
表2 改進(jìn)的協(xié)同過(guò)濾算法Tab.2 Improved collaborative filtering algorithm
3.1.1 實(shí)驗(yàn)數(shù)據(jù)集
本文的實(shí)驗(yàn)數(shù)據(jù)集來(lái)自京東網(wǎng)站2016年2月的用戶、商品和相應(yīng)的行為數(shù)據(jù)脫敏后形成的數(shù)據(jù)集,該數(shù)據(jù)集一共包含了105321用戶,共計(jì)11485 424條用戶行為數(shù)據(jù)和558552條用戶對(duì)商品的評(píng)論信息。對(duì)該數(shù)據(jù)集進(jìn)行清洗和預(yù)處理后,從中隨機(jī)抽取了十萬(wàn)條用戶行為數(shù)據(jù),近五百位用戶,將數(shù)據(jù)集按7∶3隨機(jī)分為訓(xùn)練集和測(cè)試集。
3.1.2 算法評(píng)價(jià)指標(biāo)
推薦算法的衡量標(biāo)準(zhǔn)有很多,本次實(shí)驗(yàn)將準(zhǔn)確率()和召回率()作為算法的衡量標(biāo)準(zhǔn)式(7)和式(8)。 準(zhǔn)確率用來(lái)衡量用戶對(duì)算法推薦商品的滿意程度,召回率是算法推薦滿意商品與數(shù)據(jù)集中所有目標(biāo)用戶滿意商品的比值。
其中,表示向用戶推薦的商品正是用戶滿意的數(shù)量;表示向用戶推薦的商品不是用戶滿意的數(shù)量;表示沒(méi)有向用戶推薦的商品,但該商品是用戶滿意商品的數(shù)量。
為了驗(yàn)證基于隱式數(shù)據(jù)和Apriori改進(jìn)的協(xié)同過(guò)濾算法的性能,本次算法驗(yàn)證使用基于用戶和項(xiàng)目的協(xié)同過(guò)濾算法,在采用的數(shù)據(jù)集上進(jìn)行不同近鄰數(shù)目下算法準(zhǔn)確率和召回率的對(duì)比。
在實(shí)驗(yàn)中,算法分別采取最近鄰用戶集合數(shù)為:50,45,40,35,30,25,20,15,10,實(shí)驗(yàn)十次獲取準(zhǔn)確率和召回率的平均值,3種算法的準(zhǔn)確率和召回率的影響如圖1和圖2所示;U_CF表示基于用戶的協(xié)同過(guò)濾算法;I_CF表示基于項(xiàng)目的協(xié)同過(guò)濾算法;USER表示改進(jìn)后的算法,可以明顯看到3種算法的準(zhǔn)確率和召回率隨著最近鄰數(shù)目的擴(kuò)大,都有著明顯的變化。USER算法在開(kāi)始時(shí)召回率和準(zhǔn)確率隨著最近鄰居數(shù)的增大呈現(xiàn)上升的趨勢(shì),隨著近鄰數(shù)目的變化,召回率和準(zhǔn)確率表現(xiàn)出階段性下降和回升的趨勢(shì);在最近鄰居數(shù)較小時(shí),USER算法的召回率較小,但隨著最近鄰居數(shù)量的逐漸增多,召回率開(kāi)始回升。
改進(jìn)算法與傳統(tǒng)算法的結(jié)果對(duì)比見(jiàn)表3,可以看出改進(jìn)后的算法與基于用戶的協(xié)同過(guò)濾算法相比,準(zhǔn)確率和召回率分別提升1.56%和0.23%;與基于項(xiàng)目的協(xié)同過(guò)濾算法相比,準(zhǔn)確率和召回率分別提升4.39%和0.92%。
圖1 不同近鄰數(shù)目對(duì)準(zhǔn)確率的影響Fig.1 Impact on accuracy
圖2 不同近鄰數(shù)目對(duì)召回率的影響Fig.2 Impact on recall rate
表3 改進(jìn)算法與傳統(tǒng)算法的結(jié)果對(duì)比Tab.3 Comparison of the results of the improved algorithm and the traditional algorithm
本文基于用戶隱式數(shù)據(jù)和Apriori算法對(duì)協(xié)同過(guò)濾推薦算法做出了改進(jìn)。針對(duì)用戶推薦商品過(guò)程中,通過(guò)關(guān)注用戶對(duì)商品的隱式行為信息和其他用戶的評(píng)價(jià)來(lái)評(píng)估用戶對(duì)商品的興趣程度。對(duì)數(shù)據(jù)進(jìn)行清洗和預(yù)處理以后,通過(guò)使用Apriori算法來(lái)獲取商品中的強(qiáng)關(guān)聯(lián)規(guī)則,從而改進(jìn)了用戶間的相似度計(jì)算方式,對(duì)推薦結(jié)果進(jìn)行優(yōu)化。本文使用用戶對(duì)商品的行為屬性來(lái)判斷用戶的興趣,今后將嘗試加入用戶的顯式行為數(shù)據(jù)來(lái)判斷用戶對(duì)商品的興趣,進(jìn)一步改進(jìn)推薦算法。