?

基于卷積神經網絡的協同過濾算法在影片推薦中的應用研究

2022-08-31 22:53張海飛崔軍納葛金鼎
電腦知識與技術 2022年17期
關鍵詞:協同過濾卷積神經網絡

張海飛 崔軍納 葛金鼎

摘要:文章運用深度學習算法中的卷積神經網絡,利用MovieLens數據集,實現了基于協同過濾的影片推薦系統。系統運行表明,該方法實現的推薦系統可以有效緩解“冷啟動”問題。

關鍵詞:影片推薦;協同過濾;卷積神經網絡

中圖分類號:TP18? ? ? 文獻標識碼:A

文章編號:1009-3044(2022)17-0073-05

1簡介

推薦系統[1]已經成功應用到商品推薦中,并逐步滲透到了文化領域,豐富了人們的文化生活。在推薦系統還未萌發的時候,用戶使用傳統的搜索引擎,在獲取數據時,如果需求很明確,比如需要找一個電影,但是用戶只知道這個電影的名稱或導演等信息,搜索出的信息很片面。傳統的搜索引擎的弊端暴露了:當用戶自己也不清楚自己需要尋找的信息的具體內容,搜索得到的結果可能和用戶想要的結果相差很大,用戶獲得的體驗較差[2]。在推薦系統誕生之后,系統開發人員對獲取的數據進行研究,這些數據的共同點指向特定的一類群體,數據的不同點指向每一個用戶,通過合適的推薦算法,生成相應的推薦列表,會更加契合用戶的需求。本文運用卷積神經網絡,基于MovieLens數據集,設計并實現了基于協同過濾的影片推薦系統,以滿足人民日益增長的文化娛樂需求。

2相關工作

協同過濾(Collaborative Filtering,CF)[3]和推薦系統的概念最早在20世紀90年代被提出,國內外的推薦系統迅速發張,但是這時候的系統并不具備為用戶生成推薦列表的能力,必須通過復雜的數據庫查詢語句構造推薦列表推送給用戶。不久,第一個能夠完成自主推薦的新聞系統GroupLens[4]誕生了。1997年,推薦系統(Recommender System,RS)一詞被Resnick等人提及。自此,推薦系統逐漸走入正軌,被世人廣泛應用,也逐步成為較為熱門的研究領域,各式各樣的推薦算法,不同分類的模型,陸續來到了人們的視野中。經常沉淀,目前主流的算法涉及以下各個方面:

基于內容的推薦算法[5]的本質是提取用戶的歷史記錄,依據用戶頻繁瀏覽過并且喜歡的內容,生成推薦列表,向用戶推薦與商品信息較為相似的內容[6]。

協同過濾算法的基本方式就是對于數據的挖掘、對歷史數據的分析和用戶的偏好的分析得出的結論,找尋到用戶的存在和相同興趣的用戶群,然后根據預測用戶可能存在的喜歡的電影序列進行推送,以和用戶同類型的受眾群里喜歡的電影推薦列表為基礎進行的推薦模式,因而這個算法存在的冷啟動[7-8]問題,不能夠為新的用戶提供有效的推薦信息。而基于項目的協同過濾算法是在設計和用戶的喜好推薦上進行類似商品的推薦模式,根據其計算的本質進行相關相似度的推薦方法,生成相似度較高的矩陣方式,來為廣大的用戶群體推薦電影。鄧明通等[9]通過對用戶偏好多樣性的計算來實現推薦,有效地緩解了冷啟動問題,提高了推薦信息的多樣性。

3相關算法和模型

3.1協同過濾算法

協同過濾算法是推薦系統常用的算法。自提出以來引起了各大學術領域包括行為科學、管理科學和計算數學等領域的廣泛關注,越來越多的專家學者參與到算法的研究[10]中,同時大型的互聯網網站如:YouTube、Facebook 等公司都使用深度學習[11]對協同過濾算法進行相關的設計研究,進行成功的引用,豐富自己的信息網站。傳統的協同過濾算法可以細分為以下兩個方面:

1)基于用戶的協同過濾算法

