一种基于用户和项目混合的协同过滤算法

文档序号:10613539阅读:268来源:国知局
一种基于用户和项目混合的协同过滤算法
【专利摘要】本发明公开了一种基于用户和项目混合的协同过滤算法,包括以下步骤:步骤1:对用户?项目评分数据集进行整理,建立用户?项目评分矩阵U;步骤2:计算物品之间的相似度,并将相似度按照从大到小进行排序;步骤3:根据物品之间的相似度排序,产生物品的“最近邻居N”;步骤4:计算目标用户T与其他用户之间的相似度,并将相似度按照从大到小的顺序进行排序;步骤5:根据用户之间的相似度排序,产生用户的“最近邻居K”。本发明同时考虑用户相似度和项目相似度两个方面,利用加权的方法得到同时考虑用户相似度和项目相似度的项目预测评分,并根据评分的排序进行推荐,该算法能够降低平均误差MAE的值,提高推荐算法的准确率。
【专利说明】
一种基于用户和项目混合的协同过滤算法
技术领域
[0001] 本发明涉及个性化推荐技术领域,尤其涉及一种基于用户和项目混合的协同过滤 算法。
【背景技术】
[0002] 随着网络技术的快速发展,人们开始越来越依赖于互联网,通过网络人们可以查 询到大量的信息,然而这也意味着,人们已经开始进入了信息过载的时代。
[0003] 通过网络查询到的信息并不一定是你真正想要搜索的内容,因此在面对大量的数 据信息时,如何从中选取到自己真正感兴趣的并且对自己有用的信息成为了一件非常困难 的事情。同时对于信息的生产者而言,如何能够让自己的产品从大量的产品库中脱颖而出, 找到真正对他们感兴趣的并且愿意关注他们的用户也成为了一件非常困难的事情。在这个 时候推荐系统的存在显得尤为有用。它可以通过一定的运算将用户和项目之间联系起来, 既能够使得用户发现对他们有用的物品,也能够使物品将它的信息展现在真正喜欢它们的 用户面前。
[0004] 个性化推荐系统在电子商务网站上得到了广泛的应用,如今像亚马逊、当当网等 电子商务网站依靠推荐系统为自己的获得了大量的销售额和客户。亚马逊的前科学家Greg Linden曾经表示,Amazon的销售中,至少有35 %来自于推荐算法,此外,亚马逊的前首席科 学家Andreas Weigend也曾经透露过,推荐系统至少为Amazon带来了20%~30%的销售来。 在电影和视频网站也可以使用到推荐算法,在该领域中,推荐算法应用最广的是Netflix。 Netflix在宣传资料中曾经提到过,有60%的用户是选择查找自己感兴趣的电影和视频的 方式是通过其推荐系统。现在的推荐系统已经推及到包括音乐、书籍、广告、邮件、社交网络 在内的各个领域。推荐算法的好坏也决定着推荐系统的准确率和可靠性。
[0005] 常用的推荐算法包括有基于规则的推荐算法,基于内容的推荐算法,协同过滤推 荐算法等,其中协同过滤算法是个性化推荐系统中最常用的算法之一。协同过滤算法的思 想是通过分析用户曾经收藏或者浏览过的物品记录,利用相似度寻找与该用户兴趣相似的 用户或者可能会该兴趣的物品,并推荐给该用户。通过协同过滤推荐的物品要比基于内容 的推荐系统所推荐的物品更具有新颖性,而且能够对于过滤机器难以自动分析内容的物 品,比如说艺术品,音乐等进行过滤,通过共用他人的经验,避免了因为内容分析不准确导 致的推荐结果不准确。协同过滤算法在推荐系统中得到了广泛的应用,但是算法本身存在 着一定的缺点和不足,限制着该算法在系统中的应用。因此如何优化算法成为很多学者研 究的重点。
[0006] 虽然协同过滤技术在很多电子商务网站上都得到了很好的运用,但是随着电子商 务规模的不断扩大,商品数量和用户数量不断增加,传统的协同过滤的技术开始出现了一 系列的问题:
[0007] 1.稀疏性。根据协同技术的理论思想可以得知,协同过滤技术的实现首先需要建 立用户-项目评分矩阵,然而在实际情况的应用中,用户和商品都拥有较大的数量,并不是 所有的商品都能够得到处理,在这些系统中,一般用户购买到的商品的总量只占到网站中 商品总量的1%~2%,这就导致了用户-项目评分矩阵非常稀疏。在这样数据量极大而评分 矩阵又十分稀疏的情况下,用户或者项目相似度的计算需要耗费大量的资源,并且在查找 最近邻居集合的时候也会造成数据信息的丢失,大大降低了推荐算法的准确率。
[0008] 2.冷启动。传统的协同过滤算法是基于用户的行为来进行分析的,所以当出现一 个新的用户时,由于他没有历史行为记录,系统并不知道他的喜好兴趣,因此并没有办法通 过单纯的协同过滤推荐为其推荐合适的项目。同样,当网站中加入了新的项目,因为没有用 户评价它,系统也就无法对它进行预测评分,更无法对它进行推测。
[0009] 3.可扩展性。随着项目和用户的不断增加,传统的算法会遇到严重的扩展性瓶颈 问题,这会影响到协同过滤算法的准确率。虽然基于模型的算法能够解决一定的问题,但是 基于模型的算法的前提条件是用户的兴趣爱好基本保持不变,这个前提也会在很大程度上 限制算法的使用。
[0010] 专利号201010613809.3的专利在一定程度上解决了以上稀疏性问题,但其通过矩 阵空白评分和填充用户项目矩阵的方法来解决预测准确性问题,程序比较复杂,操作工作 量大,尤其是在数据稀疏并且数据量巨大的情况下,可操作性差。另外,且此方法填充用户 项目矩阵过程中就难免存在一定误差,推荐算法的准确率无法保证。且其在解决现有技术 的冷启动、可扩展性问题上显得不足。

