机器学习(二十二) ——推荐系统基础理论

机器学习(二十二)——推荐系统基础理论

(原创内容,转载请注明来源,谢谢)

一、概述

推荐系统(recommendersystem),作为机器学习的应用之一,在各大app中都有应用。这里以用户评价电影、电影推荐为例,讲述推荐系统。

最简单的理解方式,即假设有两类电影,一类是爱情片,一类是动作片,爱情片3部,动作片2部,共有四个用户参与打分,分值在0~5分。

但是用户并没有对所有的电影打分,如下图所示,问号表示用户未打分的电影。另外,为了方便讲述,本文用nu代表用户数量,nm代表电影数量,r(i,j)=1表示用户j给电影i评价,y(i,j)表示用户j给电影i的打分(当r(i,j)=1时这里的值才有效)。

前三部是爱情片,用户Alice给前两部爱情片都5分,根据直接判断,其打5分的概率很高。

下面首先就要解决用机器学习来预测打分的问题,进而讨论电影的相关性问题。

二、基于内容的推荐系统

1、简要描述

还是上面的几个人和几个电影,现假设已知每部电影的爱情属性和动作属性,分别用x1和x2表示每部电影的这两个特征值,加上x0=1,则该场景变为线性回归场景。即需要预测出用户对每种类型电影的喜好程度矩阵θ,进而在已知某种用户未打分的电影的特征x的情况下,用θTx预测用户可能给该电影打分的分值。

下图假设已求出用户的θ=[05 0]T,第一个数0对应x0没有实际意义,第二个数5表示用户对爱情片的喜欢程度,第三个数0表示用户对动作片的喜好程度。则可以预测出,该用户对第三部电影的打分,可能4.95。如下图所示:

2、计算单个用户的θ

列出类型线性回归的代价函数,但是在推荐系统中,有一些和线性回归的代价函数不太一样的地方:

1)求和的时候,只计算用户已经打过分的电影,忽略未打分的电影。未打分的无法参与计算。

2)不需要除以用户已打过分的电影的数目。这里是常量,忽略对结果影响不大。

3、计算所有用户的θ

每个用户去计算,要列很多公式,比较繁琐,这里可以把公式合并,一次性求出所有的用户对应的θ,即在代价函数的地方,累加上所有用户,同时正则化项也需要累加。

接着,就用梯度下降算法,进行计算。

这部分内容和线性回归完全一致,区别只有代价函数的列式不太一样,梯度下降部分完全一致。

这里基于内容的推荐,可以认为给定样本的特征x,求θ的过程。

三、基于用户评论的预测

现在考虑到,由于现实中并不一定会给每个电影都有特征标签,并且特征的数量可能非常多,但是考虑到已经有很多用户已经打分,现在反求每个电影的特征。

这里可以理解为给定用户对不同特征的喜好程度θ,求样本的特征的过程。如下图所示:

实际求解过程也很简单,只要把x当作变量,θ当作已知值,反过来列代价函数,进而再用梯度下降求出x即可。

四、协同过滤算法

上面的两个问题,有点像鸡生蛋还是蛋生鸡的问题,可以看出x和θ,只要知道一个内容,就可以求出另一个内容。进而,可以用求出的内容,反过来再优化原来的内容。相当于可以形成一个θ->x->θ->x……的链。

这里,首先由用户对电影评分,因此可以认为多个用户对电影的评分,致使计算出电影的特征,而特征又反过来进一步优化对用户评分的预测。

对于公式上,考虑将两个公式整合成一个,再分别对θ和x求偏导数,进行梯度下降,则可以得到θ和x。

这样的计算方式,则成为协同过滤算法(collaborative filtering algorithm)。

公式如下:

五、向量化实现

现在回到一开始的问题,怎么判断两个电影是否类型相似,进而给用户推荐相似类型的电影。

前提条件还是之前的,知道部分用户对电影的打分,未知电影的类型,如下图所示:

此时,可以用到向量化实现技术(vectorization implementation),简单来说,即用上面的协同过滤计算出x和θ后,将x和θ都表示成矩阵,并且用xθT得到预测矩阵,可以预测出每个用户对每种电影的打分,以及预测出电影的特征,矩阵如下图所示:

这个称为低秩矩阵分解(lowrank matrix factorization)。

此时,要判断两个电影是否相似,则很简单,只要计算电影i和电影j对应的特征矩阵的距离||x(i)-x(j)||,当这个值越小,则表示这两部电影越相似。

