1. 研究目的与意义、国内外研究现状(文献综述)
1.1意义
随着互联网的发展和移动终端的迅速普及,人们的生活质量得到了极大的高,网络上供用户观看的电影数量庞大、类型多样,但是用户需要花费大量时间寻找感兴趣的电影,导致电影资源的利用率过低[1]。个性化推荐技术可以从海量信息中挖掘出有价值信息,并向用户提供个性化服务,可以很好的解决电影资源利用率低的问题。
协同过滤算法是个性化推荐中的重要算法,主要可以分为基于记忆的方法和基于模型的方法[2]。svd模型算法是基于模型方法的一种,它的推荐效果显著高于基于记忆的方法 。
2. 研究的基本内容和问题
2.1研究目标
本次研究将采用GroupLens提供的MovieLens数据集,介绍和测评基于SVD的协同过滤推荐算法,通过预测用户对未评分电影的评分,从中选择N部电影对用户进行推荐,将推荐结果展现在电影推荐系统中。该电影推荐系统包括用户信息管理、电影信息管理和电影推荐三个模块,实现从用户登录到找到心仪的电影再到评价的全过程。
目前官方的MovieLens数据集有两个版本,我们选用其中大小为1M的数据集。该数据集包含700名用户对有1300个标签的9000部电影进行的100000条评价记录。
2.2研究内容
(一)推荐系统的分类及架构
(1)推荐系统分类
推荐系统是一套完善的推荐机制,包括前期数据的准备、具体推荐的过程、后期数据的预测、AB测试效果评估等。
推荐系统在算法模型上大体可以分基于内容的推荐、基于协同过滤的推荐和混合推荐。
基于内容推荐,即通过内容本身的属性,计算内容的相似性,找到与某物品属性相似的物品。基于协同过滤的推荐,即不依赖于物品本身的物品属性,而是通过其他相关特征,例如人参与的行为数据,来达到推荐物品的目的。混合推荐是根据实际情况选择合适的组合方式,使得组合后的推荐方法能够扬长避短,避免或者弥补各自的缺点。
协同过滤也称为社会过滤,是当前使用最广泛的个性化推荐技术。协同过滤又分为以下几个类别:基于物品的协同(ItemCF)、基于用户的协同(UserCF)和基于模型的协同(ModelCF)。其中,基于模型的协同又可以分为以下几种类型:基于距离的协同;基于矩阵分解的协同(SVD);基于图模型协同(Graph)。
本论文主要是对基于矩阵分解(SVD)的协同过滤推荐算法进行研究,并应用到电影推荐系统中。
(2)
如图1所示,推荐系统架构包括离线和在线两部分:
离线部分,基于用户特征和应用库,利用机器学习、文本挖掘、统计以及相关的推荐算法进行离线模型计算,比如利用LDA进行应用的内容主题抽取以做主题相似度的比较;基于Item的协同过滤,需要根据用户的行为,计算物品之间的相似度;以及针对各种算法的融合模型的训练等等。
在线数据处理部分,是给予用户静态和实时行为特征进行相关物品检索,以及物品排序的过程。主要由场景意图、规则设定、算法融合组成。
效果评测部分,可以采用在线A/BTesting方式,引用部分流量,在进行算法调整时对比调整前后的转化率情况;也可以离线的基于一些评价标准,F1、多样性、新颖度、RMSE、AUC等进行评测。
(二)SVD实现原理及步骤
(1)SVD的基本思想
假设是一个阶矩阵,其中的元素全部属于域 ,也就是实数域或复数域。如此则存在一个分解使得,其中是阶酉矩阵;是半正定阶对角矩阵;是的共轭转置,是阶酉矩阵。这样的分解就称作的奇异值分解。对角线上的元素即为的奇异值。
(2)SVD的实现原理
SVD模型是一个最优化控制模型,它把矩阵分解模型(matrix factorization model)和基准预测模型(baseline predictor)融合到了一起。
矩阵分解模型的原理是:假设用户评分表中的每一行代表一个用户,每一列代表一个物品,这可以看成是一个矩阵,只是这个矩阵可能是非常稀疏的,也就是评分数据不完整。这个矩阵可以表示为另两个矩阵的乘积:
=
我们要通过已有数据来学习右边的两个矩阵,可以把总的矩阵里的每个评分看成是该用户的特征向量与物品特征向量的内积:
(公式1)
基准预测模型的原理是:设μ是平均值,分别用bi和bu来代表具体用户和物品的偏好,也就是
(公式2)
SVD算法其实就是上面介绍的matrix factorization model的一种,加上baseline predictor算是一种优化。
(3)SVD用于协同过滤推荐过程
利用SVD技术进行降维的协同过滤推荐算法主要有三个步骤:
1)在估计评分的过程中使用SVD降维,保留90%的能量值。
2)计算出相似度和预测评分,最后相似度评分进行归一化控制结果在统一范围内。
3)对给定的用户推荐给他N个产品。这个过程首先找出那些他没有评分的产品,调用函数进行评分预测选择评分最高的前N个产品推荐给用户。
(三)SVD在电影推荐系统中的应用
SVD应用到推荐系统中的基本思想是:每一个用户和每一个物品都会有自己的一些特性,用矩阵分解的方法可以从评分矩阵中分解出用户特性矩阵,特性物品矩阵,这样做的好处一是得到了用户的偏好和每件物品的特性,二是降低了矩阵的维度。如公式3所示,表示用户对物品的评分,表示用户对因子的喜欢程度,表示物品对于因子的偏移程度,表示用户对物品的评分。
(公式3)
图 2SVD评分矩阵示意图
SVD应用到电影推荐系统中的例子可以解释为:每个用户看电影的时候都有偏好,这些偏好可以直观理解成:恐怖,喜剧,动作,爱情等。将公式映射到电影推荐中后如图2所示用户特性矩阵,表示的就是用户对这些因素的喜欢程度。同样,每一部电影也可以用这些因素描述,因此特性物品矩阵表示的就是每一部电影这些因素的含量,也就是电影的类型。这样子两个矩阵相乘就会得到用户对这个电影的喜欢程度,如图2评分矩阵。
(四)电影评分预测的度量指标
评分预测的预测准确度一般通过最小均方根误差()和平均绝对误差()计算。对于测试集中的一个用户和物品,令是用户对物品的实际评分,而是推荐算法给出的预测评分,那么的定义为:
(公式4)
采用绝对值计算预测误差,它的定义为:
(公式5)
关于和这两个指标的优缺点, Netflix认为加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。研究表明,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低的误差。
(五)功能模块设计
本系统主要由:用户信息管理、电影信息管理、电影推荐这三个模块组成。对于各个模块的具体功能描述如下:
(1)用户信息管理模块
用户通过浏览器填写注册信息提交给服务器,服务器将用户的注册信息存储到数据库。然后用户便可以登录系统,用户首次登录系统,服务器会根据用户注册时填写的信息,分析用户的兴趣,给用户推荐电影。用户登陆系统观看电影后可以对观看过电影进行评分,随着用户评价电影数量的增加,用户的兴趣爱好逐渐被系统慢慢的了解,用户便可以更准确的为用户推荐电影。用户的一系列操作,都会被系统所记住,并将这些操作存入到日志文件,以便数据分析引擎分析这些日志文件,查看用户的兴趣改变情况。
(2)电影信息管理模块
在基于 B/S 架构的 WEB 应用中,都有一个管理员。管理员是系统的管理者,拥有较高的权限,管理员可以对电影进行增、删、改等一系列操作。对于新的电影加入到推荐系统中,管理员需要填写一些电影的相关信息,一方面便于对电影的管理,另一方面解决推荐系统的冷启动问题,使这些新上映的电影可以推荐给用户。
(3)电影推荐模块
本次基于SVD的电影推荐系统通过用户对电影的评分情况计算用户之间的相似度,找到与当前用户相似度较高的邻居,然后把邻居评分较高的电影推荐给当前用户。对于新注册的用户,为了优化推荐系统的冷启动问题,推荐系统会强制给用户推荐一些类别的电影,随着用户对自己标签信息的更新,推荐系统便给用户推荐他们喜爱的电影。
2.3拟解决的关键问题
1)推荐系统架构的设计。
2)用户相似度的计算和对比分析。
3)估计评分过程中使用SVD降维。
4)评分预测的预测准确度分析。
5)把基于SVD的协同过滤电影推荐模型移植到B/S架构系统上。
3. 研究的方法与方案
3.1研究方法
1)通过查阅书籍资料以及网上搜寻相关资料做好前期准备,加深对svd推荐算法的理解。
2)结合已有数据进行需求分析,输出需求分析报告
4. 研究创新点
1)利用svd在数学角度上能够降低矩阵维度的优势,简化数据。
2)将svd应用到协同过滤推荐过程中,促进推荐算法的改进和优化。
3)svd在电影推荐系统中应用越来越多,得到很多研究人员和技术人员的青睐。
5. 研究计划与进展
2016年11月15日-12月31日:确定论文题目,选择合适的数据集,搜集svd推荐算法相关资料;
2017年01月01日-01月31日:搭建开发环境,进行概要设计;
2017年02月01日-02月28日:详细设计,包括数据结构、核心算法、接口等;
