[发明专利]基于用户自相似度的多模型相结合的电影推荐方法在审
申请号: | 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.vipzhuanli.com/pat/books/201710493196.6/1.html,转载请声明来源钻瓜专利网。