【发明内容】

[0011] 有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于用户和 项目混合的协同过滤算法,同时考虑用户相似度和项目相似度两个方面,引入控制因子α和 β,利用加权的方法,对基于用户相似度得到的项目预测评分和基于项目相似度得到的项目 预测评分进行组合,得到同时考虑用户相似度和项目相似度的项目预测评分,并根据评分 的排序进行推荐。验证实验采用的数据集是MovieLens。实验结果表明,该算法能够降低平 均误差MAE的值,提高推荐算法的准确率。
[0012] 为实现上述目的,本发明提供了一种基于用户和项目混合的协同过滤算法,其特 征在于,包括以下步骤:
[0013]步骤1:对用户-项目评分数据集进行整理,建立用户-项目评分矩阵U;
[0014] 步骤2:计算皮尔逊系数,计算物品之间的相似度,并将相似度按照从大到小进行 排序,皮尔逊系数计算公式为:
[0015]
[0016] 其中N表示用户评分的项目,表示用户u对项目i的评分,表示用户u对项目评分的 平均值;
[0017] 步骤3:根据物品之间的相似度排序,产生物品的"最近邻居N",利用最近邻居N预 测用户T对其他物品的评分;
[0018] 步骤4:采用步骤2得出的皮尔逊系数,计算目标用户T与其他用户之间的相似度, 并将相似度按照从大到小的顺序进行排序;
[0019] 步骤5:根据用户之间的相似度排序,产生用户的"最近邻居K",利用最近邻居K预 测用户Τ对其他物品的评分;
[0020] 步骤6:综合利用物品相似度和利用用户相似度得到的评分,如果目标用户对物品 的评分预测既在"最近邻居Ν"中,又在"最近邻居Κ"中,则对预测评分进行加权计算,得到利 用物品相似度和用户相似度组合的"最近邻居X"和预测评分;
[0021] 步骤7:据最近邻居X的排序,按照预测评分从大到小的排序输出top-N推荐项目 集。
[0022] 上述的一种基于用户和项目混合的协同过滤算法,其特征在于,所述步骤6引入参 数α和β,建立字典pred,用来存放最终的最近邻居信息和预测分数,引入参数α和β数值的步 骤为:
[0023]步骤611:选择数据集;
[0024]步骤612:确定最近邻居数目;
[0025] 步骤613:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计 算公式如下:
[0026]
[0027] 其中,N表示评分用户总数目,rul表示算法的预测评分,:^表示用户的实际评分;
[0028] 步骤614:最近邻居数目保持不变,改变α和β的数值,当MAE值最小时,得到需要的 参数α和β的值。
[0029] 上述的一种基于用户和项目混合的协同过滤算法,其特征在于,所述步骤步骤6的 "最近邻居X"计算步骤为:
[0030] 步骤621:选择数据集;
[0031] 步骤622:确定参数α和邱勺值;
[0032] 步骤623:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计 算公式如下:
[0033]
[0034] 其中,N表示评分用户总数目,rul表示算法的预测评分,?,1表示用户的实际评分;
[0035] 步骤624:参数α和β的值保持不变,改变最近邻居的数值,当MAE值最小时,得到需 要的最近邻居数目。
[0036]本发明的有益效果是:
[0037] 本发明同时考虑用户相似度和项目相似度两个方面,引入控制因子α和β,利用加 权的方法,对基于用户相似度得到的项目预测评分和基于项目相似度得到的项目预测评分 进行组合,得到同时考虑用户相似度和项目相似度的项目预测评分,并根据评分的排序进 行推荐。验证实验采用的数据集是MovieLens。实验结果表明,该算法能够降低平均误差MAE 的值,提高推荐算法的准确率。
[0038] 以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以 充分地了解本发明的目的、特征和效果。
【附图说明】
[0039] 图1是本发明的整体工作流程图。
[0040] 图2是本发明确定α和β数值的流程图。
[0041 ]图3是本发明确定最近邻居数目的流程图。
[0042] 图4是本发明最近邻居数目对MAE值影响的坐标图。
【具体实施方式】
[0043] 如图1所示,一种基于用户和项目混合的协同过滤算法,其特征在于,包括以下步 骤:
[0044]步骤1:对用户-项目评分数据集进行整理,建立用户-项目评分矩阵U;
[0045] 步骤2:计算皮尔逊系数,计算物品之间的相似度,并将相似度按照从大到小进行 排序,皮尔逊系数计算公式为:
[0046]
[0047] 共1衣不州广项曰,衣不州广11Λ、」项曰1ΗΜ1ΤΟΓ,衣不州户U对项目评分的 平均值;
[0048] 步骤3:根据物品之间的相似度排序,产生物品的"最近邻居N",利用最近邻居N预 测用户T对其他物品的评分;
[0049] 步骤4:采用步骤2得出的皮尔逊系数,计算目标用户T与其他用户之间的相似度, 并将相似度按照从大到小的顺序进行排序;
[0050] 步骤5:根据用户之间的相似度排序,产生用户的"最近邻居K",利用最近邻居K预 测用户T对其他物品的评分;
[0051] 步骤6:综合利用物品相似度和利用用户相似度得到的评分,如果目标用户对物品 的评分预测既在"最近邻居N"中,又在"最近邻居K"中,则对预测评分进行加权计算,得到利 用物品相似度和用户相似度组合的"最近邻居X"和预测评分;
[0052]步骤7:据最近邻居X的排序,按照预测评分从大到小的排序输出top-N推荐项目 集。
[0053]本发明的具体算法实现如下:
[0054] 1.将数据集中的信息转换为用户-项目评分矩阵。
[0055] Def loadDataO:
[0056] 建立字典trainSet,放入ul .base中的用户id,项目id和评分信息。
[0057] 建立字典testSet,放入ul .test中的用户id,项目id和评分信息。
[0058] 2.计算物品相似度Items im
[0059] Def ItemsimO:
[0060] 建立字典Itemsim,保存计算结果,包括用户id,项目id和预测分数。
[0061] 利用公式1,计算皮尔逊系数。
[0062] 3.产生最近邻居N
[0063] Def itemrecommendations():
[0064] A = sort[]
[0065 ]遍历字典I terns im,按照物品相似度的大小进行排序。
[0066]建立字典predl,保存最近邻居的信息和预测分数。
[0067] 4.计算用户相似度Usersim
[0068] Def Usersim():
[0069] 建立字典Usersim,用来保存计算结果,包括用户id,项目id和预测分数。
[0070] 利用公式1,计算皮尔逊系数。
[0071] 5.产生最近邻居K
[0072] Def userrecommendations():
[0073] A = sort[]
[0074]遍历字典usersim,按照用户相似度的大小进行排序。
[0075]建立字典pred2,保存最近邻居的信息和预测分数。
[0076] 6.计算预测分数
[0077] Def ratings〇:
[0078] 引入参数α和β,建立字典pred,用来存放最终的最近邻居信息和预测分数。
[0079] 遍历字典 predl和 pred2,如果iteml = = item2 并且 useridl = = userid2,那么
[0080] pred[userid][item]=a*predl[useridl][iteml]+P*pred2[userid2][item2]
[0081 ] 7.生成top-N推荐项目集
[0082] Def recommendations():
[0083] 遍历字典pred,按照预测分数大小进行排序。
[0084] 输出top-N推荐集。
[0085] 如图2所示,为确定α和β数值的流程图。本实施例中,所述步骤6引入参数α和β,建 立字典pred,用来存放最终的最近邻居信息和预测分数,引入参数α和β数值的步骤为: [0086]步骤611:选择数据集;
[0087]步骤612:确定最近邻居数目;
[0088] 步骤613:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计 算公式如下:
[0089]
[0090]其中,N表示评分用户总数目,rul表示算法的预测评分,:^表示用户的实际评分;
[0091] 步骤614:最近邻居数目保持不变,改变α和β的数值,当MAE值最小时,得到需要的 参数α和β的值。
[0092] 表1 α和β对MAE的影响
[0093]
[0094] 如表1所示,为α和β对MAE的影响实验统计数据,通过实验结果可以看出,当α和β的 取值均大于〇. 5或者均小于0.5的时候,MAE的值会相对较大,这是因为取值均大于0.5或者 均小于0.5会使得预测评分在1-5分的范围之外,使得误差增大。通过上述表格可以看出,当 α取0.2,β取0.9的时候,可以获得最小的MAE值,也就是说当α = 〇 . 2,β = 0.9时,可以获得最 好的推荐结果。
[0095] 如图3所示,确定最近邻居数目的流程图。本实施例中,所述步骤步骤6的"最近邻 居X"计算步骤为:
[0096]步骤621:选择数据集;
[0097] 步骤622:确定参数α和邱勺值;
[0098] 步骤623:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计 算公式如下:
[0099]
[0100] 其中,N表示评分用户总数目,rul表示算法的预测评分,4:表示用户的实际评分; [0101 ]步骤624:参数α和β的值保持不变,改变最近邻居的数值,当MAE值最小时,得到需 要的最近邻居数目。
[0102] 表2最近邻居数目对MAE值的影响
[0103]

