一種基於Hadoop平臺的電影推薦方法與流程
2023-05-29 22:09:41
本發明涉及大數據處理,推薦系統、數據挖掘、電影推薦領域,具體涉及一種分布式信息推薦方法。
背景技術:
一、雲計算平臺以及大數據處理方面
在當前的信息社會中,各行各業的數據量以指數速率在不斷增長,於此對應,大數據處理技術也在不斷進步,最典型的就是分布式處理技術,如Hadoop,MapReduce等。某些公司推出了大數據處理的雲平臺,提供完整的大數據服務解決方案,如微軟的Azure,阿里雲的ODPS。藉助這些技術和服務,對於任何企業,存儲和處理大量用戶數據目前都不是問題。大量的數據以及強大的數據處理能力,使得企業可以從數據中挖掘出更多對於業務有價值的信息,設計更多的業務模式,解決一些之前難以解決的問題,從而獲得更多利益。
二、推薦系統方面
個性化推薦是根據用戶的基礎信息、行為偏好、瀏覽記錄,向用戶推薦用戶感興趣的信息和商品。隨著電子商務規模的不斷擴大,商品個數和種類快速增長,顧客需要花費大量的時間才能找到自己想買的商品和信息。這種瀏覽大量無關的信息和產品過程無疑會使淹沒在信息過載問題中的消費者不斷流失。為了解決這些問題,個性化推薦系統應運而生。個性化推薦系統是建立在海量數據挖掘基礎上的一種高級商務智能平臺,以幫助電子商務網站為其顧客購物提供完全個性化的決策支持和信息服務。最典型的推薦算法是協同過濾算法。
三、數據挖掘方面
數據挖掘是資料庫知識發現的一個步驟,是指從大量的數據中通過搜索算法搜索隱藏於其中的信息的過程,數據挖掘通常與計算機科學有關,並通過統計、在線分析處理、情報檢索、機器學習、專家系統、模式識別等方法實現上述問題。可以使用分類、估計、預測、關聯規則、聚類、複雜數據挖掘等分析方法,分析系統輸入輸出間的潛在關係,幫助用戶快速找到自己感興趣的信息或商品,提高用戶體驗的滿意度。
四、電影推薦方面
隨著社會的進步與發展,電影市場的需求量也在不斷提升,隨著越來越多種類的電影出現,使得用戶很難找到自己真正喜歡的電影,或者要花費很長時間來尋找自己喜歡、感興趣的電影,同樣,電影開發者也很難讓自己的電影被大眾所了解。因此,很多電影開發商謀求和手機、搜尋引擎等合作,藉助手機、搜尋引擎以此來推薦自己拍攝的電影給用戶。對於手機或搜尋引擎來說,要推薦一部電影給用戶,一個非常重要的方式就是發送相關通知給用戶,但是,如果推薦的電影是用戶不喜歡的,用戶就不會觀看,造成資源浪費,而且會對用戶造成騷擾,造成不良的用戶體驗,因此,搜尋引擎和手機系統在推送電影的時候需要能夠精準的找到真正對這部電影感興趣的用戶群體,這需要推薦系統來支持。
隨著電影市場信息量的增多,用戶很難在短時間內發現自己感興趣的電影,傳統的搜尋引擎難以提供個用戶個性化的推薦結果,而且大規模的數據處理過程中時耗過長,單機存儲能力有限,難以對大數據進行實時處理。
技術實現要素:
本發明的目的是克服現有技術的上述不足,克服大規模電影信息處理過程中耗時問題以及存儲PB級文件系統瓶頸的問題,提供一種能夠提高大規模電影信息的推薦效率的電影推薦方法,技術方案如下:
一種基於Hadoop平臺的電影推薦方法,包括下列步驟:
步驟1.對原數據集進行預處理,建立新的用戶項目數據集:
獲取用戶-電影數據集,經過預處理後,形成新的用戶項目數據集,並將數據集存儲在Hadoop平臺的HDFS分布式系統上,每個用戶的數據作為一個單獨的split;
步驟2.在Hadoop平臺上採用基於評分傾向的雙重預測方法對數據集中的空缺值進行填充,形成高密度的用戶-電影數據集:
引入用戶評分傾向公式(1),電影評分傾向公式(2),然後進行雙重預測評分,對於某電影,如果有最近鄰電影,且最近鄰無空缺,則作為填充數據;如果數據空缺,則用電影的若干近鄰和用戶的若干近鄰加權求得的結果進行填充,如公式(3)、(4)所示:
其中,ua表示用戶a,ub表示用戶b,其中1a表示電影a,ub表示電影b;
表示用戶a和用戶b的共同評分集,rai和rbi分別表示用戶ua和ub對項目i的評分值,表示用戶ua的評分均值,表示用戶ub的評分均值,sim(ua,ub)表示兩個用戶間的評分傾向;
sim(Ia,Ib)分別表示兩個用戶間和兩個電影間的評分傾向,表示對電影a和電影b共同評分的用戶集,rua和rub分別表示用戶對電影a和b的評分值,表示用戶的評分均值;
Ni表示電影i的最近鄰項目集,prbi表示基於電影的評分預測值;
Na表示用戶a的最近鄰用戶集,prbi表示基於用戶的評分預測值;
步驟3.在Hadoop平臺上,對步驟2得到的數據集進行分布式聚類,得到若干聚類單元,再訓練分類器,進行分類,步驟如下:
1)對預測評分後的用戶電影矩陣首先進行粗聚類,採用canopy算法,得到聚類的個數K,再引入經典的K-means算法進行進一步的細聚類,將用戶-電影評分集根據類內方差和最小的原則分為指定的K類;
2)採用BP神經網絡的建模方法,訓練分類器;
步驟4.形成推薦列表:
目標電影或用戶就通過步驟3被分到不同類別,然後在不同類別中進行相似性度量,找到若干最近鄰居集形成推薦列表。
本發明針對大規模電影信息推薦運算耗時過多、文件系統及存儲架構落後的問題,提出一種基於Hadoop平臺的電影推薦方法。實驗顯示,本發明不僅具有較好的推薦準確度,同時有效減少推薦時間,可以良好地應用於大規模電影信息推薦場景。
附圖說明
圖1是Hadoop平臺的資源調度結構圖
圖2是本發明的流程圖
具體實施方式
本發明將電影推薦過程分為原始數據集矩陣填充、分布式聚類分類、形成推薦三個階段,在每個階段進行並行化設計。第一個階段提出基於評分傾向的雙重預測填充模型,提高填充的數據的準確性。第二階段採用分布式聚類分類聚合模型得到相似性矩陣,提高推薦準確率。第三個階段將相似性最高的電影或用戶形成推薦列表,推薦給用戶。本發明選取MovieLens經典用戶-電影數據集進行實驗,將數據集按照4:1的比例分成訓練集和測試集
Hadoop平臺資源調度結構圖如圖1所示。推薦流程如圖2所示,下面對本發明做進一步說明。
(1)對原數據集進行質量檢測
質量檢測主要是指:對從網絡上獲取用戶-電影數據集進行清洗、過濾處理,去除原始數據中的無關數據、重複數據,平滑噪聲數據及與主題無關屬性。在分布式集群上,編程實現map、reduce過程,並行化步驟是:
步驟1首先將原始的用戶電影評分數據存儲到hdfs的Hadoop集群上,塊式存儲在分布式系統上的各個節點上,每個用戶的數據作為一個單獨的split;
步驟2 Map節點任務:原始數據的(key是用戶的ID,value是該用戶對應的電影-評分數據),通過map過程,形成新的,其中Key是電影的title,Value是用戶電影評分數據rating,Map可以自動完成對所有用戶和電影的評分信息的收集,將數據按照鍵值對的形式進行統計;
步驟3將Map節點產生的數據分布式存儲在HDFS集群上,無需進行Reduce過程。
(2)提出基於評分傾向的雙重預測模型,填補稀疏矩陣
原始用戶電影評分數據集極度稀疏,造成計算準確度和複雜性問題。因此本發明提出一種在Hadoop平臺上基於評分傾向的雙重預測模型,對數據集中的空缺值進行填充,減少數據稀疏性,形成高密度的用戶-電影數據集。具體步驟是:首先引入用戶評分傾向公式(1)所示,電影評分傾向公式(2)所示,然後進行雙重預測評分,由於電影信息屬性穩定性高,因此該電影如果有最近鄰電影,且最近鄰無空缺,則作為填充數據;如果數據空缺,則用電影的若干近鄰和用戶的若干近鄰加權求得的結果進行填充如公式(3)、(4)所示。
其中,ua表示用戶a,ub表示用戶b,其中1a表示電影a,ub表示電影b。
表示用戶a和用戶b的共同評分集,rai和rbi分別表示用戶ua和ub對項目i的評分值。表示用戶ua的評分均值,表示用戶ub的評分均值。sim(ua,ub)表示兩個用戶間的評分傾向
sim(Ia,Ib)分別表示兩個用戶間和兩個電影間的評分傾向,表示對電影a和電影b共同評分的用戶集。rua和rub分別表示用戶對電影a和b的評分值,表示用戶的評分均值。
Ni表示電影i的最近鄰項目集。prbi表示基於電影的評分預測值。
Na表示用戶a的最近鄰用戶集。prbi表示基於用戶的評分預測值。
(3)提出分布式聚類分類聚合模型
針對數據處理過程中,過多計算佔用大量內存的問題,提出分布式聚類分類聚合模型,具體步驟如下:
步驟1對預測評分後的用戶電影矩陣首先進行粗聚類,採用canopy算法,得到聚類的個數K,再引入經典的K-means算法進行進一步的細聚類,將用戶-電影評分集根據類內方差和最小的原則分為指定的K類,如公式(5)所示。
式中:Ci表示第i個聚類類別,中心為μi,xi為該類別的數據點。
首先將(2)產生的大量用戶電影數據集改為序列文件格式,設置默認最大聚類迭代次數為10,設定聚類中心數為200,產生聚類中心存儲在HDFS上。本發明引入canopy、K-means模型算法,canopy算法過程中簡單、計算代價較低,同時K值避免了kmeans算法過程中K值選擇的盲目性。
步驟2採用BP神經網絡的建模方法,訓練分類器。
BP神經網絡是一種按照誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。誤差函數常採用二乘誤差函數來定義,如公式(6),當誤差函數小於某一個設定的值就會停止神經網絡的訓練。該算法分成兩個部分,第一部分是輸入信息從輸入層經隱層逐層計算各單元的輸出值;第二部分輸出誤差逐層向前計算出隱層各單元的誤差,並用此誤差修正前層權值。具體編程思想如下:
Yk表示真實值,Tk表示計算值,E表示誤差
a)在Hadoop平臺各個Mapper節點啟動Map任務,輸入數據為各個聚類單元數據,利用所訓練數據為當前網絡權值計算修正值,將所計算的修正值發送到Reducer端;
b)在Hadoop平臺各個Reducer節點啟動Reduce任務,每個Reducer端輸入權值的所有修正值,並將計算出的修正值的平均值作為輸出;採用分布式訓練方式,修正各層權值;不斷重複,直到誤差達到預設精度或學習次數大於設定的最大次數,得到分類器模型。
(4)利用測試數據對推薦模型進行測試,形成推薦列表
針對需要推送的電影,依次進行數據清洗過濾、空缺數據的填充後,目標電影或用戶就通過(3)被分到不同類別,然後在不同類別中進行相似性度量,找到若干最近鄰居集形成推薦列表。
分布式實驗環境是由4臺Dell R730伺服器組成的Hadoop集群,其中包括1個NameNode節點,3個DataNode節點。四臺伺服器的作業系統均採用Ubuntu14.04,Hadoop版本為2.6.0。測試數據採用MovieLens數據集進行測試,20%的記錄作為測試集。
本發明的優點如下:
1.預測評分時提出基於評分傾向的雙重預測評分模型,充分利用用戶和電影的自身特性,進行分布式預測評分,可以提高預測評分的準確性,降低矩陣稀疏性。
2.基於Hadoop平臺提出聚類分類聚合模型,充分利用聚類、分類的雙重優勢,既能夠監督聚類的結果揭示數據的潛在結構,又能創造有效的分類學習機制,獲得更好的分類結果。在此基礎上採用並行化處理方式,可以提高聚類分類的速度,提高推薦的時效性。
綜上所示,本發明可以獲得良好的推薦效果,同時充分利用Hadoop環境在分布式存儲和並行運算上的優勢,顯著減少推薦的時間開銷。