1. 问题提出
对于下图的数据集,用户数量 nu=4 ,电影数量 nm=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. 解决思路
假设对于每一部电影,都有一个对应的特征集合,x1 表示一部电影为爱情片的程度,x2 表示一部电影为动作片的程度。
Movie |
Alice (1) |
Bob (2) |
Carol (3) |
Dave (4) |
x1 (romance) |
x2 (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 |
每个电影都可以用一个特征向量来表示。可以得到第 i 部电影的特征向量 x(i)=⎣⎢⎡1x1(i)x2(i)⎦⎥⎤,其中 x0(i)=1 为截距特征。 对于每个用户 j 学习一个参数 θ(j)∈R3 ,用来预测用户 j 对电影 i 的打分为 (θ(j))Tx(i) 。
例如,x3=⎣⎡10.990⎦⎤ ,假设通过计算得到的 θ(1)=⎣⎡050⎦⎤ ,那么预测的用户 Alice 对 Cute puppies of love 电影的打分为 (θ(1))Tx(3)=4.95 。
3. 问题公式化
- n 电影的特征数量
- 如果用户 j 给电影 i 打过分,r(i,j)=1 ,否则 r(i,j)=0
- y(i,j) 用户 j 给电影 i 的打分
- θ(j) 用户 j 的参数向量,θ(j)∈Rn+1
- x(i) 电影 i 的特征向量
- 对于用户 j 和电影 i ,预测的打分为 (θ(j))Tx(i)
- m(j) 用户 j 评价的电影数量
优化目标
学习 θ(j) :
θ(j)min2m(j)1i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2m(j)λk=1∑n(θk(j))2
其中, 2m(j)λ∑k=1n(θk(j))2 为正则化项(正则化讲解详见https://blog.gabrielme.xyz/ML-7-2)。
由于 m(j) 不会影响 θ(j) 的最小值,所以公式可化简为:
θ(j)min21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(θk(j))2
学习 θ(1),θ(2),…,θ(nu) :
θ(1),…,θ(nu)minJ(θ(1),θ(2),…,θ(nu))
即:
θ(1),…,θ(nu)min21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))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 k=0)
其中,∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j) 可以表示为 ∂θk(j)∂J(θ(1),θ(2),…,θ(nu)) 。
文章内容整理自吴恩达机器学习视频教程。