王文鈴, 虞慧群, 范貴生,2
(1. 華東理工大學(xué)計(jì)算機(jī)科學(xué)與工程系,上海 200237;2. 上海市計(jì)算機(jī)軟件測(cè)評(píng)重點(diǎn)實(shí)驗(yàn)室,上海 201112)
近年來互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,帶動(dòng)了視頻網(wǎng)站的興起,不論是觀影人數(shù)還是人們投入到電影產(chǎn)業(yè)中的消費(fèi),都在不斷地增長(zhǎng)。目前大部分網(wǎng)站的電影推薦都是基于用戶觀看電影的歷史紀(jì)錄,通過歷史紀(jì)錄來分析用戶的觀影偏好來進(jìn)行推薦。然而,用戶對(duì)電影的喜好也受到情境信息的影響,如年齡、當(dāng)?shù)靥鞖?、外界環(huán)境等。在電影推薦領(lǐng)域,將情境信息融入到傳統(tǒng)的推薦算法中,將會(huì)提供更加精確的推薦結(jié)果,算法也會(huì)更加靈活。
國(guó)內(nèi)外很多學(xué)者對(duì)情境感知推薦進(jìn)行了深入的研究。Baltrunas等[1]將情境信息融入推薦系統(tǒng),提出了CAMF(Context-Aware Matrix Factorization)推薦模型,在傳統(tǒng)的矩陣分解中融入了情境偏置。蘭艷等[2]提出了一種改進(jìn)的時(shí)間加權(quán)協(xié)同過濾算法。陳星等[3]嘗試將情境感知應(yīng)用到智能家居中。CAKIR等將協(xié)同過濾與關(guān)聯(lián)性規(guī)則挖掘應(yīng)用在電子商務(wù)中[4]。以上對(duì)情境感知推薦系統(tǒng)的研究都取得了一定的成果,但也存在著不同情境信息對(duì)同一個(gè)項(xiàng)目的影響權(quán)重沒有分開考慮的問題。同時(shí),通過矩陣分解算法得到的推薦結(jié)果也存在著可解釋性差的問題。
為了解決上述問題,本文提出了一種混合推薦算法CAMF-CM(Context-Aware Matrix Factorization-Classification Model)。將用戶和項(xiàng)目的情境信息數(shù)據(jù)輸入到?jīng)Q策樹模型中,以此來獲得用戶特征信息和電影特征信息,得到用戶在給定情境信息下的觀影傾向,再將其與改進(jìn)了情境權(quán)重的CAMF算法結(jié)合,進(jìn)一步加強(qiáng)推薦的準(zhǔn)確性。因?yàn)榫仃嚪纸馑惴ň哂辛己玫臄U(kuò)展性,并且可以一定程度上緩解數(shù)據(jù)稀疏問題,所以選取矩陣分解算法作為基礎(chǔ)[5]。在LDOS-COMODA數(shù)據(jù)集上進(jìn)行了相關(guān)的數(shù)據(jù)預(yù)處理,然后以平均絕對(duì)誤差(MAE)為評(píng)價(jià)指標(biāo)并設(shè)計(jì)了相關(guān)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,本文提出的CAMFCM算法能夠有效地降低預(yù)測(cè)誤差,改善推薦結(jié)果的質(zhì)量。
矩陣分解算法在推薦領(lǐng)域已有廣泛的應(yīng)用,其思想是將數(shù)據(jù)集中的用戶評(píng)分矩陣R∈Rn×m分解成用戶隱性特征矩陣P∈Rn×f和項(xiàng)目隱性特征矩陣Q∈Rm×f,且滿足
將用戶u的特征向量用pu表示,評(píng)分項(xiàng)目i的特征向量用qi表示,那么使用矩陣分解算法計(jì)算得出的向用戶u推薦物品i的推薦分?jǐn)?shù)可以表示為
為了找到式(2)中的特征向量pu、qi,也為了衡量矩陣分解的好壞,需要規(guī)定一個(gè)損失函數(shù)如下:
其中:K為已有評(píng)分記錄的(u,i)對(duì)集合;rui為用戶u對(duì)項(xiàng)目i的真實(shí)評(píng)分; λ (‖qi‖2+‖pu‖2) 為防止過擬合的正則化項(xiàng); λ 為正則化系數(shù)。損失函數(shù)是為了計(jì)算平方項(xiàng)損失,需要達(dá)到的目標(biāo)是使每一個(gè)元素(非缺失值)的e(i,j)的總和最小[6]。
情境感知是一種能將用戶和項(xiàng)目的情境信息進(jìn)行綜合考慮的技術(shù)[7]。傳統(tǒng)的協(xié)同過濾算法需要計(jì)算用戶和項(xiàng)目的相似度[8],在Baseline算法中,需要引入用戶的全局偏置,記為bu。同理,也要引入項(xiàng)目的全局偏置,記為bi。Baseline算法的評(píng)分預(yù)測(cè)公式如下:
其中:μ為該項(xiàng)目評(píng)分的平均值。為了計(jì)算bi、bu,需要引入目標(biāo)函數(shù),計(jì)算公式如下:
CAMF預(yù)測(cè)模型[1]中設(shè)定每個(gè)情境信息對(duì)項(xiàng)目的影響權(quán)重相同。該預(yù)測(cè)模型中引入了情境偏置的概念,記為bc,作為情境因素對(duì)某個(gè)項(xiàng)目的影響。
其中:t為項(xiàng)目所屬類別;cj為情境要素,共包含k個(gè)情景要素;b(t)cj表示情境要素cj對(duì)t類別影視項(xiàng)目的影響。將情境偏置與傳統(tǒng)的矩陣分解算法結(jié)合,得到融合了情境偏置的評(píng)分預(yù)測(cè)公式如下:
其 中:r?uic1c2···ck表示用 戶u在 情 境信 息c1,c2,···,ck下對(duì)影視項(xiàng)目i的預(yù)測(cè)評(píng)分。將該融入情境偏置的評(píng)分預(yù)測(cè)融入矩陣分解中,得到融合了情境信息的目標(biāo)函數(shù):
推薦系統(tǒng)可以識(shí)別可能引起用戶興趣的項(xiàng)目,或預(yù)測(cè)用戶對(duì)電影等項(xiàng)目的評(píng)分[9],將分類算法與其結(jié)合,可以進(jìn)一步提高推薦的準(zhǔn)確率。目前常用的分類算法有決策樹算法、貝葉斯算法[10]、k-近鄰算法和支持向量機(jī)算法,本文采用決策樹算法。本文將LDOS-COMODA數(shù)據(jù)集中的日期、地點(diǎn)、情緒、狀態(tài)、時(shí)間、天氣等情境信息作為特征集,將電影的風(fēng)格、年代、類型作為訓(xùn)練標(biāo)簽,通過決策樹模型進(jìn)行訓(xùn)練,得到基于情境數(shù)據(jù)下的用戶和項(xiàng)目的隱性特征向量,以及用戶在特定情境下的觀影傾向。
情境信息是用來描述用戶所處環(huán)境的如位置、時(shí)間、應(yīng)用系統(tǒng)等信息[11]。CAMF算法設(shè)定每個(gè)情境信息對(duì)項(xiàng)目的影響權(quán)重相同,但每個(gè)情境信息對(duì)用戶的影響權(quán)重應(yīng)該不同,有些用戶更容易受到特定情境信息的影響,例如天氣和觀影日期,對(duì)其他情境信息則并不太在意。因此,需要對(duì)情境信息設(shè)定各自的權(quán)重。本文從LDOS-COMODA數(shù)據(jù)集中選取了12個(gè)情境信息進(jìn)行實(shí)驗(yàn),對(duì)每個(gè)情境信息設(shè)定其權(quán)重gj,則修改后的情境偏置公式為
特定情境信息的權(quán)重值gj通過實(shí)驗(yàn)確定,信息增益作為衡量信息對(duì)決策的影響性的重要方法,將其應(yīng)用在情境權(quán)重的計(jì)算中,對(duì)數(shù)據(jù)集中的情境信息分別計(jì)算其信息增益,結(jié)果取平均值,計(jì)算得出的不同情境信息的情境權(quán)重如表1所示。
為了進(jìn)一步提高推薦的靈活性,將Baseline算法中用戶和項(xiàng)目的全局偏置bi、bu引入改進(jìn)后的CAMF算法的評(píng)分預(yù)測(cè)函數(shù)中,加入全局偏置后的預(yù)測(cè)公式如下:
表1 情境權(quán)重描述Table 1 Description of context weights
CAMF-CM是結(jié)合了改進(jìn)的CAMF算法和決策樹算法的混合推薦算法。其算法流程如圖1所示。
圖1 CAMF-CM推薦模型算法流程Fig. 1 Flow chart of CAMF-CM recommendation model algorithm
首先,使用改進(jìn)后的CAMF算法得到初始的推薦列表,該列表為包含了所有電影類型的推薦列表。情境感知推薦的問題之一是如何獲取用戶的情境信息[12],因?yàn)槌跏纪扑]列表中可能包含了用戶在給定情境下并不感興趣的電影類型。因而需要使用決策樹模型對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練,得出用戶在特定情境下的觀影傾向后對(duì)初始推薦列表進(jìn)行篩選。CAMFCM混合推薦算法的計(jì)算流程如下:
算法1 混合推薦算法CAMF-CM
輸入:用戶電影評(píng)級(jí)矩陣R,用戶特征矩陣P,電影特征矩陣Q,用戶數(shù)量M,電影數(shù)量N,用戶情境因素?cái)?shù)量F1,電影特征標(biāo)簽數(shù)量F2,包含了用戶對(duì)電影實(shí)際評(píng)分Ri的評(píng)分矩陣F3。
輸出:MAE
計(jì)算流程:
開始:
(1)依據(jù)Bsaeline算法,計(jì)算用戶全局偏置bi,電影項(xiàng)目全局偏置bu。
(2)計(jì)算用戶特征向量pu,電影特征的隱藏向量qi。
(3)計(jì)算情境偏置,使用改進(jìn)的CAMF算法,根據(jù)公式(10)計(jì)算評(píng)估分?jǐn)?shù)Pi,并生成TOP-N推薦列表。
(4)使用決策樹算法對(duì)情境數(shù)據(jù)集LDOSCOMODA進(jìn)行特征標(biāo)簽訓(xùn)練,得到用戶在給定情境下的電影偏好。
(5)根據(jù)第3步得到的TOP-N推薦結(jié)果,集合決策樹模型得到的用戶在給定情境下的選擇傾向,對(duì)TOP-N列表進(jìn)行再次篩選,得到最終TOP-N推薦列表。
(6)算法效率驗(yàn)證。采用10折交叉驗(yàn)證法,分別計(jì)算協(xié)同過濾算法基本矩陣分解算法、Baseline預(yù)測(cè)算法和CAMF-CM混合算法的MAE并進(jìn)行比較,得到最終結(jié)果。
結(jié)束
CAMF-CM混合推薦算法將改進(jìn)后的CAMF算法所生成的初始推薦列表,結(jié)合分類模型訓(xùn)練得出的用戶在特定情境下的觀影傾向進(jìn)行二次篩選,得到最終的推薦列表。目前情境感知推薦系統(tǒng)的應(yīng)用領(lǐng)域日益廣泛,但在情境要素的選擇問題、情境信息的兼容方法問題等方面還需進(jìn)一步研究[13]。
本文所使用的數(shù)據(jù)集為L(zhǎng)DOS-COMODA電影數(shù)據(jù)集,該數(shù)據(jù)集除了包含用戶對(duì)電影的評(píng)分信息外也包含了情境信息,詳細(xì)數(shù)據(jù)分布如表2所示。
表2 LDOS-COMODA電影評(píng)分?jǐn)?shù)據(jù)集描述Table 2 LDOS-COMODA movie rating data set description
目前被廣泛使用的預(yù)測(cè)模型算法有決策樹和隨機(jī)森林,該兩種預(yù)測(cè)模型往往能夠得到較好的預(yù)測(cè)效果[14],本文選用決策樹模型。從LDOS-COMODA數(shù) 據(jù) 集 中 選 取 包 含Time、Daytype、Location、Weather、Social、Mood、Endemo、Physical、Decision、Interaction,Age和Sex這12個(gè)情境信息作為參數(shù)進(jìn)行實(shí)驗(yàn)。先對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,設(shè)定情境信息的值均為正整數(shù),若有缺失值,用該項(xiàng)情境信息已有數(shù)據(jù)中的眾數(shù)進(jìn)行填充。處理后的情境數(shù)據(jù)集內(nèi)容描述如表3所示。
表3 情境要素描述Table 3 Description of context elements
實(shí)驗(yàn)環(huán)境:Windows 10操作系統(tǒng),16 GB內(nèi)存,Intel(R) Core(TM) i7-8700k CPU 3.70 GHz,編程語言采用Python3。
情境感知推薦系統(tǒng)可以通過用戶和項(xiàng)目的情境信息進(jìn)行推薦[15],平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Squared Error,RMSE)是RS (Recommendation System)領(lǐng)域常用的預(yù)測(cè)準(zhǔn)確度的評(píng)估標(biāo)準(zhǔn)。本文采用MAE作為算法的評(píng)價(jià)指標(biāo),它表示預(yù)測(cè)值和觀測(cè)值之間絕對(duì)誤差的平均值,計(jì)算公式如下:
其中:N為測(cè)試集大??;Pi為預(yù)測(cè)評(píng)分;Ri為實(shí)際評(píng)分。MAE值越小,準(zhǔn)確度越高,推薦質(zhì)量越高。
為了得到精確的結(jié)果,采用10折交叉驗(yàn)證的方法進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)過程中,將數(shù)據(jù)集分為10份,根據(jù)不同的算法進(jìn)行不同的配置。采用協(xié)同過濾算法進(jìn)行實(shí)驗(yàn)時(shí),取9份作為訓(xùn)練集,1份作為測(cè)試集。采用基本矩陣分解算法、Baseline預(yù)測(cè)算法和CAMFCM混合推薦算法進(jìn)行實(shí)驗(yàn)時(shí),取8份作為訓(xùn)練集,1份作為測(cè)試集,1份作為驗(yàn)證集。每次實(shí)驗(yàn)結(jié)束后將樣本進(jìn)行輪換,使用MAE作為評(píng)價(jià)指標(biāo)。
3.3.1 基于用戶的協(xié)同過濾算法 對(duì)于協(xié)同過濾算法,將近鄰數(shù)量k設(shè)置為5 ~ 50,取間隔為5,觀察MAE的變化曲線,如圖2所示。由圖2可知,MAE在0.96 ~ 0.98間波動(dòng),當(dāng)k=30時(shí),MAE取得極小值,約為0.959,此時(shí)推薦效果最好。
圖2 基于用戶的協(xié)同過濾算法的MAEFig. 2 MAE of user-based collaborative filtering algorithm
3.3.2 基本矩陣分解算法 對(duì)于基本矩陣分解算法,設(shè)定正則化系數(shù)λ和學(xué)習(xí)率 γ 的取值為0.01 ~ 0.05,取0.01作為間隔進(jìn)行實(shí)驗(yàn)。迭代數(shù)設(shè)置為100次,向量維度為10,實(shí)驗(yàn)結(jié)果如圖3所示??梢姰?dāng)λ=0.03、γ=0.01時(shí),MAE取得極小值,約為1.95,此時(shí)推薦效果最好。
3.3.3 Baseline預(yù)測(cè)算法 對(duì)于Baseline預(yù)測(cè)算法,同樣設(shè)定正則化系數(shù)λ和學(xué)習(xí)率 γ 的取值為0.01 ~0.05,取0.01作為間隔進(jìn)行實(shí)驗(yàn)。迭代數(shù)設(shè)置為100次,向量維度為10,實(shí)驗(yàn)結(jié)果如圖4所示。由圖4可見,當(dāng)λ=0.03且 γ =0.04 時(shí),MAE取得極小值,約為0.806,此時(shí)推薦效果最好。
圖3 基本矩陣分解算法的MAEFig. 3 MAE of basic matrix factorization algorithm
圖4 Baseline預(yù)測(cè)算法的MAEFig. 4 MAE of baseline prediction algorithm
3.3.4 CAMF-CM推薦算法 在CAMF-CM混合算法中,分類模型采用決策樹模型進(jìn)行訓(xùn)練,改進(jìn)的CAMF算法中設(shè)定正則化系數(shù)λ和學(xué)習(xí)率 γ 的取值同樣為0.01~0.05,取0.01作為間隔進(jìn)行實(shí)驗(yàn)。迭代數(shù)設(shè)置為100次,向量維度為10,CAMF-CM混合模型在λ取0.04且 γ =0.01 時(shí),MAE最小,約為0.747,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 CAMF-CM算法的MAEFig. 5 MAE of CAMF-CM algorithm
各種算法的MAE對(duì)比結(jié)果如圖6所示。與其他3種算法相比,CAMF-CM混合算法的MAE最小,推薦結(jié)果更加精確。
圖6 不同算法的MAE比較Fig. 6 MAE of different algorithms
推薦系統(tǒng)如果能夠?qū)⑶榫承畔⒓{入考慮,就能提高推薦的準(zhǔn)確率。本文提出了一種融合了矩陣分解算法和分類模型的混合推薦算法,實(shí)驗(yàn)結(jié)果表明,該混合算法相較于基于用戶的協(xié)同過濾算法、基本矩陣分解算法和Baseline預(yù)測(cè)算法有著更高的準(zhǔn)確率。本文提出的混合推薦算法還有進(jìn)一步優(yōu)化的空間,算法所使用的分類模型只使用了電影的類別、年份、總評(píng)分等標(biāo)簽信息,并且也沒有對(duì)用戶對(duì)電影評(píng)分的合理性進(jìn)行分析。在之后的研究中,可以對(duì)用戶對(duì)電影的評(píng)分進(jìn)行預(yù)處理,去掉數(shù)據(jù)集中不合理的評(píng)分,并且在矩陣分解算法的目標(biāo)函數(shù)中,對(duì)每一個(gè)情境信息的合理權(quán)重進(jìn)行進(jìn)一步的分析,使情境權(quán)重能夠根據(jù)用戶自身評(píng)分特征進(jìn)行變化。此外,還可以在算法上進(jìn)行一些其他的優(yōu)化,例如添加評(píng)分用戶個(gè)人的信用權(quán)重,對(duì)同一電影在不同時(shí)期的評(píng)分進(jìn)行分析處理等。