前言
在当今这个信息过载的时代,传统的推荐算法只考虑了准确性,显然无法满足用户多样的需求。而多目标进化算法,在考虑推荐准确性的同时,也可以平衡多样性和新颖性两个指标,更加符合用户的实际需要。
此篇论文介绍了一种基于多目标进化算法的电影个性化推荐系统MOEA
一、Introduction
通常来讲,传统推荐系统最主要的目的是使准确性最大化。作者列举了几个例子,例如2006年10月份由Netflix发起了一项奖金高达$1,000,000的电影推荐系统大赛,如有人可以打败Netflix公司自己的电影推荐系统“Cinematch”就可以获得这笔奖金,获胜条件是准确度比Cinematch高10%。
然而,判断一个推荐系统好坏的一些其他指标,例如多样性也应该被考虑其中,不应只考虑准确性。但准确性和多样性是两个互相冲突的指标,因为我们在追求一个指标的同时会某种程度地牺牲另一指标。因此,开发出一个能同时达到高准确性和高多样性的推荐系统是极大的挑战,有许多研究人员进行了不同的尝试。
此文的作者们提出了一种多目标推荐模型(multi-objective recommodation model),将个性化推荐建模为一个多目标优化问题。多目标进化算法(NSGAII)被用来平衡多样性和准确性这两个指标。
ProbS被用作评估准确性这一指标的算子。
覆盖率(Coverage)被用作评估多样性这一指标的算子。
论文主要贡献:
- 为了平衡推荐的准确性和多样性,提出了一种通用的多目标推荐模型。
- 与传统的推荐技术不同,该算法可以在一次运行中同时为多个用户提供多个推荐
- 实验结果表明,该算法可以提供一组多样且准确的推荐。推荐的覆盖率大大提高,这对于推荐系统来说是一个很有前景的特性。
- 采用聚类技术提高了计算效率、
二、Background
作者在这一部分总结了研究问题的一些概念和用到的方法,例如“推荐问题的定义”,“多目标优化问题的介绍”,“推荐系统的相关研究”,“ProbS方法”。
此部分属于扫盲,具体内容略
三、基于MOEA的推荐算法
为了平衡推荐系统的多样性指标和准确性指标,作者把推荐问题看做一个MOP(多目标优化问题)。作者采用了NSGAII算法来解决多目标优化问题,因为其具有健壮性和高效性。这一部分详细介绍了提出的算法,包括聚类方法(clustering),两个目标函数,个体的表示方法,以及遗传算子等。
1. User Clustering(用户聚类)
为了降低算法的复杂度,采用了一种聚类方法将所有用户按照他们的习惯和偏好分成了一些不同的clusters(群体),这样就能轻松的将不同的推荐内容推荐给不同的群体。
聚类方法有很多,此篇论文采用了k-means,两个用户的相似度用以下公式来衡量(cosine index)。ri 和 rj 分别是用户i和j给items的评分向量。
2. The Two Objectives
准确性用以下式子来估算。priα是用户i对项目α的预测评分,PR是某一cluster S中所有用户的预测评分。|S|是群体S中的人数,L是推荐列表的长度。
考虑到简单程度,多样性用coverage来估算。公式如下:
Ndif是在同一cluster中在推荐列表中不同的项目数量,N是项目的总数量。(在一定的准确度范围内,覆盖率越高,推荐结果越好)
3. Individual Representation(个体的表示)
推荐给一个用户的所有项目用一个向量来表示,向量中的每一个数都是根据项目序号编码得来。
由于我们的目标是将推荐的结果推荐给同一群体(cluster)的所有用户,最终的个体(染色体)就被表示为一个编码矩阵。例:一个cluster有K个用户,L个项目将被推荐给用户,那么就有K行向量,组成了一个K*L的矩阵,如图(还未编码)
还需要注意的是,在推荐系统中:
- 同一推荐不会出现两次(例如:给USER1的项目有5了,后面不会再出现5)
- 用户评过分的推荐也不会再次出现(解释:给USER1推荐的L个项目都是根据其对看过的电影的评分,用推荐算法得出来的,所以推荐系统没必要再次推荐上述用户已经进行过评分的电影)
以上两条也决定了在遗传操作中的一些限制条件。
4. Genetic Operators
使用均匀交叉(uniform crossover),具体过程如下:
- 首先,父母都有的同样的项目直接遗传给子代。
- 剩余的等位基因(alleles)进行交叉
- 而子代剩余的基因位置,取一个0到1之间的随机小数,如果大于0.5,就取“父亲”的基因给孩子;如果小于0.5,就取“母亲”的基因给孩子。
- 两个父代个体,也就是两个矩阵,行行对应进行上述交叉操作,从而产生子代的一行,直到产生完整的孩子。
而变异操作是应用在某一基因上的。(个人理解的是:)交叉操作后产生新的个体,按某种随机概率来决定新个体上某个基因是否进行变异,若变异则将其编码改为一个没出现过得编码(也就是将推荐的项目换成另外一个不在此向量中的项目)。若不变异不作操作。
实验结果略
结论
此算法可以给用户提供一系列多样、准确的推荐。
clustering方法提高了算法的运行效率。
但推荐结果的准确度还是有待提高。