[發明專利]基于用戶自相似度的多模型相結合的電影推薦方法在審
| 申請號: | 201710493196.6 | 申請日: | 2017-06-26 |
| 公開(公告)號: | CN107368540A | 公開(公告)日: | 2017-11-21 |
| 發明(設計)人: | 張欣;林靈;呂坤 | 申請(專利權)人: | 北京理工大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06K9/62 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100081 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 用戶 相似 模型 相結合 電影 推薦 方法 | ||
1.一種基于用戶自相似度的多模型相結合的電影推薦方法,其特征在于:其具體操作步驟為:
步驟一、構建數據庫;
獲取影評信息,從所述影評信息中抽取影評信息中的用戶ID、電影ID及對應的評分信息,構建電影評分數據庫;從所述影評信息中抽取電影信息構建電影內容數據庫;
所述電影信息包括電影ID、電影名稱、電影類型;
步驟二、構建和訓練協同過濾模型;
在步驟一操作的基礎上,構建和訓練協同過濾模型;所述協同過濾模型為交替最小二乘法ALS模型;
構建和訓練協同過濾模型的具體操作為:
步驟2.1:切分數據集;將電影評分數據庫中的數據分為3部分,分別為:影評訓練數據集、交叉驗證數據集、影評測試數據集;其中,影評訓練數據集中的數據多于1000條,交叉驗證數據集中的數據多于300條;
步驟2.2:將影評訓練數據集導入交替最小二乘法ALS模型,同時設置3個參數的值,分別是:潛在因子個數,用符號rank表示;矩陣分解的迭代次數,用符號iterations表示;過擬合參數,用符號Lambda表示;其中,rank<m/20并且rank<n/20,m為影評訓練數據集中用戶的數量,n為影評訓練數據集中電影的數量;iterations>10;Lambda<10;訓練后獲得最佳ALS模型;
將影評訓練數據集導入交替最小二乘法ALS模型,訓練最小二乘法ALS模型的具體操作步驟為:
步驟2.2.1:設定rank∈{8,10,12},iterations∈{10,20},Lambda∈{0.01,0.1,1};并將rank、iterations、Lambda的取值進行排列組合,獲得18組rank、iterations、Lambda值;
步驟2.2.2:將步驟2.2.1得到的rank、iterations、Lambda的18組取值分別作為交替最小二乘法ALS模型的參數設定值,訓練18次所述最小二乘法ALS模型,獲得18個ALS模型,所述ALS模型中包含用戶特征矩陣、電影特征矩陣以及特征數,分別用符號U、V和rank表示;
步驟2.2.3:將交叉驗證數據集中的數據表示為一個p行3列的矩陣,用符號B表示,其中,p為交叉驗證數據集中數據的數量;
步驟2.2.4:將交叉驗證數據集中的數據分別導入到步驟2.2.2所述的18個ALS模型中,每次得到一個q行3列的預測評分矩陣,用符號B′表示,然后使用公式(1)計算對應的RMSE值;其中,q=m1×n1,m1為交叉驗證數據集中用戶的數量,n1為交叉驗證數據集中電影的數量;
其中,bi,3為矩陣B中第i行第3列的值,i∈[1,p];b′j,3為矩陣B′中第j行第3列的值,并且滿足b′j,1=bi,1,b′j,2=bi,2;bi,1為矩陣B中第i行第1列的值,bi,2為矩陣B中第i行第2列的值;b′j,1為矩陣B′中第j行第1列的值,b′j,2為矩陣B′中第j行第2列的值,j∈[1,q];
步驟2.2.5:從18個RMSE值找最小值,記為RMSEmin,將RMSEmin對應的ALS模型作為最佳ALS模型;
步驟三、測試最佳ALS模型的擴展度;
步驟3.1:將影評測試數據集中的數據表示為一個p′行3列的矩陣,用符號C表示,其中,p′為影評測試數據集中數據的數量;
步驟3.2:將影評測試數據集中的數據導入到最佳ALS模型中,得到一個q′行3列的預測評分矩陣,用符號C′表示,然后使用公式(2)計算對應的RMSE′值;其中,q′=m2×n2,m2為影評測試數據集中用戶的數量,n2為影評測試數據集中電影的數量;
其中,ci′,3為矩陣C中第i′行第3列的值,i′∈[1,p′];c′j′,3為矩陣C′中第j′行第3列的值,j′∈[1,q′],并且滿足c′j′,1=ci′,1,c′j′,2=ci′,2;ci′,1為矩陣C中第i′行第1列的值,ci′,2為矩陣C中第i′行第2列的值;c′j′,1為矩陣C′中第j′行第1列的值,c′j′,2為矩陣C′中第j′行第2列的值;
步驟3.3:如果公式(3)成立,則認為最佳ALS模型具備較好的擴展度,找到最佳ALS模型;否則,返回步驟二,重新設置rank、iterations、Lambda三個參數,重新尋找最佳ALS模型;
|RMSEmin-RMSE′|<ε (3)
其中,ε為以人為設定的閾值,ε<0.1;
步驟四、對于目標用戶,用符號u表示,使用最佳ALS模型產生第一電影推薦集;
步驟4.1:將電影評分數據庫中的全部數據表示為一個s行3列的評分矩陣,用符號G表示;其中,s為電影評分數據庫中數據的數量;
步驟4.2:將電影評分數據庫中的全部數據導入到最佳ALS模型中,得到一個s′行3列的預測評分矩陣,用符號G′表示;
步驟4.3:生成第一電影推薦集,用符號C1表示;
步驟4.3.1:從預測評分矩陣G′中抽出目標用戶u的全部預測評分數據,表示為一個m3行2列的目標用戶u的預測矩陣,用符號H′表示,其中,m3為電影評分數據庫中電影的總量,矩陣第一列為電影ID,第二列為預測評分;
步驟4.3.2:從電影評分數據庫中篩選出目標用戶u已經評分過的電影,構成目標用戶u的電影集合,用符號H表示;
步驟4.3.3:利用目標用戶u的電影集合H,從目標用戶u的預測矩陣H′中篩選出目標用戶u未評分過的電影及其預測評分,構建矩陣Q;
步驟4.3.4:將矩陣Q根據預測評分降序排序,選擇前N項的電影ID,即預測評分值最大的N個電影,作為第一電影推薦集C1;其中,N為人為預先設定值,N≤50;
步驟五、構建和訓練分類樹模型;
步驟5.1:建立電影評級數據庫,用符號R表示;如果電影評分數據庫中的評分有小數,則將電影評分數據庫中的數據擴大整數倍,全部轉換為整數,將所述整數作為電影評級,然后用電影ID、電影名稱以及對應的電影評級構建電影評級數據庫R;
步驟5.2:統計電影內容數據庫中電影類型的所有取值,電影類型的所有取值的數量用符號k表示;然后建立一個K行(k+1)列的電影屬性矩陣,用符號V表示;K表示電影內容數據庫中數據的數量;電影屬性矩陣V的第一列對應電影ID,其它每一列對應一個電影類型取值;電影屬性矩陣V中的任一元素,用符號vrt表示,0≤r≤K-1,0≤t≤k;當t=0時,vrt的值為電影ID;否則,vrt∈{0,1},0表示電影內容數據庫中的第r條數據中的電影,不屬于第t個電影類型;1表示電 影內容數據庫中的第r條數據中的電影,屬于第t個電影類型;
所述分類類別包括:
步驟5.3:從電影評級數據庫里抽選出目標用戶u評分過的電影記錄,構建目標用戶評級記錄表;用其余數據構建目標用戶未評級電影記錄表;
步驟5.4:對應目標用戶評級記錄表中的每條記錄,到電影分類屬性數據庫抽出每部電影的屬性矩陣,構成電影評級及分類屬性數據表;
步驟5.5:為了避免分類樹模型過擬合問題,將目標用戶評級記錄表中的數據按照7:3比例分為訓練集和驗證集。;
步驟5.6:設置3個參數的值,分別是:最大深度,用符號maxDepth表示,maxDepth∈[1,50];最大桶數,用符號maxBin表示,maxBin∈[1,200];不純度度量,用符號impurity表示,impurity∈{"gini","entropy"},gini指基尼不純度,entropy是熵不純度;然后將訓練集放入分類樹模型中進行訓練,得到訓練好的決策樹;訓練過程具體為:
步驟5.7.1:設定maxDepth∈{5,10,15},maxBin∈{5,10,20,30,100,200},impurity∈{"gini","entropy"},并將maxDepth、maxBin和impurity的值進行排列組合,得到36組參數組合;
步驟5.7.2:將36組參數組合分別放入分類樹模型中進行訓練,得到36棵決策樹;
步驟5.8:驗證模型;將驗證集中的數據分別放入步驟5.7.2得到的36棵決策樹中進行驗證,得到每棵決策樹模型對應的分類錯誤率;具體操作為:
步驟5.8.1:驗證數據集放入決策樹中進行預測,得到每部電影的預測評級;
步驟5.8.2:將步驟5.8.1得到的每部電影的預測評級與電影評級數據庫R中的相應電影評級進行比較,統計所述預測評級與電影評級數據庫R中的電影評級不一致的電影的數量,用符號t表示;然后通過公式(4)得到分類錯誤率,用符號px表示;
其中,nc表示驗證集中的電影總量;
步驟5.9:從步驟5.8中得到的36棵決策樹對應的分類錯誤率px中找出最小值,記為pmin,將pmin對應的決策樹模型為最佳決策樹模型;
步驟六、對于目標用戶u,使用最佳決策樹模型產生第二電影推薦集;具體為:
步驟6.1:將目標用戶未評級電影記錄表中的數據作為輸入,放入最佳決策樹中,得到目標用戶未評分過的電影及其預測評級,構建一個nw行2列的預測評級矩陣,用符號記為W表示;其中,W的第1列為電影ID,第2列為預測評級;nw為目標用戶未評級電影記錄表中電影的數量;
步驟6.2:將預測評級矩陣W按預測評級降序排序,篩選出前N個記錄,作為第二推薦電影集,用符號C2表示;
步驟七、將第一推薦電影集C1和第二推薦電影集C2進行融合,得到最終電影推薦集;具體為:
步驟7.1:從電影評分數據庫中抽出目標用戶u的所有評分記錄,并計算用戶u的平均評分,用符號表示,選出評分高于平均評分的電影ID,組成用戶u電影集,用符號I′u表示;
步驟7.2:計算用戶的協同自相似度;具體為:
步驟7.2.1:從電影評分數據庫中抽出用戶u電影集I′u中所有電影的評分記錄,組成用戶u喜歡的電影的評分矩陣,用符號D表示;
步驟7.2.2:通過公式如式(5)計算用戶u電影集I′u中某一部電影x與其他電影的協同相似度,用符號sim(x)表示;
其中,為用戶u電影集I′u中電影的數量;y為用戶u電影集I′u中除x以外的一部電影;u′∈Eu;Eu為評分矩陣D中的用戶的集合;ru′,x為用戶u′對電影x的評分;ru′,y為用戶u′對電影y的評分;
步驟7.2.3:通過公式如式(6)計算用戶u的協同自相似度,用符號sim(u)'表示;
其中,表示用戶u電影集I′u中電影的數量;
步驟7.2.4:通過公式(7)調整用戶u的協同自相似度;為電影評分數據庫中的每一位用戶計算協同自相似度,使用所有用戶的協同自相似度的平均值來減小計算偏差;
其中,sim(u)′1為調整后的用戶u的協同自相似度;為電影評分數據庫中所有用戶的協同自相似度的平均值;
步驟7.3:計算用戶u的內容自相似度;
步驟7.3.1:從步驟5.2中得到的電影屬性矩陣V中抽取用戶u電影集I′u中的電影的屬性矩陣,用符號E表示;
步驟7.3.2:通過公式(8)計算用戶u電影集I′u中每部電影x的內容自相似度,用符號sim(x)′表示;
其中,|N(x)∩N(y)|指電影x的屬性集與電影y的屬性集的交集中屬性的數量;|N(x)|表示電影x的屬性數量;|N(y)|表示電影y的屬性數量;
步驟7.3.3:通過公式(9)計算用戶u的內容自相似度,用符號sim(u)″表示;
步驟7.3.4:通過公式(10)調整用戶u的內容自相似度;為電影評分數據庫中的每一位用戶計算內容自相似度,使用所有用戶的內容自相似度的平均值來減小計算偏差;
其中,sim(u)″1為調整后的用戶u的內容自相似度;為電影評分數據庫中所有用戶的內容自相似度的平均值;
步驟7.4:通過公式(11)計算目標用戶u喜歡的電影的自相似度,用符號pu;
步驟7.5:對步驟四得到的第一電影推薦集C1和步驟六得到的第二電影推薦 集C2進行處理,得到最終的推薦電影集;具體操作為:
步驟7.5.1:分別將第一電影推薦集C1和第二電影推薦集C2中的電影倒序編號;
步驟7.5.2:通過公式(12)計算第一電影推薦集C1中每部電影的分值,用符號score1表示;
score1=(1-pu)×nb(12)其中,nb表示第一電影推薦集C1中第b部電影的編號,b∈[1,N];
步驟7.5.3:通過公式(13)計算第二電影推薦集C2中每部電影的分值,用符號score2表示;
score2=(1-pu)×n′b(13)
其中,n′b表示第二電影推薦集C2中第b部電影的編號;
步驟7.5.4:生成最終電影推薦集;將第一電影推薦集C1和第二電影推薦集C2合并,對得到的全部score1和score2值降序排序,取前N部電影,作為最終電影推薦集推薦給用戶u。
2.如權利要求1所述的一種基于用戶自相似度的多模型相結合的電影推薦方法,其特征在于:其步驟二中所述交替最小二乘法模型選用Spark分布式計算框架中的機器學習庫Mllib的ALS模型。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京理工大學,未經北京理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710493196.6/1.html,轉載請聲明來源鉆瓜專利網。





