蔡崇超,許華虎
(1.上海大學(xué)計算機(jī)工程與科學(xué)學(xué)院,上海 200444;2.湖州職業(yè)技術(shù)學(xué)院物流與信息工程學(xué)院,浙江湖州 313000)
為解決社交網(wǎng)絡(luò)信息過載問題,需引入用戶或內(nèi)容推薦系統(tǒng)。傳統(tǒng)的推薦系統(tǒng)以協(xié)同過濾算法為主,該算法沒有考慮到社交網(wǎng)絡(luò)中不同用戶之間的關(guān)聯(lián)關(guān)系對推薦結(jié)果的影響。并且,在社交網(wǎng)絡(luò)研究過程中發(fā)現(xiàn),大多數(shù)用戶對于內(nèi)容的評論較少,絕大多數(shù)內(nèi)容由少數(shù)人產(chǎn)生,即存在著稀疏矩陣問題。
本文主要研究基于社交網(wǎng)絡(luò)關(guān)系的推薦系統(tǒng)在電影領(lǐng)域的應(yīng)用情況。隨著移動互聯(lián)網(wǎng)在人們?nèi)粘I钪械娜鏉B透,互聯(lián)網(wǎng)公司往往應(yīng)用千人千面技術(shù)增加用戶粘度,在影視領(lǐng)域這種情況更加普遍。
相比而言,電影點評推薦相關(guān)研究開展得較早。目前,在推薦系統(tǒng)領(lǐng)域較為成熟的電影數(shù)據(jù)集有很多,例如movielens[1]、Netflix[2]、Douban[3],以上都是推薦系統(tǒng)較為常用的數(shù)據(jù)集,本實驗主要在Douban 和Netflix 上進(jìn)行。
協(xié)同過濾推薦算法[4-5]在電影推薦領(lǐng)域較為常見,該算法通過記錄用戶行為預(yù)測用戶喜好,進(jìn)而完成電影推薦任務(wù)。王駿等[4]通過改進(jìn)神經(jīng)協(xié)同過濾模型,利用多層感知機(jī)的非線性特征處理提取隱含高階特征信息以及貝葉斯個性化排序算法提取排序信息,使推薦更加精準(zhǔn),但是該方法忽略了社交網(wǎng)絡(luò)中用戶之間關(guān)系的影響力。隨著社交網(wǎng)絡(luò)的興起,用戶之間有了更加復(fù)雜的關(guān)聯(lián)關(guān)系,這使得單純的協(xié)同過濾算法推薦精度有所下降。
在社交網(wǎng)絡(luò)中用戶之間的社交關(guān)系和用戶發(fā)布的內(nèi)容往往有很強(qiáng)的關(guān)聯(lián)性[6-7],人們總是傾向于關(guān)注與自己興趣點近似的人群。Koren 等[2]首次將矩陣分解技術(shù)引入電影推薦系統(tǒng)中,不過其當(dāng)時的數(shù)據(jù)集較小,同時僅僅將其應(yīng)用到了一個數(shù)據(jù)集,本文實驗擴(kuò)展了Koren 等的數(shù)據(jù)集規(guī)模。肖曉麗等[3]通過引入信任機(jī)制,通過定義直接信任、間接信任、傳遞路徑和計算方法度量社交網(wǎng)絡(luò)用戶之間隱含的信任值,將社交網(wǎng)絡(luò)轉(zhuǎn)換為信任網(wǎng)絡(luò),為推薦系統(tǒng)中基于用戶關(guān)系提升推薦精度提供了理論依據(jù)。
本文的創(chuàng)新之處在于,傳統(tǒng)的電影推薦系統(tǒng)主要以協(xié)同過濾算法推薦為主,很少將社交網(wǎng)絡(luò)信息作為重要參考,本文通過矩陣分解技術(shù)[2,8-9]設(shè)置特征參數(shù)、損失函數(shù)、隨機(jī)梯度下降等方法對推薦系統(tǒng)的精度進(jìn)行改進(jìn),同時融合社交網(wǎng)絡(luò)用戶信息關(guān)系,進(jìn)而提升推薦系統(tǒng)精度。由實驗結(jié)果可知,在兩個實驗數(shù)據(jù)集上精度分別提高62%、51%。
社交網(wǎng)絡(luò)是一個巨大的實時信息傳播平臺,根據(jù)用戶發(fā)布的內(nèi)容尋找相似用戶,可以找到自己感興趣的電影或內(nèi)容,Massa 等[10]于2004 年提出將社交網(wǎng)絡(luò)中的相互關(guān)系融入推薦算法中構(gòu)建推薦模型。Lin & Gemmis 等[11-12]通過構(gòu)建用戶—項目評分矩陣進(jìn)行用戶相似度計算,以提升推薦系統(tǒng)精確度。
傳統(tǒng)的推薦系統(tǒng)假設(shè)用戶是獨立且分布相同,這種假設(shè)忽略了使用者的社交關(guān)系。在類似于電影社交網(wǎng)絡(luò)領(lǐng)域,網(wǎng)絡(luò)中的不確定關(guān)系往往成為影響推薦精度的重要因素,如果兩個用戶興趣相同,觀點相近,那么認(rèn)為他們之間的關(guān)聯(lián)關(guān)系會大于那些具有不同興趣和關(guān)注內(nèi)容的人。如果兩個人喜歡電影的個數(shù)超過一定比例,則認(rèn)為他們有相同的欣賞品味,這種社交網(wǎng)絡(luò)關(guān)系可以在很大程度上影響推薦結(jié)果。
對于一個電影推薦系統(tǒng)而言,其用戶和電影之間的關(guān)系轉(zhuǎn)換為一個user-item 矩陣。矩陣中的行代表用戶,列代表電影。若用戶對電影有過評分,則矩陣中處于用戶對應(yīng)行與電影對應(yīng)列的交叉位置表示用戶對電影的分值,該矩陣被稱為評分矩陣。通過矩陣分解技術(shù)[13-14],可以將us?er-item 評分矩陣分解為2 個低秩的用戶電影矩陣,同時降低計算復(fù)雜度。利用線性回歸思想,通過最小化觀察數(shù)據(jù)的平方尋求最優(yōu)用戶和項目的隱含向量表示,進(jìn)而用于預(yù)測缺失評分。
求解矩陣分解最優(yōu)化問題時,本文采用梯度下降法(Gradient Descent),其核心思想是沿梯度下降方向逐步迭代。梯度是一個向量,表示一個函數(shù)在該點處沿梯度方向變化最快,變化率最大,而梯度下降方向指負(fù)梯度方向。在實際實驗過程中采用隨機(jī)梯度下降算法,隨機(jī)梯度下降算法[15-17]指在迭代過程中隨機(jī)選擇一個或幾個樣本的梯度替代總體梯度,從而極大降低了計算復(fù)雜度。本文求解目標(biāo)函數(shù)最小化方法使用的就是隨機(jī)梯度下降算法。
Fig.1 Relationship among user,topic and latent factor matrix圖1 用戶、主題、潛在因子矩陣之間的關(guān)系
矩陣分解技術(shù)用途十分廣泛,基于矩陣分解技術(shù)的電影推薦系統(tǒng)可以解決傳統(tǒng)推薦系統(tǒng)技術(shù)中存在的矩陣稀疏、冷啟動等問題。本文首先分析基礎(chǔ)矩陣分解技術(shù),然后考慮損失函數(shù)構(gòu)建,最后通過梯度下降算法進(jìn)行最小值求解。
通過矩陣分解技術(shù)構(gòu)建了一個用戶—電影矩陣。在該推薦系統(tǒng)中用戶集合U={U1,U2,…Um}。電影集合M={M1,M2,…Mm},用戶對電影的評分矩陣R={Rut},其中,Rum 表示用戶u對電影m的評分,每一部電影都得到一個向量q,每一個用戶也得到一個向量p,如式(1)所示。
為了防止過擬合問題,加入正則化λ(‖pu‖2+‖qi‖2),λ為正則化參數(shù)。最終得到求解公式如式(2)所示。
接下來利用求最小值方法計算出新評分矩陣的各項參數(shù)值。
當(dāng)在電影社交網(wǎng)絡(luò)中的兩個用戶同時討論一個電影,其中一個較為偏激,針對某一個話題經(jīng)常表達(dá)較為悲觀的情緒,而另一個用戶則顯示出較為正面的情緒。在電影選取過程中,由于電影分布不同也可能存在偏差。對于用戶而言,不同的用戶針對相同電影表現(xiàn)出的情感傾向性的激烈程度并不相同。此外,同一個用戶針對不同的電影時,表現(xiàn)出的情感傾向性也不同。為此,通過Koren 等[2]的研究表明,在推薦系統(tǒng)中考慮用戶和主題偏差可以有效改進(jìn)系統(tǒng)的推薦精度。矩陣分解模型通過明確考慮以下偏差參數(shù)解決這些問題,如式(3)所示。
其中,bu代表了用戶偏差,bi代表電影偏差。將偏差計算整合到式(1)中,得到公式如式(4)所示。
建立評分矩陣和損失函數(shù)后,需通過優(yōu)化算法進(jìn)行最小值求解。本文使用隨機(jī)梯度下降算法進(jìn)行最小值求解,過程如式(5)—式(8)所示。
對于目標(biāo)函數(shù)式(4),對其進(jìn)行求梯度,如式(5)—式(6)所示。
利用梯度下降進(jìn)行最小值求解,如式(7)—式(8)所示。
通過上述隨機(jī)梯度算法,對分解后的矩陣進(jìn)行參數(shù)估計,得到相應(yīng)的矩陣參數(shù)。
本文首先對數(shù)據(jù)進(jìn)行抽取式整理,其次根據(jù)測試數(shù)據(jù)比例進(jìn)行實驗,設(shè)置矩陣分解模型參數(shù)并進(jìn)行不同角度的觀察,最后利用梯度下降算法得到最優(yōu)解。流程如圖2 所示。
Fig.2 Process of algorithm圖2 算法過程
本文選擇Douban 電影評論和Netflix 數(shù)據(jù)集作為社會推薦的參考數(shù)據(jù)集。
Douban 是一個以電影評論為主的社交網(wǎng)站。用戶注冊后,能夠?qū)ζ渌呀?jīng)發(fā)布的電影或即將發(fā)布的電影發(fā)布評論和打分,評分登記是1~5 的整數(shù)。這些評價分?jǐn)?shù)和評論會影響其它網(wǎng)站用戶,是一部電影是否值得觀看的依據(jù)。網(wǎng)站用戶之間可以有關(guān)注和被關(guān)注的關(guān)系,評論內(nèi)容有短評和長評。本文實驗中使用的數(shù)據(jù)集來源于豆瓣網(wǎng)站,tsv 文件總大小為46.8M,包括94 890 個用戶,共有81 906個不同項目,每個用戶至少有一次評論,總共有11 742 260條評論。在實驗過程中為了考察不同數(shù)據(jù)集大小情況,分別選取K 篇文章的所有評論進(jìn)行試驗,K 的大小分別為5、10、15、20、25。選取這些數(shù)據(jù)內(nèi)容是為了與Netflix 數(shù)據(jù)集規(guī)模保持一致,方便對比。
Netflix 數(shù)據(jù)集由Netflix 網(wǎng)站提供,該數(shù)據(jù)總計有100萬用戶評論,其中評論用戶500 000,電影總計17 000 部。每一個點評的評分在1~5 區(qū)間。在實驗過程中,分別選取10 000、25 000、50 000、75 000、100 000 條評論數(shù)據(jù)作為試驗數(shù)據(jù)。數(shù)據(jù)集規(guī)模如表1 所示,其中豆瓣電影數(shù)據(jù)集以討論的電影數(shù)目進(jìn)行分類,Netflix 數(shù)據(jù)集以評論數(shù)據(jù)進(jìn)行分類。從整體看,評論數(shù)目的規(guī)模較為相近。
Table 1 Dataset size表1 數(shù)據(jù)集規(guī)模
采用均方根誤差RMSE 和評價絕對誤差MAE 對試驗結(jié)果進(jìn)行評價。這兩個評價指標(biāo)的值越低表示預(yù)測準(zhǔn)確度越高。
矩陣分解模型是本次實驗的主要貢獻(xiàn),除原本矩陣外,主要參數(shù)有4 個,如表2 所示。
Table 2 Parameters and values表2 參數(shù)含義和取值范圍
其中,K 表示潛在用戶特征向量個數(shù),將其取值范圍設(shè)定為2~10。
Alpha 表示學(xué)習(xí)率(learning rate),代表梯度下降算法中迭代步長。學(xué)習(xí)率一般不宜過大,過大時,迭代過程會出現(xiàn)震蕩現(xiàn)象。在實驗過程中,將其值設(shè)置為0.01。
Beta 表示過擬合參數(shù),在實驗過程中將其設(shè)置為0.01。在進(jìn)行梯度下降算法求解過程中可能會造成過擬合問題,所謂過擬合,就是過分地擬合了樣本數(shù)據(jù),造成引入了大量噪音,無法呈現(xiàn)原本規(guī)律,但又無法針對特殊樣本數(shù)據(jù)進(jìn)行剔除,因此干脆對所有參數(shù)加入隨機(jī)因子,即正則項。正則化是降低過擬合問題的常見手段。
Iterations 表示迭代次數(shù),迭代次數(shù)越多,準(zhǔn)確度越高,但是相應(yīng)的計算開銷也會增大,在實驗過程中將其值的范圍設(shè)定為10~100。
依據(jù)上述數(shù)據(jù)集、評價指標(biāo)和模型參數(shù)設(shè)置等內(nèi)容,通過實驗觀察該模型如何改變推薦精度。
首先將本文提出的模型應(yīng)用于豆瓣數(shù)據(jù)集中,數(shù)據(jù)集規(guī)模按照評論個數(shù)劃分為45 872、70 220、90 819、111 793、164 122。具體結(jié)果如表3 所示。
Table 3 Evaluation values表3 評測值
RMSE 的值表示對原始電影評論集設(shè)置測試用例比例后得到的RMSE 誤差,MF-RMSE 表示應(yīng)用本文提到的矩陣分解技術(shù)后得到的RMSE 值??梢钥闯觯琈F-RMSE 對于推薦精度有了較大提升。同時還可以看出,隨著評論數(shù)即樣本數(shù)據(jù)的增加,無論是Douban 數(shù)據(jù)集還是Netflix 數(shù)據(jù)集,評論精度有較大幅度提升,具體如圖3 和圖4 所示。
Fig.3 Douban dataset圖3 Douban 數(shù)據(jù)集
Fig.4 Netflix dataset圖4 Netflix 數(shù)據(jù)集
通過上述實驗內(nèi)容可以看出,使用矩陣分解技術(shù)前后,推薦系統(tǒng)的準(zhǔn)確度有了相應(yīng)提升。隨著數(shù)據(jù)集的增加,推薦精度也會有相應(yīng)增加,但是增長幅度會有所減小,數(shù)據(jù)集規(guī)模達(dá)到一定程度后,要提高精度有一定難度。上述兩個實驗雖然基于不同的數(shù)據(jù)集,但是數(shù)據(jù)規(guī)模較為相似,得到的數(shù)據(jù)結(jié)論也較為相似,因此本文提出的算法頗具代表性。
本文提出了一種矩陣分解算法,將其應(yīng)用到電影推薦系統(tǒng)中。該算法通過融合用戶和電影內(nèi)容之間的評分機(jī)制,利用矩陣分解技術(shù)進(jìn)行內(nèi)容推薦,首先將用戶—電影評分矩陣分解為用戶潛在因子矩陣和主題潛在因子矩陣,然后引入損失函數(shù)防止出現(xiàn)過擬合現(xiàn)象,最后利用梯度下降算法進(jìn)行最優(yōu)值求解。將該方法應(yīng)用于Douban 電影數(shù)據(jù)集和Netflix 電影數(shù)據(jù)集后取得了較好效果。在未來工作中,可將用戶之間的關(guān)聯(lián)關(guān)系和動態(tài)內(nèi)容作為一個重要因素整合到模型中,以更好地提高推薦系統(tǒng)精度。