蔡崇超,許華虎
(1.上海大學計算機工程與科學學院,上海 200444;2.湖州職業技術學院物流與信息工程學院,浙江湖州 313000)
為解決社交網絡信息過載問題,需引入用戶或內容推薦系統。傳統的推薦系統以協同過濾算法為主,該算法沒有考慮到社交網絡中不同用戶之間的關聯關系對推薦結果的影響。并且,在社交網絡研究過程中發現,大多數用戶對于內容的評論較少,絕大多數內容由少數人產生,即存在著稀疏矩陣問題。
本文主要研究基于社交網絡關系的推薦系統在電影領域的應用情況。隨著移動互聯網在人們日常生活中的全面滲透,互聯網公司往往應用千人千面技術增加用戶粘度,在影視領域這種情況更加普遍。
相比而言,電影點評推薦相關研究開展得較早。目前,在推薦系統領域較為成熟的電影數據集有很多,例如movielens[1]、Netflix[2]、Douban[3],以上都是推薦系統較為常用的數據集,本實驗主要在Douban 和Netflix 上進行。
協同過濾推薦算法[4-5]在電影推薦領域較為常見,該算法通過記錄用戶行為預測用戶喜好,進而完成電影推薦任務。王駿等[4]通過改進神經協同過濾模型,利用多層感知機的非線性特征處理提取隱含高階特征信息以及貝葉斯個性化排序算法提取排序信息,使推薦更加精準,但是該方法忽略了社交網絡中用戶之間關系的影響力。隨著社交網絡的興起,用戶之間有了更加復雜的關聯關系,這使得單純的協同過濾算法推薦精度有所下降。
在社交網絡中用戶之間的社交關系和用戶發布的內容往往有很強的關聯性[6-7],人們總是傾向于關注與自己興趣點近似的人群。Koren 等[2]首次將矩陣分解技術引入電影推薦系統中,不過其當時的數據集較小,同時僅僅將其應用到了一個數據集,本文實驗擴展了Koren 等的數據集規模。肖曉麗等[3]通過引入信任機制,通過定義直接信任、間接信任、傳遞路徑和計算方法度量社交網絡用戶之間隱含的信任值,將社交網絡轉換為信任網絡,為推薦系統中基于用戶關系提升推薦精度提供了理論依據。
本文的創新之處在于,傳統的電影推薦系統主要以協同過濾算法推薦為主,很少將社交網絡信息作為重要參考,本文通過矩陣分解技術[2,8-9]設置特征參數、損失函數、隨機梯度下降等方法對推薦系統的精度進行改進,同時融合社交網絡用戶信息關系,進而提升推薦系統精度。由實驗結果可知,在兩個實驗數據集上精度分別提高62%、51%。
社交網絡是一個巨大的實時信息傳播平臺,根據用戶發布的內容尋找相似用戶,可以找到自己感興趣的電影或內容,Massa 等[10]于2004 年提出將社交網絡中的相互關系融入推薦算法中構建推薦模型。Lin & Gemmis 等[11-12]通過構建用戶—項目評分矩陣進行用戶相似度計算,以提升推薦系統精確度。
傳統的推薦系統假設用戶是獨立且分布相同,這種假設忽略了使用者的社交關系。在類似于電影社交網絡領域,網絡中的不確定關系往往成為影響推薦精度的重要因素,如果兩個用戶興趣相同,觀點相近,那么認為他們之間的關聯關系會大于那些具有不同興趣和關注內容的人。如果兩個人喜歡電影的個數超過一定比例,則認為他們有相同的欣賞品味,這種社交網絡關系可以在很大程度上影響推薦結果。
對于一個電影推薦系統而言,其用戶和電影之間的關系轉換為一個user-item 矩陣。矩陣中的行代表用戶,列代表電影。若用戶對電影有過評分,則矩陣中處于用戶對應行與電影對應列的交叉位置表示用戶對電影的分值,該矩陣被稱為評分矩陣。通過矩陣分解技術[13-14],可以將us?er-item 評分矩陣分解為2 個低秩的用戶電影矩陣,同時降低計算復雜度。利用線性回歸思想,通過最小化觀察數據的平方尋求最優用戶和項目的隱含向量表示,進而用于預測缺失評分。
求解矩陣分解最優化問題時,本文采用梯度下降法(Gradient Descent),其核心思想是沿梯度下降方向逐步迭代。梯度是一個向量,表示一個函數在該點處沿梯度方向變化最快,變化率最大,而梯度下降方向指負梯度方向。在實際實驗過程中采用隨機梯度下降算法,隨機梯度下降算法[15-17]指在迭代過程中隨機選擇一個或幾個樣本的梯度替代總體梯度,從而極大降低了計算復雜度。本文求解目標函數最小化方法使用的就是隨機梯度下降算法。

