混合IBCF協(xié)同過濾推薦算法推薦引擎的探索2
原文鏈接:http://tecdat.cn/?p=3948
?
混合IBCF算法的離線與實(shí)時(shí)的分布式設(shè)計(jì)實(shí)現(xiàn)
在現(xiàn)行的?Web?站點(diǎn)上的推薦往往都不是單純只采用了某一種推薦的機(jī)制和策略,往往是將多個(gè)方法混合在一起,從而達(dá)到更好的推薦效果。結(jié)合業(yè)務(wù)痛點(diǎn),我們采用一種基于矩陣填充技術(shù)的混合IBCF算法。首先利用準(zhǔn)確度指標(biāo)找出SVD的最優(yōu)參數(shù)和混合IBCF算法的最佳權(quán)重,然后使用SVD降維方法對(duì)原始的高維稀疏矩陣進(jìn)行預(yù)測(cè)填充,最后使用IBCF在用戶所屬類中尋找目標(biāo)用戶最近鄰并使用最佳權(quán)重合并結(jié)果產(chǎn)生推薦。該算法利用用戶與商品之間的潛在關(guān)系克服了稀疏性問題,同時(shí)保留了可離線建模、可擴(kuò)展性好等優(yōu)點(diǎn)。
以母嬰產(chǎn)品為例,通過分析母嬰類產(chǎn)品,收集數(shù)據(jù)集構(gòu)造母嬰領(lǐng)域不同類型產(chǎn)品的特征向量。提取母嬰類偏好系數(shù)不為0的用戶為目標(biāo)用戶,通過用戶訪問的時(shí)間偏好來確定服務(wù)推薦的權(quán)重,計(jì)算其訪問的母嬰類與目標(biāo)產(chǎn)品的特征向量的相似度來確定推薦產(chǎn)品的類型。最后,在母嬰之家購物平臺(tái)上實(shí)踐結(jié)果表明,該方法確實(shí)可提升用戶的個(gè)性化推薦。

用戶個(gè)性化需求解決方案設(shè)計(jì)
提高計(jì)算精度——優(yōu)化k值,SVD和ItemCF的合并
由于母嬰類商品的相似性較高,不同商品具有比較固定的相似度,所以我們使用基于物品的協(xié)同過濾算法(IBCF)來進(jìn)行推薦,在推薦過程中可以預(yù)先在線下計(jì)算好不同商品之間的相似度結(jié)果,然后把結(jié)果存在相似度表中,當(dāng)推薦時(shí)進(jìn)行表的查詢,預(yù)測(cè)用戶可能的偏好值,從而進(jìn)行推薦。同時(shí),由于母嬰商品相似度高,當(dāng)推薦過程的運(yùn)算量比較大的時(shí)候,使用物品的一個(gè)小部分子集也可以得到高質(zhì)量的預(yù)測(cè)結(jié)果。
針對(duì)上述問題,使用SVD方法將用戶評(píng)分分解為不同的特征及這些特征對(duì)應(yīng)的重要程度,利用用戶與商品之間潛在的關(guān)系,用初始評(píng)分矩陣的奇異值分解去抽取一些本質(zhì)的特征,降低數(shù)據(jù)維度來進(jìn)行推薦,從而提高運(yùn)算效率。
由于SVD算法中保留的維數(shù)k很重要,也不容易選取,k如果太小,容易失去原始數(shù)據(jù)中重要的信息,不能得到用戶評(píng)分矩陣的重要結(jié)構(gòu),k如果選大了,達(dá)不到降維的目的,而且容易過擬合訓(xùn)練數(shù)據(jù),因此測(cè)試數(shù)據(jù)時(shí)需要先對(duì)k的取值進(jìn)行優(yōu)化,選取最優(yōu)的k值然后再進(jìn)行實(shí)驗(yàn)。
更客觀地評(píng)價(jià)用戶對(duì)商品的興趣——用戶行為權(quán)重、用戶遺忘曲線
首先根據(jù)用戶的不同行為(bhv)定義偏好權(quán)重,行為:?"投訴"?、"下單"、?"商品瀏覽"?、"商品加入購物車"?、"評(píng)論"分別對(duì)應(yīng)偏好分值-1、4、3、2、3。
然而傳統(tǒng)的推薦基于用戶興趣是固定不變的假設(shè),即用戶興趣不隨時(shí)間的變化而改變,因此,這些方法不能反映用戶興趣的變化。同時(shí),被推薦的資源(產(chǎn)品)往往具有時(shí)效性,用戶的興趣也往往隨時(shí)間的不同而變化。
針對(duì)以上問題,為了滿足用戶的個(gè)性化需求,我們提出了基于時(shí)間加權(quán)的協(xié)同過濾算法,考慮了時(shí)間對(duì)推薦質(zhì)量的影響,認(rèn)為用戶興趣隨時(shí)間的流逝而衰減,即某個(gè)用戶感興趣的資源最可能和他近期訪問過的資源相似。


