机器学习9.5:推荐系统

参数

n u n_u nu表示用户数量
n m n_m nm表示电影数量
r ( i , j ) r(i,j) r(i,j)表示用户j是否有评价电影i,若是,则值为1
y ( i , j ) y(i,j) y(i,j)表示用户j对电影i的评分

基于内容的推荐

θ ( j ) \theta^{(j)} θ(j)表示第j个用户的模型参数
x ( i ) x^{(i)} x(i)表示第i个电影的输入特征
对于用户j来说,预测其对电影i的评分: ( θ ( j ) ) ( x ( i ) ) (\theta^{(j)})(x^{(i)}) (θ(j))(x(i))
m ( j ) m^{(j)} m(j)表示被用户j评分的电影的数量

其中, x ( i ) x^{(i)} x(i)中可以包括特征动作、爱情、喜剧等,先指定每部电影的特征,比如电影A动作0.9,爱情0.7,喜剧0.1。

用线性回归计算模型参数 θ ( j ) \theta^{(j)} θ(j),其目标函数(去掉线性回归的目标函数中除以m的项):
在这里插入图片描述

同时计算各用户的模型参数 θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) \theta^{(1)},\theta^{(2)},\dots,\theta^{(n_u)} θ(1)θ(2)θ(nu),其目标函数:
在这里插入图片描述

梯度下降算法:
在这里插入图片描述

基于用户的推荐

先指定模型参数 θ ( j ) \theta^{(j)} θ(j),再计算电影的特征

用线性回归计算电影i的特征 x ( i ) x^{(i)} x(i),其目标函数:
在这里插入图片描述

同时计算各电影的特征 x ( 1 ) , x ( 2 ) , … , x ( n u ) x^{(1)},x^{(2)},\dots,x^{(n_u)} x(1)x(2)x(nu),其目标函数:
在这里插入图片描述

梯度下降:

x j ( i ) : = x j ( i ) − α ( ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( i ) ) k = 0 x j ( i ) : = x j ( i ) − α ( ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( i ) + λ x j ( i ) ) k ̸ = 0 x^{(i)}_j:=x^{(i)}_j-\alpha(\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})\theta^{(i)}_k) \quad k=0\\ x^{(i)}_j:=x^{(i)}_j-\alpha( \sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})\theta^{(i)}_k+\lambda x^{(i)}_j) \quad k\not=0 xj(i):=xj(i)α(j:r(i,j)=1((θ(j))Tx(i)y(i,j))θk(i))k=0xj(i):=xj(i)α(j:r(i,j)=1((θ(j))Tx(i)y(i,j))θk(i)+λxj(i))k̸=0

协同过滤算法

随机初始化模型参数 θ ( j ) \theta^{(j)} θ(j) x ( i ) x^{(i)} x(i) ( − ϵ , ϵ ) (-\epsilon,\epsilon) (ϵ,ϵ),注意要像神经网络算法一样,破坏对称性,否则会得到相同的值

PS:这里不用设置 θ 0 ( j ) \theta^{(j)}_0 θ0(j) x 0 ( i ) x^{(i)}_0 x0(i),因为如果需要这两个参数,该算法会自己学习得到。

结合基于内容推荐和基于用户推荐两种算法,目标函数如下:
在这里插入图片描述
在这里插入图片描述

梯度下降:
在这里插入图片描述

得到各参数后,根据电影的输入特征,和用户的模型参数,预测用户评分 θ T x \theta^Tx θTx

低秩矩阵分解

左图是实际评分,右图是预测评分
在这里插入图片描述

其中,预测评分的矩阵可以分解为 X Θ T X\Theta^T XΘT
X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ⋮ ( x ( n m ) ) T ] Θ = [ ( θ ( 1 ) ) T ( θ ( 2 ) ) T ⋮ ( θ ( n u ) ) T ] X = \begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T\\ \vdots\\ (x^{(n_m)})^T \end{bmatrix} \quad \Theta = \begin{bmatrix} (\theta^{(1)})^T \\ (\theta^{(2)})^T\\ \vdots\\ (\theta^{(n_u)})^T \end{bmatrix} X=(x(1))T(x(2))T(x(nm))TΘ=(θ(1))T(θ(2))T(θ(nu))T

如果要寻找特征相近的电影,可以通过算 ∣ x ( i ) − x ( j ) ∣ |x^{(i)}-x^{(j)}| x(i)x(j)得到

  • 均值化
    如果该用户一个电影都没有评分,那么,在梯度下降时,由于前项为0(没有评分数据),只剩下后项的惩罚项,这样的话,就会使惩罚项中的该用户的模型参数为零向量,则该用户在预测所有电影时的评分均为0,这是没有意义的,所有要对分值Y作均值化:
    在这里插入图片描述

上图中,Y的行代表不同的电影,列代表不同的用户, μ \mu μ为各行,也即各电影,的平均分:评分总值/评分用户数。然后各行数据分别减去对应的平均分。得到右面的Y。

那么,在最终预测评分时,需要加上对应的电影的平均分 μ i \mu_i μi,那么,在最后预测时,就不会出现0分的情况。

PS:另一种情况,电影无人评分,所以它的输入特征也全是0,预测用户的评分肯定都是0,同理,将Y的各列进行均值化,就是求每个用户的平均分,再每列的评分分别去减对应的平均分,最后在算分时再把对应的用户的平均分 μ j \mu_j μj加上去,那么该电影的评分起码是个均分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值