這個算法的原理是先確定所有的用戶群體,再根據目標群體,從所有的用戶群體中尋找與之相似的用戶群體,根據用戶群體里的喜好項目逐一遍歷展示給目標用戶。要實現推薦主要通過這個算法的以下三個步驟:

①通過收集的用戶信息的分析,生成一個評分矩陣,其中包括用戶ID、項目ID、評分這三個部門。

②利用評分矩陣,計算用戶的相似性矩陣。

③為目標用戶推薦項目,主要是依據與目標用戶最相近的用戶群所喜歡的項目。

比如在一個電影推薦系統當中,通過對用戶的歷史記錄來分析數據樣本進行推薦,用戶a對ABC電影給予了高分平均,用戶b對CDE給予了高分評價,用戶c對ACF給予了高分評價,電影推薦系統能根據用戶對于數據的相似性來判斷分析,得出了用戶a與用戶c的性格喜愛方式類型,最終給用戶a推薦電影F。

2)基于項目的協同過濾算法

這個算法的原理在用戶群體中尋找目標用戶消費過的產品,將這些產品遍歷給用戶群體?;陧椖康膮f同過濾算法分以下三步進行推薦:

①根據整理的信息,生成包含用戶ID、項目ID和評分三部分的特征矩陣。

②根據包含這三部分信息的特征矩陣,結合算法生成相似性矩陣。

③逐一遍歷相似性矩陣,根據需求,適當的選擇推薦給用戶的內容數量。

再比如,在電影推薦系統當中,通過對數據樣本的歷史記錄的分析得知a、b、c三個用戶都對A電影打出來高評價,用戶a、b同時對B電影打出來高評價,用戶a對C電影打出了高評價,用戶b對D電影有高評價,因此電影AB的相似度就很高,用戶c喜歡A電影,因此根據系統的判斷把B電影推薦給用戶c。

上述的假設過程就是常見的協同過濾算法的級別推薦方式,通過這一方式能夠較快地向用戶推薦相關電影信息,但是協同過濾算法存在兩個缺點,對這個算法的改進目前仍然處于探索階段。

1)存在擴展性問題,隨著電影數量和用戶數量的增加,一定會影響推薦算法的效率,對于實時性效率比較高的商務網站,基于協同過濾的推薦系統存在嚴重的擴展性問題。

2)存在冷啟動問題,如果有新用戶注冊,沒有相應的歷史數據對其進行分析,導致模型無法找到相似的用戶或商品,也就不能推薦適合的內容,其中冷啟動問題表示的是在沒有大量數據的情況下,如何進行有效的推薦。

3.2卷積神經網絡

卷積神經網絡(CNN)[12]是一種包含了卷積計算的方法,是深度學習算法技術的代表之一,卷積神經網絡的運用方式,可以進行監督學習和非監督學習進行構建結構,其核心的五層結構為數據輸入層、卷積計算層、激勵層、池化層和全連接層。

數據輸入層主要是對原始數據進行處理操作,對無用的信息進行過濾,有效的信息進行有序的排布,對數據進行去均值、歸一化和PAC降維等處理,通過對數據的處理,可以更好地劃分層次結構。

卷積計算層是卷積神經網絡最為重要的部分,是對前面獲取到的數據進行計算處理,拆解的過程,其中較為關鍵的操作,是對局部關聯和窗口滑動,對其中的深度、步長和填充值進行相應的獲取,通過對矩陣的映射計算,得出相應的數值,同時卷積計算層還有很高的共享性,能夠把計算出的相關數值,同傳分析,分享到各層當中,同時計算用戶和電影的信息數據,計算矩陣向量可以用來之后的推薦。

激勵層主要的功能是把卷積計算層計算出的相關數據,進行結構的非線性映射,其主要的特點是能快速地對相關數據進行展現,梯度求值較為簡單,但其本身數據較為脆弱易被更改,不利于長期保存。

池化層就是相對于輸入層存在的層次關系,因為輸入層輸入的數據較為龐大,存儲較為復雜且占用大量的空間,因此設計的池化層就是用來解決這一問題,池化層主要的功能就是進行數據圖片的壓縮,壓縮相關數據便于存儲。