其中,艾賓浩斯遺忘曲線可以較好的描述用戶瀏覽商品和遺忘的過程。它認(rèn)為當(dāng)用戶瀏覽商品時(shí),商品信息輸入大腦后,遺忘也就隨之開始了。遺忘率隨時(shí)間的流逝而先快后慢,特別是在剛剛識(shí)記的短時(shí)間里,遺忘最快。遵循艾賓浩斯遺忘曲線所揭示的記憶規(guī)律,對(duì)所瀏覽的商品及時(shí)進(jìn)行推薦,可以提升用戶的個(gè)性化推薦。?
因此,我們根據(jù)用戶對(duì)商品行為距今的時(shí)間差對(duì)用戶的偏好進(jìn)行權(quán)重調(diào)整,其中時(shí)間權(quán)重的計(jì)算使用艾賓浩斯(H.Ebbinghaus)遺忘率 ,得到最終的用戶行為偏好為。
用戶購買周期性問題解決——懲罰上一周購買
然而,常常存在這樣一種現(xiàn)象,用戶往往在根據(jù)自己的興趣愛好購買了商品之后,一段時(shí)間內(nèi)會(huì)對(duì)所購買物品相似的物品產(chǎn)生“疲倦期”,會(huì)更加趨向于選擇與以前購買過的商品較為相異的那些新商品進(jìn)行購買。從本質(zhì)上講,這種情況往往發(fā)生在作為用戶短期興趣的資源上,這樣的用戶興趣會(huì)隨時(shí)間的接近而衰減。因此,如果能有效識(shí)別出用戶的短期興趣,在預(yù)測(cè)用戶最感興趣的資源時(shí)加以考慮,區(qū)分不同時(shí)間對(duì)推薦的不同影響,可以提升用戶的個(gè)性化推薦。
因此,進(jìn)一步清晰區(qū)分用戶長(zhǎng)期興趣和短期興趣在預(yù)測(cè)評(píng)分時(shí)所起的不同作用。認(rèn)為預(yù)測(cè)資源的評(píng)分時(shí),作為短期興趣的可進(jìn)行衰減。??
?Item畫像設(shè)計(jì)
變量
描述
變量類型
DeviceIdentity
用戶id
名義變量
SKUId_All
商品id
名義變量
is_temai
是否特賣商品
名義變量
bhv_type
用戶行為類型
名義變量
bhv_cnt
行為數(shù)量
數(shù)值變量
bhv_datetime
行為時(shí)間
日期變量
?
基于Item畫像的相似度計(jì)算是Item間相似度計(jì)算中至關(guān)重要的一部分,也是增加Item間區(qū)分度的有效手段(因?yàn)橥|(zhì)化都比較嚴(yán)重),同時(shí)也通過這種方式將CB算法融入到了CF中。
SVD算法參數(shù)k的設(shè)定
SVD算法中保留的維數(shù)k很重要,也不容易選取,k如果太小,容易失去原始數(shù)據(jù)中重要的信息,不能得到用戶評(píng)分矩陣的重要結(jié)構(gòu),k如果選大了,達(dá)不到降維的目的,而且容易過擬合訓(xùn)練數(shù)據(jù),本節(jié)利用測(cè)試集數(shù)據(jù)先對(duì)k的取值進(jìn)行優(yōu)化,選取最優(yōu)的k值然后再進(jìn)行實(shí)驗(yàn)。

??奇異值分解(SVD)中k值優(yōu)化
性能比較
為了驗(yàn)證所提出的算法的性能,將傳統(tǒng)的推薦算法和提出的基于SVD的協(xié)同過濾的算法(SVD approximation)進(jìn)行TOP-N實(shí)驗(yàn)比對(duì)。其中,使用SVD對(duì)用戶-商品評(píng)價(jià)矩陣降低稀疏程度時(shí)使用上述實(shí)驗(yàn)得到的45作為最佳維度。實(shí)驗(yàn)指標(biāo)使用ROC曲線性能。在測(cè)試數(shù)據(jù)集上,這五種方法在不同近鄰個(gè)數(shù)上的ROC性能表現(xiàn)如圖所示,其中橫坐標(biāo)為FPR,縱坐標(biāo)是TPR值。

?不同算法ROC曲線的比較

?不同算法準(zhǔn)確度的比較
?
在圖中,曲線random item代表隨機(jī)推薦算法,曲線popular item代表熱門物品推薦算法,曲線user-based cf代表基于用戶的協(xié)同過濾算法,曲線item-based cf代表基于物品的協(xié)同過濾算法,曲線SVD approximation代表基于SVD矩陣分解的協(xié)同過濾算法。
可以看到基于SVD矩陣分解的協(xié)同過濾算法在ROC指標(biāo)上要優(yōu)于其他算法。
線上AB實(shí)驗(yàn)評(píng)估
主要采用的評(píng)價(jià)指標(biāo)包括點(diǎn)擊量、點(diǎn)擊率等。算法效果簡(jiǎn)述如下:
商品推薦方面(原算法為基于點(diǎn)擊行為的CF算法):
離線:PC商品詳情頁推薦點(diǎn)擊率提升12%;
實(shí)時(shí):PC商品詳情頁推薦點(diǎn)擊率提升3%左右。該部分經(jīng)過后續(xù)優(yōu)化,效果略有提升。
后續(xù)可優(yōu)化點(diǎn)
1、如何度量用戶的社交信息。根據(jù)用戶評(píng)分信息使用皮爾遜相似度來衡量社交網(wǎng)絡(luò)中用戶關(guān)系權(quán)重,標(biāo)準(zhǔn)單一,算法準(zhǔn)確度受到一定影響。因此,利用社交網(wǎng)絡(luò)中的信息更加準(zhǔn)確地衡量用戶關(guān)系是值得進(jìn)一步研究的問題。
2、界定短期偏好的時(shí)間閾值的自動(dòng)調(diào)整。提出的算法在離線階段結(jié)束后,時(shí)間閾值已經(jīng)確定,然而在實(shí)際應(yīng)用中用戶數(shù)目、用戶行為、用戶關(guān)系都是不斷變化的。
?
?