Fig.1 Relationship among user,topic and latent factor matrix圖1 用戶、主題、潛在因子矩陣之間的關系
矩陣分解技術用途十分廣泛,基于矩陣分解技術的電影推薦系統可以解決傳統推薦系統技術中存在的矩陣稀疏、冷啟動等問題。本文首先分析基礎矩陣分解技術,然后考慮損失函數構建,最后通過梯度下降算法進行最小值求解。
通過矩陣分解技術構建了一個用戶—電影矩陣。在該推薦系統中用戶集合U={U1,U2,…Um}。電影集合M={M1,M2,…Mm},用戶對電影的評分矩陣R={Rut},其中,Rum 表示用戶u對電影m的評分,每一部電影都得到一個向量q,每一個用戶也得到一個向量p,如式(1)所示。

為了防止過擬合問題,加入正則化λ(‖pu‖2+‖qi‖2),λ為正則化參數。最終得到求解公式如式(2)所示。

接下來利用求最小值方法計算出新評分矩陣的各項參數值。
當在電影社交網絡中的兩個用戶同時討論一個電影,其中一個較為偏激,針對某一個話題經常表達較為悲觀的情緒,而另一個用戶則顯示出較為正面的情緒。在電影選取過程中,由于電影分布不同也可能存在偏差。對于用戶而言,不同的用戶針對相同電影表現出的情感傾向性的激烈程度并不相同。此外,同一個用戶針對不同的電影時,表現出的情感傾向性也不同。為此,通過Koren 等[2]的研究表明,在推薦系統中考慮用戶和主題偏差可以有效改進系統的推薦精度。矩陣分解模型通過明確考慮以下偏差參數解決這些問題,如式(3)所示。

其中,bu代表了用戶偏差,bi代表電影偏差。將偏差計算整合到式(1)中,得到公式如式(4)所示。

建立評分矩陣和損失函數后,需通過優化算法進行最小值求解。本文使用隨機梯度下降算法進行最小值求解,過程如式(5)—式(8)所示。
對于目標函數式(4),對其進行求梯度,如式(5)—式(6)所示。

利用梯度下降進行最小值求解,如式(7)—式(8)所示。

通過上述隨機梯度算法,對分解后的矩陣進行參數估計,得到相應的矩陣參數。
本文首先對數據進行抽取式整理,其次根據測試數據比例進行實驗,設置矩陣分解模型參數并進行不同角度的觀察,最后利用梯度下降算法得到最優解。流程如圖2 所示。