全連接層其主要功能是在層次間的連接當中,通過全連接層進行數據的快速傳輸,方便進行數據的傳遞,位于卷積神經網絡隱含層的最后部分,并只向其他全連接層傳遞信號。

通過輸入層進行數據的讀取,把獲取的數據通過輸入層錄入,再通過卷積計算層進行數據的計算,計算出相應的矩陣值,通過激勵層實現數據結構的非線性映射實現圖層,再通過池化層把龐大的數據進行壓縮,實現數據的推薦,上述的層次結構都是通過全連接層實現的,這便是完整的卷積神經網絡的基本實現方式。

4 基于卷積神經網絡協同過濾的影片推薦

4.1數據處理

本項目使用MoviesLens數據集[13],該數據集存儲了電影評分,包含了來自6000名用戶對4000部電影的100萬條評分數據。

用戶數據由五部分組成,主要是用戶ID、性別、年齡、職業ID和郵編。從圖1可以看出,郵編是地區的郵政編碼,不是用戶特征字段,不需要使用。用戶數據user.dat文件中以“::”連接每個數據。收集的數據包含各個年齡段中各行各業的人們,年齡段主要分為年齡在18歲以下、年齡在18~24歲之間、年齡在25~34歲之間、年齡在35~44歲之間、年齡在45~49歲之間、年齡在50~55歲之間、年齡在56歲以上,涉及的行業包含學術/教育工作者、藝術家、文員/行政等二十個方面的。用戶數據預處理前的數據格式如圖1所示。

影片數據集中收集到的電影可以分為十六個類別,由動作片、冒險片、動畫片、兒童片等組成,由電影ID、電影名稱和電影風格三個字段組成,數據之間的連接方式依然通過“::”連接,影片數據預處理前數據如圖2所示。

評分數據由用戶ID、電影ID、評分、時間戳四部分組成,評分數據中數據的排序以用戶ID為主,電影ID為輔進行排序。評分數據預處理后的數據如圖3所示。

因為數據存在差異性,要根據數據的特點進行不同的處理:用戶ID、職業ID和電影ID是不用改變的;性別字段:需要數據庫中的F和M字符轉換成數值0和1;年齡字段可以將年齡分為七大類,將七大類分別轉成7個連續0—6的數值;電影分類字段,需要轉換成數字,首先組成一個由電影分類和唯一標識這個電影分類的數字的字典,將每部電影的分類字段轉換成相應的列表,因為每部電影可能不止一個類別。電影的名稱字段與電影類別做相似處理。電影名稱和電影類別的長度需要統一,為了方便處理,長度不足的部分用‘對應的數字進行填充。預處理完成之后的用戶數據、電影數據、評分數據如圖4所示。

3.2 實驗準備

實驗的目的是通過計算訓練出用戶特征值和電影特征值,進行推薦處理分析使用,分析數據集中的相關字典,發現其中一些字段信息較為特殊,對這些不同于其他字段,且不方便存儲的信息通過one hot編碼方式進行轉化存儲,如用戶ID、電影ID等字段,這種編碼表示的是由0和1組成的數據集合。在存儲數據時,時常遇到稀疏性問題,輸入的時間較長,維度也急劇膨脹,這是急需解決的問題,因此通過相關數據的預處理方式,將這些字段轉化成數字,用這些數字當作嵌入矩陣的索引,網絡的第一層使用了嵌入層,維度是(N,32)和(N,16)。

電影類型的處理要多一步,有時一部電影有多部電影類型,這樣從嵌入矩陣索引出來是一個(n,32)的矩陣,將這個矩陣求和,變成(1,32)的向量。從嵌入層索引特征以后,將每個特征值通過全連接層傳入,再將輸出傳入到全連接層,最終得到(1,200)的用戶特征和電影特征兩個特征向量。對于電影名稱的處理比較特殊,從嵌入矩陣中得到電影名對應的各個單詞的嵌入向量,名稱長度有一定限制,這里過濾器大小使用時,就選擇2、3、4、5長度。然后對文本嵌入層使用滑動2、3、4、5個單詞尺寸的卷積核做卷積和最大池化。最后進行Dropout 操作,全連接層輸出。

