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