?0?04?~如表2所示,为最近邻居数目对MAE值的影响统计数据,结合图4,可以看出,随着最胃 近邻居数目的增加,MAE的值总体逐渐降低,在最近邻居数目取20的时候,系统的MAE的值趋 于平稳,并且在N=20时MAE值最低,即在此时,推荐结果准确率最高。
[0105] 综上所述,本发明同时考虑用户相似度和项目相似度两个方面,引入控制因子α和 β,利用加权的方法,对基于用户相似度得到的项目预测评分和基于项目相似度得到的项目 预测评分进行组合,得到同时考虑用户相似度和项目相似度的项目预测评分,并根据评分 的排序进行推荐。验证实验采用的数据集是MovieLens。实验结果表明,该算法能够降低平 均误差MAE的值,提高推荐算法的准确率。
[0106] 以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无 需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术 人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的 技术方案,皆应在由权利要求书所确定的保护范围内。
【主权项】
1. 一种基于用户和项目混合的协同过滤算法,其特征在于,包括W下步骤: 步骤1:对用户-项目评分数据集进行整理,建立用户-项目评分矩阵U; 步骤2:计算皮尔逊系数,计算物品之间的相似度,并将相似度按照从大到小进行排序, 皮尔逊系数计算公式为:其中N表示用户评分的项目,表示用户U对项目i的评分,表示用户U对项目评分的平均 值; 步骤3:根据物品之间的相似度排序,产生物品的"最近邻居N",利用最近邻居N预测用 户T对其他物品的评分; 步骤4:采用步骤2得出的皮尔逊系数,计算目标用户T与其他用户之间的相似度,并将 相似度按照从大到小的顺序进行排序; 步骤5:根据用户之间的相似度排序,产生用户的"最近邻居r,利用最近邻居K预测用 户T对其他物品的评分; 步骤6:综合利用物品相似度和利用用户相似度得到的评分,如果目标用户对物品的评 分预测既在"最近邻居N"中,又在"最近邻居r中,则对预测评分进行加权计算,得到利用物 品相似度和用户相似度组合的"最近邻居r和预测评分; 步骤7:据最近邻居X的排序,按照预测评分从大到小的排序输出top-脚I荐项目集。2. 如权利要求1所述的一种基于用户和项目混合的协同过滤算法,其特征在于,所述步 骤6引入参数α和β,建立字典pred,用来存放最终的最近邻居信息和预测分数,引入参数α和 0数值的步骤为: 步骤611:选择数据集; 步骤612:确定最近邻居数目; 步骤613:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计算公 式如下:其中,N表示评分用户总数目,表示算法的预测评分,iu,表示用户的实际评分; 步骤614:最近邻居数目保持不变,改变α和β的数值,当MAE值最小时,得到需要的参数α 和β的值。3. 如权利要求1所述的一种基于用户和项目混合的协同过滤算法,其特征在于,所述步 骤步骤6的"最近邻居r计算步骤为: 步骤621:选择数据集; 步骤622:确定参数α和如勺值; 步骤623:通过基于用户-项目的协同过滤算法计算平均绝对误差MAE值,MAE的计算公 式如下:其中,N表示评分用户总数目,表示算法的预测评分,^表示用户的实际评分; 步骤624:参数α和β的值保持不变,改变最近邻居的数值,当MAE值最小时,得到需要的 最近邻居数目。
【文档编号】G06Q30/06GK105976229SQ201610316790
【公开日】2016年9月28日
【申请日】2016年5月13日
【发明人】李彤, 于倩, 刘琰, 刘金卓, 林英, 郁湧, 王海林
【申请人】云南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1