六、均值归一化

1、现有问题

现考虑一个问题,当来了一个新用户,他没有对任何电影打分。此时如果用协同过滤算法,由于其没有任何的打分,则代价函数中,会只剩下θ平方和正则化项,另外两项都会为0。

因此,当需要对θ进行代价函数最小化求解,会得到θ=0时代价函数最小(显然的事情),结果就是会预测出用户对所有电影的评分都是0分。这个有违常理。

2、解决问题

为了解决问题,引入均值归一化(mean normalization),步骤如下:

1)设矩阵Y表示所有用户对所有电影的打分,为打分的电影用?表示。

2)在已打分的电影中,计算每个电影的分数均值。计算方式即打分的总数除以打分的总人数。设这个矩阵为μ。

3)令Y=Y-μ,得到一个新的矩阵,其中?部分仍为?。

4)用这个新的Y去进行协同过滤算法,求出x和θ。

5)此时对于某个用户,可以预测结果是(θ(j))Tx(i)+μ(i),要加上对应的μ,是因为一开始扣除了μ。

根据上述的计算,得出的新用户的预测结果,会是均值。这个可以简单的推出,因为结果是(θ(j))Tx(i)+μ(i),而显然(θ(j))Tx(i)=0(因为这个用户之前没有任何预测,θ=0),故只会剩下μ值。

这样,对于每一个新用户,在还没进行评价之前,会预测其对每个电影的评价是均值,这也就表示给新用户推荐电影时,会按均值,把均值较高的电影推荐给用户,这个比较符合常理。

七、总结

这里的推荐系统,可以算是一个引子,只介绍了推荐系统的一些基础思想,对于真正完整的推荐系统,还有需要内容等待探索。后续我也会继续这方面的学习。

——written by linhxx 2018.01.25

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-01-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯大数据的专栏

再谈数据挖掘——时序预测初探

1. 背景 先来看两个例子,下面两幅图展示了百度在趋势预测方面的应用案例,一个是世界杯期间的比赛输赢预测,另一个是北京各旅游景区的游客人数预测。 ? ? 这两...

2435
来自专栏AI科技大本营的专栏

吴恩达团队最新成果:用深度学习来改善临终关怀服务

翻译 | AI科技大本营(ID:rgznai100) 参与 | 尚岩奇,刘畅 AI可以是杀戮的武器,也可以是救世的良方。 上周,在日内瓦举行的联合国特定常规武...

3417
来自专栏新智元

谷歌大脑负责人Jeff Dean:深度学习技术及趋势报告(76页PPT)

【新智元导读】谷歌大脑负责人Jeff Dean上周在“嵌入式视觉年度峰会”上发表演讲《智能计算系统中的大规模深度学习》,结合多年应用实例,讨论在从手机到数据中心...

3728
来自专栏达观数据

技术干货 | 细说YouTube推荐系统的变迁

作者简介 郝俊禹:达观数据高级工程师,曾获美国大学生数学建模竞赛二等奖,目前参与达观数据推荐系统研发,负责酷6,wifi万能钥匙和视频看看等项目。 ---- ?...

3764
来自专栏AI科技评论

干货 | 香港科技大学施行健:深度学习如何用于短临降雨预报

AI科技评论按:本文介绍了 NIPS 2017 论文: Deep Learning for Precipitation Nowcasting: A Benchm...

3707
来自专栏新智元

ICLR oral:清华提出离散化架构WAGE,神经网络训练推理合二为一

1524
来自专栏鸿的学习笔记

深度学习的五种分类

卡洛斯佩雷斯为深度学习为基础的AI给出了自己的分类。这个分类让我们知道我们目前在哪里,我们可能走向哪里。

651
来自专栏人工智能头条

用户在线广告点击行为预测的深度学习模型

2775
来自专栏AI科技评论

京东 AI Fashion-Challenge 挑战赛冠军方案详解(风格识别+时尚单品搜索)

AI 科技评论按:随着消费升级时代的来临,中国时尚消费市场正渐渐变得更加个性化、精致化和多样化,服饰的时尚风格对消费动机的影响愈渐加深,而随着 AI 技术的发展...

462
来自专栏CreateAMind

Paper Reading | VINet 深度神经网络架构

2017年3月10日,Momenta老司机带你读Paper,第三趟车已出发!你,跟得上吗?

922

扫码关注云+社区