推荐系统综述提纲.docx
- 文档编号:9936111
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:17
- 大小:72.51KB
推荐系统综述提纲.docx
《推荐系统综述提纲.docx》由会员分享,可在线阅读,更多相关《推荐系统综述提纲.docx(17页珍藏版)》请在冰豆网上搜索。
推荐系统综述提纲
****第一页****
目录
四篇文章
****第二页****
背景为了解决信息过载
解决方法
1.信息分类导航网站
2.搜索引擎
3.推荐系统
不同点就是,推荐系统,用户不知道他想要什么,也没法关键词描述
****历史*****
推荐系统的:
发展历程
亚马逊
NETFLIX
****内容的过滤*****
1.基于内容,是最早出现的推荐系统算法,简要介绍下原理,,优缺点
这里不在详细的介绍,通过这个例子来大体了解下
2.ItemProfiles(movieattributes:
genre(类型)actors(参与的演员)
boxoffice(它的票房的受欢迎程度)-soforth.)
先我们需要对电影的元数据有一个建模(电影的类型,演员,票房);
然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影A和C被认为是相似的电影;
对于用户A,他喜欢看电影A,那么系统就可以给他推荐类似的电影C。
这就实现推荐,
这种基于内容的推荐机制的好处在于它能很好的建模用户的口味,能提供更加精确的推荐。
但它也存在以下几个问题:
1.需要对物品进行分析和建模,推荐的质量依赖于物品模型的完整和全面程度。
在现在的应用中我们可以观察到关键词和标签(Tag)被认为是描述物品元数据的一种简单有效的方法。
2.物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
3.因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题。
虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐,图书的社交站点
***协同过滤*****
协同过滤的解释:
协同过滤是利用集体智慧的一个典型方法。
要理解什么是协同过滤,首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,那我们会怎么做呢?
大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。
这就是协同过滤的核心思想。
协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。
或者你喜欢东西的相似物品。
协同过滤相对于集体智慧而言,它从一定程度上保留了个体的特征,就是你的品位偏好,所以它更多可以作为个性化推荐的算法思想。
******长尾*******
而且也很符合web2.0时代的“长尾理论”
根据维基百科,长尾(TheLongTail)这一概念是由“连线”杂志主编克里斯·安德森(ChrisAnderson)在2004最早提出,用来描述诸如亚马逊和Netflix之类网站的商业和经济模式。
“长尾”实际上是统计学中幂律(PowerLaws)和帕累托分布(Paretodistributions)特征的一个口语化表达。
以往,我都知道二八定律,20%的产品带来80%的利润,80%的产品带来20%的利润
而在网络时代,由于关注的成本大大降低,人们有可能以很低的成本关注“尾部”产品,关注“尾部”产生的总体效益甚至会超过“头部”。
推荐系统就有利于发挥“长尾”效益。
涓涓细流,汇聚成河,可以说,长尾理论终结以往的二八定律
国内最典型的就是,豆瓣网。
(不像传统图书馆那样的标准分类办法,列出“文学”、“少儿”之类的目录,你可以为一本书增加“青春”、“适合雨天阅读”、“他的生日礼物”。
这样的信息过滤机制,不仅可以向用户提供适合自己口味和喜爱的东西,而且还可以帮助用户探索和发现新的兴趣爱好,寻找志同道合者,获得更多价值)。
****基于用户的推荐****
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,
原理也较为简单。
该算法1992年提出并用于邮件过滤系统,
两年后1994年被明尼苏达大学的GroupLens用于新闻过滤。
这个小组是推荐系统领域的最知名,最前沿的团队
那么,一直到2000年,该算法都是推荐系统领域最著名的算法。
下面就基于这篇文章说一下user-baseCF实现
********grouplens************
GroupLens在这篇文章当中,提出了一个新的基于协同过滤的架构。
文章的结构先说了基本的假设就是,过去喜欢一个东西,在遇到类似的东西也会喜欢。
其实就是协同过滤的就基本思想,但是还没有用协同过滤这个词。
这应该是,最早提出这种想法了。
该推荐算法最终通过计算目标用户和其他用户的兴趣相似度进行项目的推荐。
除了基本假设,另外介绍了GroupLens体系结构概述,是如何与原有的系统结合的,怎么收集信息,系统运行的平台,win98都没出,缓存数据处理。
动态和快节奏的新系统,讨论数据量、延迟、评级稀疏性、性能问题等
给我的感觉,冗余信息很多,更像科普类的文章。
距今已经20年了,读起来很生硬,因为很多专业术语现在都不用或者改名了吧,读着很不舒服,
现在看来应该没啥特别的内容,但是应该在当时是个很厉害的文章。
我基于对文章的理解,抽象出的模型就是这样的
*******模型开始******
首先使用打分服务器收集用户的评分数据,
我们把收集到的用户的评分数据做成一个矩阵,每一行代表了一个用户对不同的新闻的打分,每一列代表不同用户对一个新闻的打分
然后我们找最相似的用户,通过这几种常见的方法
欧几里德距离,又称欧氏距离,在n维欧式空间中,计算欧几里德距离的公式,如下所示其中,x、y表示两个点的坐标,d(x,y)表示点x和y之间的距离。
其中下边的函数sim(i,j)表示用户i与用户j之间的相似性,
皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1]之间。
Cosine相似度被广泛应用于计算文档数据的相似度:
Jaccard系数,是Cosine相似度的扩展,也多用于计算文档数据的相似度
介绍完相似度的计算方法,下面我们看看如何根据相似度找到用户的邻居,
常用的挑选邻居的原则可以分为两类(个数,或者阈值)
图中给出了二维平面空间上点集的示意图。
这些都是后来总结的,论文里并没有很清晰的表示出来。
最后运用寻找相似用户推荐的办法,首先计算出相似度分布如图
这里分了一些组,不同组之间的新闻类型是不同的。
为什么要分组呢,分组原因
1打分的稀疏性,一个用户关注的领域是有限的,评分是非常稀疏的,GroupLens提出一个解决办法就是分成不同的新闻类型,分成娱乐笑话,美食菜谱,编程版块,在每个领域领面,相对没那么稀疏。
2还有一方面是为了优化性能:
按照新闻不同分组或者不同的用户,设置不同服务器再或者把用户定义成几种模版类型,对某个具体的人进行模版组合,而不是针对个人的推荐计算。
其中给出三个新闻组的用户对,皮尔森相关系数分布图。
娱乐幽默新闻组中,存在许多高的相关性的用户,表示关于该领域的新闻大家的评判准则比较一致。
而在食物菜谱一组中的相关性几乎均匀分布,这就说明在这个领域中个人口味十分重要。
最后经过七个周的公开测试,最后他们得出结论:
这个系统的预测是有意义的。
他们还做了回顾性分析,即使用户没有得知预测评分之前,他们倾向于阅读那些预测值高的文章。
验证了预测打分是有意义的。
最后给出的图,基于同一个新闻组的其他用户的打分,得分高的文章的阅读数也更高。
现在看起来感觉没有什么东西,在当时应该是很厉害。
因为这都是20年前的文章了,是为了做综述采访这里讲的。
思想虽然简单,但是有非常重要的意义,深远的影响。
**********下面我们来了解下,另一种协同过滤的方法,基于物品的协同*****
那么就基于这篇文章,这是(2001)亚马逊提出
其实基于item-basedCF是Amazon在基于用户的过滤的机制上改良的一种策略
因为基于用户的过滤,有一个问题,算法不能很好的适应大规模用户和物品数据。
这篇文章呢,98提交的专利,2001发表的。
虽然说得不很具体,也没有给出具体的公式,但是在推荐系统的发展中有很大的影响。
因为本身就是一种改进算法,而且还有专利问题,就没有说太多东西。
文章一开始讲了以前算法的优缺点,他们算法的实现,给出了一段伪代码。
还有他们算法的性能分析,还有就是他们算法的可以处理的数量级。
亚马逊的方法呢,就是事先构建一个物品相似度矩阵,描述所有物品两两之间的相似度。
这里不再是用户与用户的相似度计算了,计算相似度的方法呢,还是之前提到的那些,欧式距离,余弦相似度等。
找到某个用户购买物品找到最相似物品后,计算这些相邻物品的评分的加权和,来对物品进行预测评分。
因为这样的物品数量一般都比较少,因此计算预测值可以短时间完成。
****矩阵图**
文章中提到。
给定了M个用户和N个物品,在最坏的情况下,必须评估最多包含着N个物品的所有M个用户的记录。
当用户的数量到达几百万,线上环境要求必须在极短的时间内返回结果,实时计算仍然是不可行的。
但是还有一个情况是大多数用户只评分或者购买了非常少量的物品,实际复杂度非常低。
这个相似商品表格的离线计算极费时间,最糟糕时需要O(N2M)。
但在实际运行中,它接近O(NM),因为大多数顾客只有很少的购买。
因为在大部分的Web站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。
由于没有具体的例子,这里我就找了一个可以表示基于物品过滤思想的例子,我们一起来看一看
**小人图***
这就是基于物品的协同过滤的思想了
***亚马逊的性能介绍**
结论就是他的系统性能的介绍。
网站当时的用户数量是2900W,而产品将数量是百万级别。
他们的算法呢,对如此大的用户数量产生推荐,仅仅需要秒级时间。
其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,因此计算物品的相似度计算量较小,同时物品的数据相对稳定,那也就是说我的相似度矩阵也不必频繁更新。
*****算法比较****
比较一下
相同点:
基于邻域的算法
(1)计算复杂度.ItemCF也是从Amazon的论文和专利发表之后(2001年左右)开始流行,大家都觉得ItemCF从性能和复杂度上比UserCF更优,产品数量小于用户数量,而且产品变化不大。
但也不是所有的场景都是这样的情况,可以设想一下在一些新闻推荐系统中,情况往往是相反的,新闻的数量是海量的,同时也是更新频繁的。
所以,其实可以看出,我们到底该选择哪种推荐策略,其实和具体的应用场景有很大的关系。
(2)(推荐多样性和精度)实际编程实现的时候呢,发现了一个问题,就是基于用户的都是推荐热门物品,基于物品很少推荐热门物品。
解释
和我相似的用户不一定只关心相同的东西,别可能有其他爱好。
所以别人喜欢的领域里热门的东西就会推荐给我
基于物品的,基本上就是我喜欢领域里的东西。
很小众
这两种推荐都有其合理性,但都不是最好的选择,因此他们的精度也会有损失。
可以说,这两个算法是很互补的
三.
**********大奖赛PPt********
从最初的推荐系统提出到流行到,从基于内容,到基于用户的协同过滤
在到2001年左右,亚马逊提出的基于物品的CF,又开始流行
再到2006年netflix提出百万美元大奖,激发了新的一轮推荐系统的研究热潮,矩阵分解技术在这个时候开始蓬勃发展。
2006年,NETFLIX宣布,设立一项大赛,公开征集电影推荐系统的最佳电脑算法,第一个能把现有推荐系统的准确率提高10%的参赛者将获得一百万美元的奖金。
2009年9月21日,来自全世界186个国家的四万多个参赛团队经过近三年的较量,终于有了结果。
一个由工程师和统计学家组成的七人团队夺得了大奖,拿到了那张百万美元的超大支票。
这个大赛的数据集包含了48(万)0189个匿名用户对大约1(万)7770部电影作的大约lO亿次评分。
在这个大奖赛上获奖的算法,靠前的基本上都是基于矩阵分解的,
********论文题目******
下面就通过这篇获奖团队的文章,来了解下,矩阵分解的一些内容。
********矩阵******
有m个用户,n个产品,第i个用户对第j个产品的打分就是Rij,1-5分不等,没打就是0分
**下页**
原本的评分矩阵R可以分解为两个矩阵P乘Q的转置,P乘Q转置得到R的估计
****下页***
第i个用户对第j个物品的打分就可以估计为,矩阵P的第i行,乘以Q的第j行的转置。
把真实评分和预测评分做差,平方得到eij平方
目标就是使得分解得到的矩阵尽可能的接近原来的评分矩阵,也就是eij尽可能的小。
这时候呢,有两种方法,一种是随机梯度下降,一种是交替最小二乘法、
随机梯度下降:
这时候eij的平方就是pi和qj的函数,对pi的第k个分量求偏导
然后迭代的方向就是倒数的负方向(阿尔法就是参数,就是迭代速率或者是学习速率)
交替最小二乘:
随机梯度下降在有些情况下是比较快的,但是在这里,pi和qj都是未知的,而且eij的平方这个函数是非凸,如果固定一个未知数,优化问题就变成2次函数了,因此,随机最小二乘法,先固定一个,然后去求另一个,当求得这个固定了,在回头重新计算开始固定的那个,就是解决一个最小二乘问题。
一般情况下,我们说随机梯度下降好一些,但是在两种情况下,交替最小二乘法要好一些,1比如说在并行计算的系统里,每个pi和没个qj都可以独立运算。
2还有就是在隐式反馈的数据集上,训练集并不是那么稀疏,梯度下降法去一遍遍的循环的话,基本上不可行的。
***下页***
在文章的后半部分呢,还增加许多其他的参数
(1)然后又考虑到偏见,有人就是要求高,就喜欢打低分,U代表了全局的平均打分,bi和bu代表了观测到的用户i和物品j的偏差值。
分别是
U代表所有电影平均打分,这个用户喜欢比平均分还低一些bi这么多,这个电影本身质量好一些,我比所有电影的平均分要高bu这么多
综合一下,都考虑进来。
(2)到目前为止,提出模型是静态的第,2种动态参数就是考虑了时间效应,。
在现实中,对产品看法和和产品的受欢迎程度是不断变化的。
随便时间的变化,客户的品味可能发生改变,那就需要对偏见调整,比如演员演了一部新的电影里,可能影响对他原先参演电影的评价。
偏见值可能发生改变
(3)第三种就是,置信水平。
例如电影上映期间,通过大量的广告,提高关注度和评价,这时候得来的高分,其实不是那么可信的数据。
或者有些人就是不喜欢看某种类型的电影,故意试图拉低评价,这时候置信水平就要做相应的调整。
就乘上一个置信水平
(4)第4种就是隐式反馈数据集或者其他信息,做成01布尔值向量放进来。
比如浏览记录啊,性别啊,年龄啊,邮政编码,收入水平啊。
综合考虑了这些之后,得出了结果
****分布图****
这幅图,取因隐语义模型的前两个维度,画图,能够看到电影因为类型而分部在不同的位置,因为矩阵分解是一种隐语义模型,就是我分解完的这个向量的每一维度到底代表什么,我是实际上是不知道的,但是他确实是有意义的。
比如这副图,只去了前两维,爱情电影分布在一个角落,男生喜欢的就分布在另一个角落,还有比较诡异的电影在另一个角落上。
所以这种矩阵分解的办法呢,虽然效果很好,但是可解释性很差,也是近些年的研究方向。
****RMSE均方根误差****
下面就是最终的结果。
矩阵分解模型的准确性。
Y坐标是均方根误差,四条线代表了四个不同的因素模型。
(越低越好)准确度随着因子模型的维数增加而提高。
哪个模型可以包含越多区分不同集合的参数,那么他就要越准确。
在相同的数据集,Netflix自己研发的系统实现RMSE=0.9514,而大奖的精度要求RMSE=0.8563。
虽然写这篇文章的时候还没达到大奖的要求,但是在当时的准确度排名上,还是排在第一位的。
到2009年终于达到要求获得大奖。
这就是矩阵分解的基本思路了
把一个分解问题转化成了一个优化问题,不断迭代。
最终求得结果。
刚开始,有一个小小问题就是呢,与原来矩阵差距越小,那原来没有评分的地方是0,现在迭代出来,相乘也是0吧。
实际上是只计算,和原来打分的那些位置的均方根误差。
*****最后一篇,概率矩阵分解*****
近年来,矩阵分解算法(matrixfactorization,简称MF)已逐渐应用于推荐系统
传统分解方法也不断的发展,但是他们有一个基本的共同点是,通过将一个高维的矩阵分解为两个或多个低维矩阵的乘积实现维度规约,方便于在一个低维空间研究高维数据的性质.
后来出现了
非负矩阵分解(non-negativematrixfactorization,简称NMF)
通常的矩阵分解会把一个大的矩阵分解为多个小的矩阵,但是这些矩阵的元素有正有负。
而在现实世界中,比如图像,文本等形成的矩阵中负数的存在是没有意义的,所以如果能把一个矩阵分解成全是非负元素是很有意义的,NMF分解具有局部性、部分表达等独特性质,具有直观的物理含义
这里我要讲的这篇呢,是另一种
概率矩阵分解(probabilisticmatrixfactorization,简称PMF),2008年这些人在NIPS上提出概率矩阵分解(probabilisticmatrixfactorization,简称PMF)算法,探讨了MF更深层的概率解释.
****第一页PMF*****
M个电影,N个用户,打分1到K,全是整数。
Rij是用户i对电影j的评分,
UV是分别是用户和电影的隐含特征矩阵。
使用均方根误差RMSE来对模型进行评价
先假设观测数据的条件分布是符合高斯分布的。
N(x|u,西格玛方)是均值为u,方差为西格玛方的高斯分布的概率密度函数,
Iij是指示函数,用户i对电影j打分了就等于一,没打分就是0
因为打分之间可以看做是独立同分布的,所以可以连乘,都放到一起就是打分矩阵。
另外假定用户和电影的特征向量服从零均值的高斯球形先验。
(其实就是说假定每一个feature之间相互独立,且各个feature的方差相同)
******下页******
用户和电影的特征的后验分布的对数是这个式子
就是已知,观测数据的方差,和用户和电影特征矩阵的方差
其中,C是一个与参数无关的常量
运用最大似然估计的思想呢,(在参数和超参数固定的情况下,即那三个方差)要想上面第一个式子取得最大,等价于最小化下面的第二个式子。
就是带有二次正则项的误差平方和。
这里(蓝木特U)=(观测数据方差)比(用户特征矩阵的方差)
(蓝姆特v)=(观测数据方差)比(电影特征矩阵的方差)
而且||||FRO代表弗洛尼乌斯范数(他有好几种定义,就只要知道是奇异值之和就好)
参数固定,第一个式子下半部分看成常数,把上半部分乘以负的西格玛方,就得到2式了
然后,对U和V用梯度下降发求解,就可以找到式子4的局部最小值
除了用简单的线性高斯模型,预测值超出合理的范围,给用户和电影的特征向量的乘积做了一层逻辑四弟函数,得到倒数第二个式子,最后呢,做了一个区间映射。
把评分1-K映射到了0-1区间。
实验结果呢,用最速下降法,最小化上面的目标函数,只要用线性的时间。
在matlab上跑了netflix的数据集,30个特征的模型只用不带一个小时就可以了。
****自动控制模型****
1.自动的复杂性控制PFM模型
最简单的方法来控制的能力就是模型通过改变特征向量的维数。
当样本不平衡时候就不可行了,即观测之间的行或列有着显著不同的数量,因为任何单一维度,对某一维来说过高,别的过低。
实际上是不可行的。
他们找到了一种点估计的办法,自动的进行复杂性控制,使得泛化性能很好。
这里塞塔u,塞塔v分别是对于用户和电影特征向量的先验概率的超参数,C是一个常量与参数和超参数都无关。
只要最大化这个式子的对数先验概率,那么就可以求得参数和超参数的点估计
第一种情况:
如果是高斯先验的时候,用户和电影的特征向量固定,就可以找到超参数理想的封闭形式。
因此为了简化学习过程,作者最速下降法交替优化hyperparameters和用特征向量,总是是其中一个保持固定。
当是高斯混合先验的时候呢,超参数就可以用执行EM算法的第一步来更新。
EM算法:
(当分布中有多余参数或者数据结尾确实,用MLE求是很困难的,然后EM算法就是吧MLE的算法两步走,第一步求期望,以便把多余的部分去掉,第二部求极大值。
)
最后,这样就可以动态的调整先验参数,使得模型就有自适应的复杂性,也就是具有很强的泛化能力。
2.约束的PMF模型
作者用PMF模型求着,当最后稳定之后。
发现打分很少的用户预测分接近于先验均值或者用户的平均值。
之后为了改进这种局面,使得对于打分很少的用户也能具有较好的预测效果。
提出了约束的概率矩阵模型,
这里I是指示矩阵,打分为1不打分为0,Iik是第i个用户对第k个电影是否打分。
W是潜在相似性约束矩阵(与电影的特征向量矩阵大小相同)
(用户)在(某个电影上打分)对(用户特征矩阵的先验均值)的影响就由w矩阵的第i列体现出来
把潜在相似性约束矩阵W正则化(就是设置一个均值为零的球形高斯先验分布),
这就会使得,看过相同或者相似电影的用户有相近的特征分布。
Yi可以看做是第i个用户Ui对先验分布的均值影响的偏移量
在无约束的PMF中Ui和Yi是一样的,因为都符合前面的均值为零的先验分布。
然后就可以定义打分矩阵的条件分布为第4个式子,
根据前面PMF中求解的方法,最大化后验概率等价于与最小化带有二次正则项的平方误差和,
于是对Y,V,M执行梯度下降,就可以最小化这个式子的目标值。
同样的,约束的PMF,的训练时间与数据集的大小成线性关系。
,最后经过试验,要比单纯的PMF要好很多,尤其是在打分个数少的用户的数据上。
****结论图1***-*
基于概率矩阵分解模型,在netflix上跑了实验
X轴代表迭代次数,y轴代表了均方根误差,SVD使用的标准的奇异值分解的办法,PMF1和PMF2使用的是固定先验的pmf,
PMF1用户特征矩阵与打分矩阵的方差之比取0.01,电影特征矩阵与打分矩阵的方差之比取0.001
PMF2用户特征矩阵与打分矩阵的方差之比取0.001,电影特征矩阵与打分矩阵的方差之比取0.0001
PMFA1用的是可调节先验的PMF
隐含特征向量的维数取做10维,就是低一些
可以看到svd在迭代次数比较少的时候,性能还是很好的,后来就出现了过拟合。
而PMF1去没有出现过拟合。
但是在达到一定程度之后,却出现了欠拟合。
结果显示自动正则化模型获得了性能提升。
右边这幅图呢,显示约束概率矩阵分解的实验结果,
隐含特征向量的维数取做30维,经过不断实验取得的最好结果的维数
这里不管是用户特征矩阵,还是电影特征矩阵,还是带有偏移量的用户特征与打分矩阵的比都取做0.002
可以看到SVD方法也是出现了明显的过拟合,而且CPMF比PMF的收敛速度快了很多。
然后其实,作者还提到了,将打分0-1化,就是打过分为1,不打分为0,在CPMF模型下,也能取得一定的效果。
****结论图2*****
最后这幅图呢,CPMF可以部分解决冷启动问题,对于打分比较少的特殊用户。
当平均打分个数少于5个时候,PMF的预测值接近平均值,CPMF却能够取得较好的效果。
最后作者提到,当多个PMF模型的预测与限制的玻尔兹曼机模型进行线性结合后,他们还实现了一个错误率近0.8861一个模型。
比得分Netflix的系统好了将近7%。
没有具体说明
---------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐 系统 综述 提纲