3.3 實驗環境

1)硬件設備

處理器:Intel(R) Core(TM)i7 -8750H CPU @ 2.20GHz 2.21 GHz。

內存:8GB。

2)軟件環境

操作系統:Microsoft Windows10 操作系統(64位)。

開發語言:Python 3.7。

編碼工具:JetBrainsPyCharm 2018.1.3。

軟件工具:Pandas、Numpy、Tensorflow、Collections、Os、Pickle、Re、Zipfile、Hashlib、Matplotlib、Time、Datetime,其中安裝Numpy版本過高的話會報錯,所以需要安裝1.16.0版本的numpy。

實驗采用了協同過濾算法進行的相關設計,從不同方面進行相關數據的讀取、呈現和分析,能夠做到的就是一個根據不同設計模式進行的算法驗證操作。

3.4訓練參數設置

為了保證算法的精確性,采用了大量的訓練數據進行長時間的計算,以折現圖的方式進行展現。在每個圖中,Train_loss表示訓練誤差,即訓練集在模型中預測結果與真實結果的差值,Test_loss 表示驗證集上的損失。從折線圖變化的趨勢可以看出,Train_loss折線圖和Test_loss折線圖都呈下降趨勢,表明設計的網絡信息還在不斷學習,即網絡結構設計得當,訓練超參數設置得當。

對于卷積神經網絡的推薦結果影響最大的三個參數為Batch_size、學習率和迭代次數。Batch_size就是每批處理的樣本的個數,即一次訓練所選取的樣本數。學習率就是機器學習的速率,開始時需要較高的學習率進行快速學習,運行一段數據學習率不斷衰減,達到穩定。 迭代次數,每一次迭代都會更新一次網絡結構的參數。Dropout是為了應對神經網絡很容易過擬合的問題。本次設置了三種不同的參數,學習率和Dropout的值始終為0.0001和0.5,而Batch_size和迭代次數設置為三組不同的數值,根據“一個參數不變,改變另一個參數”的原則,選擇了256和5、64和5、64和20三組,并且對于Test_loss和Train_loss的值進行統計,結果如圖5、圖6、圖7所示。

圖5是在迭代次數為5的情況下,將Batch_size設置為256時,從訓練缺損和測試缺損的統計分布來看,訓練缺損的值在0.966和12.162之間,測試缺損的值在 0.722和1.418之間,可以看出來波動比較大,不是很穩定。

圖6與圖5相比,樣本數量不變,但是樣本的迭代次數增加到20次,此時訓練缺損值的范圍在0.899~7.984之間,測試缺損值在0.546~1.589之間,相比圖5,相對而言波動收斂些,這就說明,在batch_size的數值相同時,增加迭代次數,可以使訓練和測試結果更加穩定。

圖7與圖5的迭代次數一致,都為5,將Batch_size設置為64時,對比圖5,訓練缺損值范圍在0.823至13.101之間,測試缺損值范圍在0.232至1.712之間,忽略網絡開始學習不穩定的情況,說明在一定范圍內,適當降低Batch_size值,可以降低訓練缺損。

圖8結合圖6和圖7的規律,將batch_size的值設置為64,迭代次數設置為20,訓練缺損值范圍在0.506至14.021之間,測試缺損值范圍在0.192至1.708之間,可以看出訓練缺損和測試缺損的趨勢更為穩定,因此本文認為,當batch_size 為確定值時,增加迭代次數可以使訓練和測試結果更加穩定。

4 實驗結果分析

推薦同類型的電影根據在數據集中隨機選區的電影,計算電影特征向量與電影特征矩陣的余弦值進行相似度的比較,計算較大的五個值,如圖9所示。

根據喜歡的電影推薦,隨機生成用戶特征,通過卷積神經網絡結合電影特征矩陣計算電影評分,進行推薦評分最高的部分,這個數量是可以進行修改的,在本項目中推薦的數量設置為5,如圖10所示。

根據看過此電影的人還喜歡哪些電影,在數據集中選取出的一個電影,然后根據排名選出有同樣喜好的用戶,提取這些用戶的特征向量,進行算法的設計得出相應的推薦,將每個人評分最高的電影選出,并分別進行推薦,如圖11所示。