Fig.2 Process of algorithm圖2 算法過程
本文選擇Douban 電影評論和Netflix 數據集作為社會推薦的參考數據集。
Douban 是一個以電影評論為主的社交網站。用戶注冊后,能夠對其它已經發布的電影或即將發布的電影發布評論和打分,評分登記是1~5 的整數。這些評價分數和評論會影響其它網站用戶,是一部電影是否值得觀看的依據。網站用戶之間可以有關注和被關注的關系,評論內容有短評和長評。本文實驗中使用的數據集來源于豆瓣網站,tsv 文件總大小為46.8M,包括94 890 個用戶,共有81 906個不同項目,每個用戶至少有一次評論,總共有11 742 260條評論。在實驗過程中為了考察不同數據集大小情況,分別選取K 篇文章的所有評論進行試驗,K 的大小分別為5、10、15、20、25。選取這些數據內容是為了與Netflix 數據集規模保持一致,方便對比。
Netflix 數據集由Netflix 網站提供,該數據總計有100萬用戶評論,其中評論用戶500 000,電影總計17 000 部。每一個點評的評分在1~5 區間。在實驗過程中,分別選取10 000、25 000、50 000、75 000、100 000 條評論數據作為試驗數據。數據集規模如表1 所示,其中豆瓣電影數據集以討論的電影數目進行分類,Netflix 數據集以評論數據進行分類。從整體看,評論數目的規模較為相近。

Table 1 Dataset size表1 數據集規模
采用均方根誤差RMSE 和評價絕對誤差MAE 對試驗結果進行評價。這兩個評價指標的值越低表示預測準確度越高。

矩陣分解模型是本次實驗的主要貢獻,除原本矩陣外,主要參數有4 個,如表2 所示。

Table 2 Parameters and values表2 參數含義和取值范圍
其中,K 表示潛在用戶特征向量個數,將其取值范圍設定為2~10。
Alpha 表示學習率(learning rate),代表梯度下降算法中迭代步長。學習率一般不宜過大,過大時,迭代過程會出現震蕩現象。在實驗過程中,將其值設置為0.01。
Beta 表示過擬合參數,在實驗過程中將其設置為0.01。在進行梯度下降算法求解過程中可能會造成過擬合問題,所謂過擬合,就是過分地擬合了樣本數據,造成引入了大量噪音,無法呈現原本規律,但又無法針對特殊樣本數據進行剔除,因此干脆對所有參數加入隨機因子,即正則項。正則化是降低過擬合問題的常見手段。
Iterations 表示迭代次數,迭代次數越多,準確度越高,但是相應的計算開銷也會增大,在實驗過程中將其值的范圍設定為10~100。
依據上述數據集、評價指標和模型參數設置等內容,通過實驗觀察該模型如何改變推薦精度。
首先將本文提出的模型應用于豆瓣數據集中,數據集規模按照評論個數劃分為45 872、70 220、90 819、111 793、164 122。具體結果如表3 所示。

Table 3 Evaluation values表3 評測值
RMSE 的值表示對原始電影評論集設置測試用例比例后得到的RMSE 誤差,MF-RMSE 表示應用本文提到的矩陣分解技術后得到的RMSE 值??梢钥闯?,MF-RMSE 對于推薦精度有了較大提升。同時還可以看出,隨著評論數即樣本數據的增加,無論是Douban 數據集還是Netflix 數據集,評論精度有較大幅度提升,具體如圖3 和圖4 所示。

Fig.3 Douban dataset圖3 Douban 數據集

Fig.4 Netflix dataset圖4 Netflix 數據集
通過上述實驗內容可以看出,使用矩陣分解技術前后,推薦系統的準確度有了相應提升。隨著數據集的增加,推薦精度也會有相應增加,但是增長幅度會有所減小,數據集規模達到一定程度后,要提高精度有一定難度。上述兩個實驗雖然基于不同的數據集,但是數據規模較為相似,得到的數據結論也較為相似,因此本文提出的算法頗具代表性。
本文提出了一種矩陣分解算法,將其應用到電影推薦系統中。該算法通過融合用戶和電影內容之間的評分機制,利用矩陣分解技術進行內容推薦,首先將用戶—電影評分矩陣分解為用戶潛在因子矩陣和主題潛在因子矩陣,然后引入損失函數防止出現過擬合現象,最后利用梯度下降算法進行最優值求解。將該方法應用于Douban 電影數據集和Netflix 電影數據集后取得了較好效果。在未來工作中,可將用戶之間的關聯關系和動態內容作為一個重要因素整合到模型中,以更好地提高推薦系統精度。