您的位置:首页 > 其它

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

2017-02-10 16:28 316 查看

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

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



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

这里需要理清:

对于一个电影,我们需要找到一些特征空间X来衡量这个电影;

对于一个用户,我们需要找到一些参数h(x)=wTx来预测用户对这部电影的评分。

然而问题是:我们既没有X也没有对于用户i的wi,也就是说这两者都需要学习。

使用如下符号:



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





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



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

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





此时我们再来重新看给出的y数据:



还是有点小问题,如果某一个用户没有给任何电影打分:



根据我们的学习过程:代价函数的第一项为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 编码,那么这个网络就是nu−d−nm结构



其中Vd∗nu,Wnm∗d,则有h(x)=WVx

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



然后转向使用alternating optimization技术来解决最优化问题。

3. 小结

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习