通過對IMDB數據集的獲取,對存在的相關用戶個性特征值和電影特征值進行卷積神經網絡CNN的計算,通過上述的設計方法,進行數據值的處理比對,根據生產用戶的特征值矩陣和電影特征值矩陣進行處理分析得出loss的數值,計算當前看的電影特征向量與整個電影特征矩陣的余弦相似度,添加其中隨機生成的字段不同,使用用戶特征向量與電影特征矩陣計算所有電影的評分,獲取得出數較高的電影信息,進行推薦,充分地結合CNN的設計思路,并通過協同過濾算法來解決用戶的冷啟動問題,計算新用戶的矩陣特征值,對數據集中的用戶數據進行比對,有相似用戶特征值信息的用戶,喜歡的電影類型,進行相同類型的推薦,這樣可以稍微緩解用戶的冷啟動問題。

5結束語

本文利用卷積神經網絡和協同過濾算法對電影數據分析,經過大量的訓練實驗得出較優的卷積參數,通過協同過濾算法計算與其他用戶的相似度,實現了電影推薦系統,設計的電影推薦系統結合算法維度進行推薦,并實現較高的準確度,緩解了推薦系統的“冷啟動”問題。

參考文獻:

[1] Chen Y L,Cheng L C,Chuang C N.A group recommendation system with consideration of interactions among group members[J].Expert Systems With Applications,2008,34(3):2082-2090.

[2] 許海玲,吳瀟,李曉東,等.互聯網推薦系統比較研究[J].軟件學報,2009,20(2):350-362.

[3] 馬宏偉,張光衛,李鵬.協同過濾推薦算法綜述[J].小型微型計算機系統,2009,30(7):1282-1288.

[4] Resnick P,Iacovou N,Suchak M,et al.GroupLens:an open architecture for collaborative filtering of netnews[C]//ACM Conference on Computer Supported Cooperative Work.ACM,1994:175-186.

[5] Tuzhilin A.Towards the next generation of recommendersystems[C]//Proceedings of the 2010 International Conference on E-Business Intelligence.Paris,France:Atlantis Press,2010.

[6] 陳思亦,何利力,鄭軍紅.結合商圈位置區域模型的商品推薦算法[J].計算機系統應用,2019,28(8):136-141.

[7] 孫冬婷,何濤,張福海.推薦系統中的冷啟動問題研究綜述[J].計算機與現代化,2012(5):59-63.

[8] Schein A I,Popescul A,Ungar L H,et al.Methods and metrics for cold-start recommendations[C]//SIGIR'02:Proceedings of the 25th annual international ACM SIGIR conference on Research and development in information retrieval,2002:253-260.

[9] 鄧明通,劉學軍,李斌.基于用戶偏好和動態興趣的多樣性推薦方法[J].小型微型計算機系統,2018,39(9):2029-2034.

[10] 劉建國,周濤,汪秉宏.個性化推薦系統的研究進展[J].自然科學進展,2009,19(1):1-15.

[11] 孫志軍,薛磊,許陽明,等.深度學習研究綜述[J].計算機應用研究,2012,29(8):2806-2810.

[12] Lecun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324.

[13]Harper F M,KonstanJ A.The MovieLens Datasets:Historyand Context[J].ACM Transactions on Interactive Intelligent Systems (TiiS) 5,4,Article 19 (December 2015),19 pages.DOI=http://dx .doi.org/10.1145/2827872.

收稿日期:2022-03-16

作者簡介:張海飛(1980—),男,江蘇如東人,副教授,博士,研究方向為機器學習、深度強化學習、地理信息系統;崔軍納(1979—),男,河南許昌人,工程師,碩士,研究方向為工業互聯網技術、物聯網技術、自動控制技術;葛金鼎(1984—),男,江蘇通州人,碩士,研究方向為船舶工程、機械工程、自動控制技術。

猜你喜歡
協同過濾卷積神經網絡
基于卷積神經網絡溫室智能大棚監控系統的研究
基于深度卷積神經網絡的物體識別算法
改進的協同過濾推薦算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合