信 曉 藝
(德州學(xué)院 數(shù)學(xué)與大數(shù)據(jù)學(xué)院,山東 德州 253000)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)中相同類型的信息越來越多,互聯(lián)網(wǎng)用戶每天都會面臨各種各樣的選擇。互聯(lián)網(wǎng)用戶這種需求的逐漸增多,促使個(gè)性化推薦方法查找相關(guān)信息逐漸得到推廣。個(gè)性化推薦方法不僅有助于根據(jù)用戶的興趣特征和歷史行為過濾掉不必要的信息,還可以更深入地挖掘用戶的潛在興趣。以電影為例,當(dāng)前視頻網(wǎng)站上有大量電影資料,并且每天都會發(fā)布新電影。但是,互聯(lián)網(wǎng)用戶無法在視頻頁面上快速找到需要的電影數(shù)據(jù),導(dǎo)致用戶花費(fèi)大量的時(shí)間來搜索數(shù)據(jù),減少了看電影的時(shí)間,而個(gè)性化推薦系統(tǒng)可以幫助用戶過濾掉不需要的信息,對于需要的信息,系統(tǒng)可以幫助用戶按興趣或其他形式尋找并分類。在大數(shù)據(jù)時(shí)代,個(gè)性化推薦系統(tǒng)已在每個(gè)人都最熟悉的電子商務(wù)行業(yè)中采用。系統(tǒng)根據(jù)用戶之前的購買數(shù)據(jù)確定用戶的偏好,或者對數(shù)據(jù)進(jìn)行分析,然后根據(jù)分析結(jié)果推薦產(chǎn)品,以滿足用戶的最大需求并進(jìn)一步提高銷售量。當(dāng)前,一些大型網(wǎng)站(例如Amazon、T-mall和JD.com)都在使用個(gè)性化推薦服務(wù),個(gè)性化推薦在實(shí)踐中可以說是非常重要的[1-5]。
國內(nèi)對推薦算法的研究與西方發(fā)達(dá)國家之間存在很大差異。近年來,相關(guān)領(lǐng)域?qū)<覍W(xué)者的研究越來越全面深入。盧永祥等人[6]對中文文本過濾技術(shù)進(jìn)行了深入研究,最終提出了一種組合文本過濾模型,該算法主要基于內(nèi)容過濾和協(xié)同過濾。單曉磊等人[7]提出了一種基于網(wǎng)絡(luò)密度的用戶偏好偏差檢測方法,該方法可以快速檢測用戶偏好偏差,消除系統(tǒng)建議用戶的影響,提高系統(tǒng)建議的準(zhǔn)確性。趙濤等人[8]提出了一種算法,該算法推薦從二元晶格模型派生的材料的擴(kuò)散出發(fā),假設(shè)每個(gè)項(xiàng)目節(jié)點(diǎn)都有自己的初始資源,在第一次擴(kuò)散之后,它均勻地分布在所有節(jié)點(diǎn)上,然后用戶共享自己的資源,接著以相同的方式將其返回項(xiàng)目的節(jié)點(diǎn),獲取項(xiàng)目之間的建議資源并編寫建議。高銳[9]提出了一種將社交媒體和協(xié)作過濾算法結(jié)合在一起的視頻推薦方法,并根據(jù)目標(biāo)用戶的朋友的實(shí)例和他們的評分,通過計(jì)算候選電影的得分來生成推薦。本文介紹了K-means聚類算法和SVD算法,并結(jié)合視聽推薦系統(tǒng)的當(dāng)前狀態(tài),優(yōu)化并提出了一種基于過濾器的協(xié)同過濾影視推薦算法。從推薦系統(tǒng)的應(yīng)用場景出發(fā),結(jié)合目前在影視網(wǎng)站上廣泛使用的影視內(nèi)容推薦系統(tǒng),介紹了當(dāng)前流行的算法分析及推導(dǎo)過程,基于針對協(xié)同過濾算法的數(shù)據(jù)稀疏性和冷啟動問題,提出改進(jìn)算法。
本文提出的基于降維和聚類技術(shù)的新型協(xié)同過濾推薦算法的目標(biāo)在于緩解稀疏性、冷啟動以及可伸縮性等問題對推薦內(nèi)容的影響,提高推薦算法的性能。通過K-means算法(K均值算法)和Singular Value Decomposition算法(SVD算法)分別對相似的用戶或內(nèi)容進(jìn)行聚類和降維處理。
本文的主要貢獻(xiàn)點(diǎn)在于構(gòu)建了一個(gè)有效的兩階段推薦系統(tǒng),無論數(shù)據(jù)集的大小如何,該系統(tǒng)都可以生成準(zhǔn)確的推薦信息。第一個(gè)階段為離線模型的創(chuàng)建,在這一階段中,通過以下方式構(gòu)建推薦模型:根據(jù)用戶的偏好對用戶的評分進(jìn)行聚類,縮小數(shù)據(jù)的維度,計(jì)算相似度。在這一階段中,主要利用K均值算法和SVD算法進(jìn)行優(yōu)化。第二階段是在線模型的利用,利用創(chuàng)建得到的模型為給定的用戶生成高質(zhì)量的準(zhǔn)確的推薦內(nèi)容。在聚類過程中,使用K-means算法將用戶分組以形成K個(gè)聚類,并且每個(gè)聚類由具有相似排名首選項(xiàng)的用戶組成。 這可以幫助提高推薦算法的性能,因?yàn)楫?dāng)僅考慮集群中包括的用戶而不是考慮所有人員時(shí),它需要更少的計(jì)算和更準(zhǔn)確的推薦內(nèi)容[8]。
本文在研究過程中進(jìn)行了部分修改,以在協(xié)作過濾算法中更好地使用原始的K-means算法進(jìn)行用戶聚類。第一,選擇一個(gè)隨機(jī)用戶K作為K聚類的初始中心。第二,根據(jù)用戶和每個(gè)集群中心之間的距離,將其分配給最近的集群。第三,計(jì)算用戶集群的新均值,以確定每個(gè)集群的新質(zhì)心。第四,對于每個(gè)用戶,重新計(jì)算距離以確定應(yīng)將用戶添加到哪個(gè)集群。第五,它重復(fù)用戶距離的計(jì)算和用戶的重新分配,直到滿足條件的命令完成。具體的分組步驟如下:(1)輸入用戶對影視內(nèi)容的評分矩陣,以及需要聚類的類別數(shù)目K;(2)隨機(jī)選擇初始的K個(gè)用戶作為聚類中心;(3)計(jì)算距離并分配集群;(4)對于每個(gè)用戶集群計(jì)算平均值作為新的分類中心;(5)使用新的分類中心將用戶重新分配到新的集群中;(6)判斷算法是否收斂到穩(wěn)定的分類,否則重復(fù)執(zhí)行(4)和(5);(7)輸出K個(gè)聚類。
通過上面的步驟可以得到對用戶進(jìn)行集群聚類的結(jié)果,具體的聚類效果如表1和表2所示。
表1 原始的用戶評分矩陣
表2 聚類后的用戶集群評分矩陣
表1和表2顯示了初始用戶評分矩陣通過K均值算法得到用戶集群評分矩陣。在用戶評分矩陣中,每一列代表系統(tǒng)中的內(nèi)容,每一行代表用戶,ri,j表示用戶i對內(nèi)容j的評分。同樣,在用戶集群評分矩陣中,每一列代表系統(tǒng)中的內(nèi)容,每一行代表用戶集群,cx,y表示用戶集群y對項(xiàng)目x的平均評分。
通過上面的聚類雖然可以減少一部分評分內(nèi)容,減少矩陣的維數(shù),但是得到的用戶集群評分矩陣的維數(shù)仍然較高,因此我們利用SVD算法進(jìn)行進(jìn)一步降維。SVD算法(奇異值分解算法)是矩陣分解的算法之一,通常用于減少一組數(shù)據(jù)的特征數(shù)量。對于研究中的矩形評分矩陣X[n,m],其中n行代表用戶的聚類中心,m列表示內(nèi)容,因此可以將矩陣X分解為以下形式:X=U·S·VT,其中U表示大小為m×r的正交矩陣,r列為左奇異矢量,S是大小為r×r的對角矩陣包含奇異值,VT是大小為r×n的正交矩陣,具有右奇異值矢量。進(jìn)一步來說,矩陣X中包括m個(gè)用戶和r個(gè)因子的聚類中心,對角陣S中的r表示的是矩陣的秩,V矩陣中則包括n個(gè)用戶和r個(gè)因子。
因此,通過上面的說明,在離線階段中算法的步驟可以總結(jié)為[9]:
(1)輸入包含原始用戶評分矩陣的原始用戶資料;(2)使用K均值算法創(chuàng)建用戶集群,得到用戶集群評分矩陣;(3)對于每個(gè)集群的評分矩陣,應(yīng)用SVD算法進(jìn)行處理獲取分解矩陣;(4)對于得到的每個(gè)分解矩陣計(jì)算相似度;(5)輸出推薦模型。
在離線階段創(chuàng)建并訓(xùn)練了推薦模型后,就可以將模型部署到在線推薦系統(tǒng)中進(jìn)行預(yù)測和推薦任務(wù)。在此階段,還需要進(jìn)行SVD的計(jì)算預(yù)測新用戶的評分。具體步驟為:
(1)輸入新加入的用戶u、內(nèi)容i和推薦模型;(2)使用原始的評分矩陣查找包含對內(nèi)容i評分的用戶集群;(3)預(yù)測新加入的用戶u的評分情況;(4)輸出推薦建議。
用于預(yù)測新加入用戶評分情況的計(jì)算方法如式(1)所示。
(1)
表3 SVD分解用戶集群評分矩陣效果
為了評估本文提出的方法的有效性,我們選擇了3個(gè)廣泛用于評估的數(shù)據(jù)集。第一個(gè)數(shù)據(jù)集是伯克利大學(xué)提出的MovieLens 1 M,它從大約6 000個(gè)用戶中收集了4 000多個(gè)在線電影的收視率,其中收集了大約100萬個(gè)收視率數(shù)據(jù)。第二個(gè)數(shù)據(jù)集是MovieLens 10 M,它從大約70 000個(gè)用戶中收集了大約10 000個(gè)在線電影。這兩個(gè)數(shù)據(jù)集的電影評分范圍均為1~5星。第三個(gè)是MovieLens 100 K,它是上面兩個(gè)數(shù)據(jù)集的原始版本,并且包含的數(shù)據(jù)較少。數(shù)據(jù)集包括80%的訓(xùn)練練習(xí)和20%的測試集。實(shí)驗(yàn)條件:CPU采用Intel Core i7-8700,內(nèi)存采用8 GB內(nèi)存,顯卡為Nvidia GeForce GTX 1080ti,顯存為11 GB,相關(guān)信息如表4所示[10-12]。
表4 實(shí)驗(yàn)數(shù)據(jù)集信息表
為了比較本實(shí)驗(yàn)中方法的性能,采用RMSE作為指標(biāo)。具體來說,RMSE提供了有關(guān)用戶選擇的真實(shí)內(nèi)容和預(yù)測的可能性內(nèi)容之間的差異。RMSE值越小表明推薦系統(tǒng)性能越好。其計(jì)算公式為
(2)
其中:pu,i是用戶u對內(nèi)容i的預(yù)測評分,ru,i表示實(shí)際評分,而N表示對此內(nèi)容的總評分。
在實(shí)驗(yàn)中我們將本文提出的基于降維和聚類的協(xié)同過濾算法與基于K均值算法的協(xié)同過濾算法和基于K近鄰的協(xié)同過濾算法進(jìn)行比較,鄰居范圍設(shè)定為10~50。實(shí)驗(yàn)結(jié)果如表5所示,整體的實(shí)驗(yàn)對比如圖1、圖2和圖3所示。
表5 3種算法的RMSE結(jié)果比較
圖1 100 K數(shù)據(jù)集RMSE對比
圖2 1 M數(shù)據(jù)集RMSE對比
圖3 10 M數(shù)據(jù)集RMSE對比
從以上實(shí)驗(yàn)結(jié)果可以看出,本文提出的降維和聚類的協(xié)同過濾推薦算法在所有比較算法中具有最好的推薦效果。在圖1中,MovieLens 100 K數(shù)據(jù)集的降維和聚類協(xié)作推薦過濾方法在預(yù)測精度方面優(yōu)于其他兩個(gè)。還可以看出,基于K均值的推薦優(yōu)于最近的基于K均值的推薦。圖2顯示了MovieLens 1 M數(shù)據(jù)集的3種比較方法的RMSE結(jié)果。圖3顯示了MovieLens 10 M數(shù)據(jù)集的3種比較方法的RMSE結(jié)果。與基于K均值推薦值和最近鄰K推薦值的方法相比,可以看出本文方法在所有相鄰的RMSE曲線中都保持最低值[13]。
同時(shí)為了選取最好的參數(shù),對比不同數(shù)據(jù)集的K,實(shí)驗(yàn)結(jié)果如表6所示,可以看出聚類參數(shù)K為50左右時(shí)取得的聚類效果最好,因此在本文中推薦系統(tǒng)的聚類個(gè)數(shù)設(shè)置為K=50,實(shí)驗(yàn)對比圖如圖4所示。
表6 聚類參數(shù)K的RMSE結(jié)果比較
圖4 不同K值的推薦效果對比
為了更全面地驗(yàn)證本文提出方法的有效性,除了前面提到的RMSE之外,本文還對比了3種方法在指標(biāo)中的表現(xiàn),3個(gè)指標(biāo)的具體數(shù)值如圖5所示。
圖5 3種方法推薦質(zhì)量對比
針對以上算法,建立了基于降維和聚類的系統(tǒng)過濾影音推薦系統(tǒng),通過設(shè)置配置文件web.xml,調(diào)用基于降維和聚類的協(xié)同過濾推薦模塊得到推薦的影視內(nèi)容,如圖6所示。根據(jù)用戶喜歡的電影,生成對應(yīng)的影視推薦內(nèi)容;其中用戶喜歡的電影列出了當(dāng)前用戶觀看過的電影和對電影的評分以及相應(yīng)的推薦電影列表,如圖7所示。
圖6 設(shè)置調(diào)用基于降維和聚類的協(xié)同
圖7 基于降維和聚類協(xié)同過濾推薦的結(jié)果頁
本文分析了協(xié)同過濾推薦算法中存在的數(shù)據(jù)稀疏性、冷啟動等問題的原因,研究并設(shè)計(jì)了基于降維和聚類的協(xié)同過濾影視推薦算法,設(shè)計(jì)實(shí)驗(yàn)對本文提出算法的有效性進(jìn)行了驗(yàn)證,對比了其他推薦算法的性能;通過K均值算法和SVD算法的優(yōu)化提升了協(xié)同過濾算法的推薦性能。最后,通過設(shè)計(jì)的實(shí)驗(yàn)與其他方法進(jìn)行對比,證明了本文提出的方法達(dá)到了預(yù)設(shè)的研究目標(biāo)[14]。