1. 问题提出

对于下图的数据集,用户数量 nu=4n_u = 4 ,电影数量 nm=5n_m=5

Movie Alice (1) Bob (2) Carol (3) Dave (4)
Love at last 5 5 0 0
Romance forever 5 ? ? 0
Cute Puppies of love ? 4 0 ?
Nonstop car chases 0 0 5 4
Swords vs. karate 0 0 5 ?

如何怎样预测位置的值?

2. 解决思路

假设对于每一部电影,都有一个对应的特征集合,x1x_1 表示一部电影为爱情片的程度,x2x_2 表示一部电影为动作片的程度。

Movie Alice (1) Bob (2) Carol (3) Dave (4) x1x_1
(romance)
x2x_2
(action)
Love at last 5 5 0 0 0.9 0
Romance forever 5 ? ? 0 1.0 0.01
Cute Puppies of love ? 4 0 ? 0.99 0
Nonstop car chases 0 0 5 4 0.1 1.0
Swords vs. karate 0 0 5 ? 0 0.9

每个电影都可以用一个特征向量来表示。可以得到第 ii 部电影的特征向量 x(i)=[1x1(i)x2(i)]x^{(i)}=\left[\begin{array}{l}1 \\ x_1^{(i)} \\ x_2^{(i)}\end{array}\right],其中 x0(i)=1x^{(i)}_0=1 为截距特征。 对于每个用户 jj 学习一个参数 θ(j)R3\theta^{(j)}\in \mathbb{R}^3 ,用来预测用户 jj 对电影 ii 的打分为 (θ(j))Tx(i)(\theta^{(j)})^Tx^{(i)}

例如,x3=[10.990]x^{3}=\left[\begin{array}{l}{1} \\ 0.99 \\ 0 \end{array}\right] ,假设通过计算得到的 θ(1)=[050]\theta^{(1)}=\left[\begin{array}{l}0 \\ 5 \\ 0 \end{array}\right] ,那么预测的用户 Alice 对 Cute puppies of love 电影的打分为 (θ(1))Tx(3)=4.95(\theta^{(1)})^Tx^{(3)}=4.95

3. 问题公式化

  • nn 电影的特征数量
  • 如果用户 jj 给电影 ii 打过分,r(i,j)=1r(i,j)=1 ,否则 r(i,j)=0r(i,j)=0
  • y(i,j)y^{(i,j)} 用户 jj 给电影 ii 的打分
  • θ(j)\theta^{(j)} 用户 jj 的参数向量,θ(j)Rn+1\theta^{(j)}\in \mathbb{R}^{n+1}
  • x(i)x^{(i)} 电影 ii 的特征向量
  • 对于用户 jj 和电影 ii ,预测的打分为 (θ(j))Tx(i)(\theta^{(j)})^Tx^{(i)}
  • m(j)m^{(j)} 用户 jj 评价的电影数量

优化目标

学习 θ(j)\theta^{(j)}

minθ(j)12m(j)i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2m(j)k=1n(θk(j))2\min_{\theta^{(j)}}{\frac{1}{2m^{(j)}}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2m^{(j)}}\sum_{k=1}^{n}\left(\theta^{(j)}_k\right)^2}

其中, λ2m(j)k=1n(θk(j))2\frac{\lambda}{2m^{(j)}}\sum_{k=1}^{n}\left(\theta^{(j)}_k\right)^2 为正则化项(正则化讲解详见https://blog.gabrielme.xyz/ML-7-2)。

由于 m(j)m^{(j)} 不会影响 θ(j)\theta^{(j)} 的最小值,所以公式可化简为:

minθ(j)12i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2k=1n(θk(j))2\min_{\theta^{(j)}}{\frac{1}{2}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\sum_{k=1}^{n}\left(\theta^{(j)}_k\right)^2}

学习 θ(1),θ(2),,θ(nu)\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)} :

minθ(1),,θ(nu)J(θ(1),θ(2),,θ(nu))\min _{\theta^{(1)}, \ldots, \theta^{\left(n_{u}\right)}}J\left(\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)}\right)

即:

minθ(1),,θ(nu)12j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2j=1nuk=1n(θk(j))2\min _{\theta^{(1)}, \ldots, \theta^{\left(n_{u}\right)}} \frac{1}{2} \sum_{j=1}^{n_{u}} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2} \\

梯度下降法更新:

θk(j):=θk(j)αi:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)( for k=0)θk(j):=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))( for k0)\begin{aligned} &\theta_{k}^{(j)}:=\theta_{k}^{(j)}-\alpha \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right) x_{k}^{(i)}(\text { for } k=0) \\ &\theta_{k}^{(j)}:=\theta_{k}^{(j)}-\alpha\left(\sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right) x_{k}^{(i)}+\lambda \theta_{k}^{(j)}\right)(\text { for } k \neq 0) \end{aligned}

其中,i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j)\sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right) x_{k}^{(i)}+\lambda \theta_{k}^{(j)} 可以表示为 θk(j)J(θ(1),θ(2),,θ(nu))\frac{\partial}{\partial \theta_{k}^{(j)}}J\left(\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)}\right)

文章内容整理自吴恩达机器学习视频教程。