一种基于分解多目标进化算法的协同滤波推荐方法与流程

文档序号:11775661阅读:341来源:国知局
一种基于分解多目标进化算法的协同滤波推荐方法与流程

技术领域
】本发明属于推荐系统领域,涉及一种基于分解多目标进化算法的协同滤波推荐方法,具体是一种基于多目标进化算法的协同滤波推荐算法,可用于多样化的推荐系统中。
背景技术
:推荐系统在海量信息的社会中是一种很重要的信息获取工具。面对现代的大数据时代,人们获取信息的方式将会从传统的搜索引擎向推荐系统转化。对于传统的搜索引擎,每一个用户使用相同的关键词将得到同样的结果,而服务器端根据一定的排序将得到的结果呈现出来。而未来,或者说现在正在发展的趋势将是根据每一个用户各自的情况推荐给用户信息,而这些信息将是用户所感兴趣的。自20世纪90年代中期开始出现了推荐系统的概念到现在,推荐系统得到了飞速的发展。现阶段随着电子商务的发展,社会新媒体,自媒体的产生,甚至于共享经济的推行,人们在在线购物,新闻获取,二手交易交换中所需要的处理的信息越来越多。而推荐系统在这些领域的运用会大大加快智能化生活的步伐。推荐系统的目的在于智能化的给每一个用户根据其感兴趣的方向以及之前的信息推荐最符合他的内容或者物品。这样子的推荐系统能够辅助网站或者公司以达到个性化营销的目的,从而提升用户体验以及产品的销量。对于推荐系统的研究国内外的很多学者进行了相关的研究工作其中推荐系统的研究可以分为以下几个部分:(1)用户信息的获取与建模:早期的推荐系统只使用简单的用户信息进行特征提取,而随着推荐系统的发展推荐系统又会由简单的固有信息转为固有信息加上用户与系统交互信息,这就需要考虑用户兴趣的多样性,也就是推荐结果不能趋同(2)推荐系统的算法:要实现推荐系统,其推荐算法尤为重要,高效且准确的推荐算法是推荐系统的核心。基于内容的推荐算法和协同滤波算法是推荐系统中最主要的两种算法。(3)推荐系统的评价指标:一个推荐系统的评价指标对于推荐的结果影响很大。如果只是用推荐的准确率来作为评价指标,那么推荐结果在其他方面的结果可能就会差强人意。而一般来说推荐系统的精准度和多样性都是非常重要的指标。推荐系统同样面临着很多挑战,其中最大的挑战就是数据稀疏性。比如一个在线购物网站,在这上面由数千万的用户以及数以亿计的商品。而每一个用户购买过的商品相较于整个商品的总数来说是一个很小的数目。更多的一部分商品与用户之间的关联很少,而在对该用户推荐的时候能用的信息就会很少。而另外一个具有挑战的问题就是冷启动问题。所谓的冷启动指的是,当一个用户是新用户的时候,推荐系统并没有该用户的任何信息可以使用来进行推荐。传统的推荐系统就是优化推荐精准度rmse的过程。但是研究表明过分的强调推荐精准度,那么推荐结果就是非常相似,并且流行商品被推荐的概率就会更大。那么这种情况又回到了搜索引擎的信息获取模式。因此除了精准度之外,差异化和新奇性也被作为评价指标引入推荐系统。多目标优化算法特别适合这种具有多个评价指标的问题。多目标优化算法目标在于获得一个帕累托前沿面。在这个前沿面上的解都是互相非支配的。也就是在各个指标之间做一个权衡,每一个解都不会比其他的差。近些年研究学者们提出了大量的多目标优化算法,如moead,nsga-ii,nnia等。技术实现要素:本发明的目的在于克服上述现有技术的缺点,提供一种基于分解多目标进化算法的协同滤波推荐方法,该推方法将会在指定的商品集中给用户推荐用户最感兴趣的k个商品。为达到上述目的,本发明采用以下技术方案予以实现:一种基于分解多目标进化算法的协同滤波推荐方法,包括以下步骤:步骤1)输入已有的用户对物品的评价信息数据得到一个评分矩阵mu×i;其中u代表了用户的个数,i代表了物品的个数;评分矩阵的每一个元素代表了用户对物品的评价值;步骤2)初始化,补全输入的稀疏评分矩阵;步骤3)构建基于推荐准确率和多样性的目标函数;步骤4)对目标函数进行优化,通过以下的切比雪夫数学分解公式将步骤3)中的两个评价指标目标函数分解成n个单目标子函数:其中x为函数的解而fi(x)则是x对应的第i个目标函数的值,其中t为转置,是fi(x)的最大值,λi为第i个目标函数对应的权值;步骤5)采用随机初始化的方式初始化种群,用实数编码方式生成基因;步骤6)选择父代个体:从当前子种群中选择一个个体从当前子种群的邻域子种群中选择一个父代个体;步骤7)交叉操作,对选择的两个父代个体进行点交叉操作;步骤8)变异操作,随机选择染色体中的某一位p,然后在其他不在染色体中的物品id中随机选择一个替代p位置值;通过交叉变异得到新的个体作为子代;步骤9)更新第i个单目标子函数对应的子种群:根据各单目标子函数中权值参数之间欧式距离最小原则,给第i个单目标子函数解个体构造一个个体数目为m的子种群,利用新子代更新第i个子函数解个体对应的子种群;步骤10)重复步骤6)-步骤9),直到n个子函数都被执行完毕,得到解种群{x1,...xk};步骤11)判断是否终止:如果种群进化终止迭代代数满足预先设定的代数gen,设置范围为200-300,则执行步骤12),否则,重复步骤6)-步骤10);步骤12)断分别为每一个用户重复执行步骤5)到步骤11),得到每一个用户的推荐列表集{xu,1,...xu,k}。本发明进一步的改进在于:步骤2)中,补全输入的稀疏评分矩阵的具体方法如下:2-a)根据基于最小k近邻的协同滤波算法求得物品之间的相似度;在这里使用皮尔逊相关度取得物品i与物品j的相似度:其中u所有对物品i与物品j都评分过的用户所构成的集合;ru,i和ru,j是用户u对物品i和物品j的评价;和表示所有物品i和物品j收到的评价的平均值;此时得到了任意两个物品之间的相似度sim(i,j)以供后续使用;2-b)根据皮尔逊相关度求解得到用户物品之间的相关度sim(i,j),然后用于补全评分矩阵;预测评分将是相似商品被用户u评价得到评分的一个加权累计:其中bu,i=μ+bu+bi作为基准预测值;μ表示所有评分的均值,bu表示用户u进行投票的均值,bi作为物品i被评分的均值;2-c)为每一个用户取得评分最高的k个之前没有真实评分过的商品列表。步骤2-c)的具体方法如下:2-c-1)对每一个用户,将根据协同滤波算法得到的对物品的评分进行排序;2-c-2)去除当前用户已经进行过投票的物品;2-c-3)从每个已经排序的列表中取得评分最高的k个物品。步骤3)构建基于推荐准确率和多样性的目标函数的具体方法如下:3-a)构建推荐系统的准确率评价指标:其中u为目标用户,i∈i属于推荐给用户u的推荐列表,k为推荐列表的长度,为有协同滤波算法得到的用户u对物品i的预测评分;acc为推荐系统给用户推荐列表中预测用户可能对这些物品感兴趣程度的累计,当acc值越大,则说明推荐的列表越受用户喜欢;3-b)构建推荐系统的多样性评价指标:其中μi为物品i被评分的均值而σi为方差。步骤5)采用实数编码方式生成基因的具体方法如下:5-1)基因中的每一位对应着一个可能被推荐给用户的商品id,且基因中不允许出现重复的商品id;5-2)为种群随机生成多个基因。步骤7)对选择的两个父代个体进行点交叉操作的具体方法如下:7-1)根据基因长度,随机选择一个基因位p;7-2)把两个父代个体位于基因位p之后的基因位进行交换;7-3)当交换之后得到的子代个体基因中出现重复的物品id时,则进入(7a4)进行去重,否则进行步骤8;7-4)当基因中出现重复的时候,随机从未在该基因中出现的物品id中选择一个id替换重复的物品id。与现有技术相比,本发明具有以下有益效果:本发明将推荐系统中的评价指标:精准度和多样性作为目标函数,之后就将给用户推荐最感兴趣的k个物品的问题转化成了一个两目标优化问题,然后利用基于分解的多目标进化算法优化这两个目标函数,从而使得一个好的推荐结果;本发明将推荐系统构造成一个多目标优化问题,利用基于分解的多目标进化算法同时优化精准度和多样性使得推荐算法更加人性化;在初始化过程中采用基于协同滤波算法的评分预测,保证了推荐算法的准确率;由于本发明采用了多目标优化算法,最后得到的结果将会是多个推荐集合,可以由使用者根据需要的准确率和多样性自行选择推荐列表,在一次运行以后为每个用户推荐多个列表。【附图说明】图1为本发明的实现流程图;图2为本发明在movielens中对第10个用户推荐列表的帕累托平面;图3为本发明在jester中对第10个用户推荐列表的帕累托平面。【具体实施方式】下面结合附图对本发明做进一步详细描述:参见图1-3,本发明基于分解多目标进化算法的协同滤波推荐方法,包括以下步骤:步骤1:输入已有的用户对物品的评价信息数据得到一个评分矩阵mu×i;其中u代表了用户的个数,i代表了物品的个数;评分矩阵的每一个元素代表了用户对物品的评价值;步骤2:初始化:补全输入的稀疏评分矩阵,(2a)根据基于最小k近邻的协同滤波算法求得物品之间的相似度;在这里使用皮尔逊相关度取得物品i与物品j的相似度:其中u所有对物品i与物品j都评分过的用户所构成的集合;ru,i和ru,j是用户u对物品i和物品j的评价;和表示所有物品i和物品j收到的评价的平均值;此时得到了任意两个物品之间的相似度sim(i,j)以供后续使用;(2b)根据皮尔逊相关度求解得到用户物品之间的相关度sim(i,j),然后用于补全评分矩阵;预测评分将是相似商品被用户u评价得到评分的一个加权累计:其中bu,i=μ+bu+bi作为基准预测值;μ表示所有评分的均值,bu表示用户u进行投票的均值,bi作为物品i被评分的均值;(2c)为每一个用户取得评分最高的k个之前没有真实评分过的商品列表:(2c1)对每一个用户,将根据协同滤波算法得到的对物品的评分进行排序;(2c2)去除当前用户已经进行过投票的物品;(2c3)从每个已经排序的列表中取得评分最高的k个物品;步骤3:构建基于推荐准确率和多样性的目标函数:(3a)构建推荐系统的准确率评价指标:其中u为目标用户,i∈i属于推荐给用户u的推荐列表,k为推荐列表的长度,为有协同滤波算法得到的用户u对物品i的预测评分;acc为推荐系统给用户推荐列表中预测用户可能对这些物品感兴趣程度的累计,当acc值越大,则说明推荐的列表越受用户喜欢;(3b)构建推荐系统的多样性评价指标:其中μi为物品i被评分的均值而σi为方差;这是由t.jambor和j.wang在“optimizingmultipleobjectivesincollaborativefiltering,”inproceedingsofthefourthacmconferenceonrecommendersystems.acm,2010,pp.55–62中提出的一种衡量推荐列表是否流行的指标;步骤4:对目标函数进行优化,通过以下的切比雪夫数学分解公式将步骤3中的两个评价指标目标函数分解成n个单目标子函数:其中x为函数的解而fi(x)则是x对应的第i个目标函数的值,其中t为转置,是fi(x)的最大值,λi为第i个目标函数对应的权值;步骤5:采用随机初始化的方式初始化种群;(5a)采用实数编码方式生成基因:(5a1)基因中的每一位对应着一个可能被推荐给用户的商品id,且基因中不允许出现重复的商品id;(5a2)为种群随机生成多个基因;步骤6:选择父代个体:从当前子种群中选择一个个体从当前子种群的邻域子种群中选择一个父代个体;步骤7:交叉操作:(7a)对选择的两个父代个体进行点交叉操作:(7a1)根据基因长度,随机选择一个基因位p;(7a2)把两个父代个体位于基因位p之后的基因位进行交换;(7a3)当交换之后得到的子代个体基因中出现重复的物品id时,则进入(7a4)进行去重,否则进行步骤8;(7a4)当基因中出现重复的时候,随机从未在该基因中出现的物品id中选择一个id替换重复的物品id;步骤8:变异操作:随机选择染色体中的某一位p,然后在其他不在染色体中的物品id中随机选择一个替代p位置值;通过交叉变异得到新的个体作为子代;步骤9:更新第i个单目标子函数对应的子种群:根据各单目标子函数中权值参数之间欧式距离最小原则,给第i个单目标子函数解个体构造一个个体数目为m的子种群,利用新子代更新第i个子函数解个体对应的子种群;步骤10:重复步骤6-步骤9,直到n个子函数都被执行完毕,得到解种群{x1,...xk};步骤11:判断是否终止:如果种群进化终止迭代代数满足预先设定的代数gen,设置范围为200-300,则执行步骤12,否则,重复步骤6-步骤10;步骤12:断分别为每一个用户重复执行步骤5到步骤11,得到每一个用户的推荐列表集{xu,1,...xu,k}。本发明的效果可以通过以下仿真进一步说明:1.仿真条件本实例在intel(r)core(tm)i53.20ghzcpuwindows7系统下,matlab2008a平台上运行,完成本发明的仿真实验。2.仿真实验内容在试验中选取两个benchmark数据集对本发明进行测试,分别是movielens和jester。其中movielens100k数据由来自943个用户对1682部电影的100000个评分组成,这些评分为1到5的打分。jester3数据则是包括24938个用户每个人对100个笑话中的15到35个笑话打分,分数范围在-10.0到10.0之间。算法参数设置如下:种群大小为100,种群挈带次数为200,交叉概率为0.8,变异概率为0.2,子种群大小设置为10。表1展示了在movielens和jester两个数据集中前10个用户的帕累托非支配解集中元素的个数。我们可以看到多目标进化算法将会给每一个用户推荐很多列表。表1在movielens和jester两个数据集中前10个用户的帕累托非支配解集中元素的个数id12345678910movielens6243331443734625533jester31371926473824291838图2和图3分别展示了第10个用户在两个数据集中的得到的帕累托前沿面,本发明在movielens数据集上给出了33个不同的推荐列表,而在jester中给出了38个不同的推荐列表。表2给出了本发明的结果与单纯使用协同滤波算法给出的结果在推荐准确率上的比较,其中mean值是为每一个用户推荐的所有列表的平均准确率,max值以及min值为多个列表中最大和最小的准确率。可以看出本发明在大多数情况下得到的准确率可以与协同滤波算法相差不大。这是由于准确率只是其中一个方面,而我们需要兼顾准确率与多样性。表2与协同滤波算法在movielens与jester数据集上前十个用户在推荐准确率上的对比表3给出了本发明的结果与单纯使用协同滤波算法给出的结果在推荐多样性上的比较,其中mean值,max值以及min值的含义和上述一致。可以看出我们的推荐算法在平均情况下能够得到较好的多样性。表3与协同滤波算法在movielens与jester数据集上前十个用户在推荐多样性上的对比通过以上比较可以看出,我们的的算法可以在不失准确率的情况下给用户推荐尽可能差异化的列表,而且运行本发明之后会为每一个用户推荐不止一个列表。可以让使用者可以自由选择列表,且这些列表都是在准确度与多样性之间的一种权衡。总之,本发明将推荐的准确率和推荐列表的多样性作为目标函数,采用基于分解的多目标进化算法进行优化这两个目标,能够使得最后得到的推荐列表在准确率和多样性之间做一个权衡,又由于在初始化的时候使用协同滤波算法进行评分估算,保证了推荐结果的可靠性,从而得到一个既能保证推荐准确率又不会趋同的推荐结果,并能够在一个运行之后为用户提供多个可选列表。以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1