机器学习(十二):推荐系统的两种观点

1. 从物理意义出发的观点

什么是推荐系统?以电影推荐为例,就是对于一部电影,我们预测某个用户对一部电影的评分。
这里写图片描述

我们用如上所示符号来表示。值得注意的是,很有可能用户没有给某电影打分,此时 r(i,j)=0

这里需要理清:
对于一个电影,我们需要找到一些特征空间 X 来衡量这个电影;
对于一个用户,我们需要找到一些参数 h(x)=wTx 来预测用户对这部电影的评分。
然而问题是:我们既没有 X 也没有对于用户i的 wi ,也就是说这两者都需要学习。

使用如下符号:
这里写图片描述

我们假定对于电影的特征向量已经确定,也即所有的 x(i) 已知,来学习 θ(j) :
这里写图片描述
这里写图片描述

现在反过头来看,其实我们对电影的特征向量一无所知。如果假定所有的 θ(j) 已知,来学习 x(i)
这里写图片描述

这一个过程与K-Means训练过程类似,给定一个初始的θ,然后开始训练:

θ0x0θ1x1....

这里又与K-Means有所不同,因为K-Means是combination-number最优化问题;而我们这里的最优化问题很简单,可以同时进行:
这里写图片描述
这里写图片描述


此时我们再来重新看给出的y数据:
这里写图片描述


还是有点小问题,如果某一个用户没有给任何电影打分:
这里写图片描述

扫描二维码关注公众号,回复: 2948107 查看本文章

根据我们的学习过程:代价函数的第一项为0。如果要最小化代价函数,那么此用户的 θ=0 ,也就是说:对于任何的电影,我们将会预测其评分为0——不向该用户推荐任何电影。这样做可以吗?可以,但不是很好。我们理应向任何一个用户推荐电影。怎么推荐?
如果大多数人认为这个电影很好,那么这个电影可能真的非常好。——将对某一电影的所有评分求一个均值。
可以使用如下的均值归一化过程:
这里写图片描述

Yμ 来学习,最后预测的结果是 θTx+μ

2. 从抽象计算出发的观点

对于电影推荐系统,我们获得的数据是什么呢?假设用 nu 个用户, nm 部电影, r(i,j) 表示用户j是否给用户i评分,其对应的分数是 y(i,j) 。那么我们的资料是 (x(j)=j,y=y(i,j)) 亦或者是 (x(j)=j,y=(y(1,j)),...,?,...y(nm,j))T) 。(毕竟我们的推荐系统以用户为中心,而不是以电影为中心——当然以电影为中心,数据也也可以用同样的方式解析)。

我们知道输入x代表的是用户的ID,并没有实际意义,我们称之为抽象特征。
我们要设计一个特征转换的函数φ,来将抽象特征转换——这个函数具体是什么我们不关心(这类似于自动编码器)。然后学习一个预测函数h,使得 h(ϕ(x))y
自动编码器使用一个线性模型,假设预测函数也是一个线性模型,那么整个模型就是一个两层的网络。

假设将x进行binary vector 编码,那么这个网络就是 nudnm 结构
这里写图片描述
其中 Vdnu,Wnmd ,则有

h(x)=WVx

根据代价函数,我们知道我们要寻找W,V使得
YVTWT

这里写图片描述
然后转向使用alternating optimization技术来解决最优化问题。

3. 小结

无论如何,电影的特征向量的长度还是需要我们自己来指定。

我们在训练过程中,可以考虑实际问题来定制解决方案,例如此问题中:越是最近时间段的数据,权重越大。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/wangyanphp/article/details/54970784