免订阅阅读:https://blog.gabrielme.xyz/ML-16-2/
1. 问题提出
对于下图的数据集,用户数量 n u = 4 n_u = 4 nu=4 ,电影数量 n m = 5 n_m=5 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. 解决思路
假设对于每一部电影,都有一个对应的特征集合, x 1 x_1 x1 表示一部电影为爱情片的程度, x 2 x_2 x2 表示一部电影为动作片的程度。
Movie | Alice (1) | Bob (2) | Carol (3) | Dave (4) |
x
1
x_1
x1 (romance) |
x
2
x_2
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 i i 部电影的特征向量 x ( i ) = [ 1 x 1 ( i ) x 2 ( i ) ] x^{(i)}=\left[\begin{array}{l}1 \\ x_1^{(i)} \\ x_2^{(i)}\end{array}\right] x(i)=⎣⎢⎡1x1(i)x2(i)⎦⎥⎤,其中 x 0 ( i ) = 1 x^{(i)}_0=1 x0(i)=1 为截距特征。 对于每个用户 j j j 学习一个参数 θ ( j ) ∈ R 3 \theta^{(j)}\in \mathbb{R}^3 θ(j)∈R3 ,用来预测用户 j j j 对电影 i i i 的打分为 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i) 。
例如, x 3 = [ 1 0.99 0 ] x^{3}=\left[\begin{array}{l}{1} \\ 0.99 \\ 0 \end{array}\right] x3=⎣⎡10.990⎦⎤ ,假设通过计算得到的 θ ( 1 ) = [ 0 5 0 ] \theta^{(1)}=\left[\begin{array}{l}0 \\ 5 \\ 0 \end{array}\right] θ(1)=⎣⎡050⎦⎤ ,那么预测的用户 Alice 对 Cute puppies of love 电影的打分为 ( θ ( 1 ) ) T x ( 3 ) = 4.95 (\theta^{(1)})^Tx^{(3)}=4.95 (θ(1))Tx(3)=4.95 。
3. 问题公式化
- n n n 电影的特征数量
- 如果用户 j j j 给电影 i i i 打过分, r ( i , j ) = 1 r(i,j)=1 r(i,j)=1 ,否则 r ( i , j ) = 0 r(i,j)=0 r(i,j)=0
- y ( i , j ) y^{(i,j)} y(i,j) 用户 j j j 给电影 i i i 的打分
- θ ( j ) \theta^{(j)} θ(j) 用户 j j j 的参数向量, θ ( j ) ∈ R n + 1 \theta^{(j)}\in \mathbb{R}^{n+1} θ(j)∈Rn+1
- x ( i ) x^{(i)} x(i) 电影 i i i 的特征向量
- 对于用户 j j j 和电影 i i i ,预测的打分为 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i)
- m ( j ) m^{(j)} m(j) 用户 j j j 评价的电影数量
优化目标
学习
θ
(
j
)
\theta^{(j)}
θ(j) :
min
θ
(
j
)
1
2
m
(
j
)
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
m
(
j
)
∑
k
=
1
n
(
θ
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}
θ(j)min2m(j)1i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2m(j)λk=1∑n(θk(j))2
其中,
λ
2
m
(
j
)
∑
k
=
1
n
(
θ
k
(
j
)
)
2
\frac{\lambda}{2m^{(j)}}\sum_{k=1}^{n}\left(\theta^{(j)}_k\right)^2
2m(j)λ∑k=1n(θk(j))2 为正则化项(正则化讲解详见7-2 正则化)。
由于
m
(
j
)
m^{(j)}
m(j) 不会影响
θ
(
j
)
\theta^{(j)}
θ(j) 的最小值,所以公式可化简为:
min
θ
(
j
)
1
2
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
k
=
1
n
(
θ
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}
θ(j)min21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(θk(j))2
学习
θ
(
1
)
,
θ
(
2
)
,
…
,
θ
(
n
u
)
\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)}
θ(1),θ(2),…,θ(nu) :
min
θ
(
1
)
,
…
,
θ
(
n
u
)
J
(
θ
(
1
)
,
θ
(
2
)
,
…
,
θ
(
n
u
)
)
\min _{\theta^{(1)}, \ldots, \theta^{\left(n_{u}\right)}}J\left(\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)}\right)
θ(1),…,θ(nu)minJ(θ(1),θ(2),…,θ(nu))
即:
min
θ
(
1
)
,
…
,
θ
(
n
u
)
1
2
∑
j
=
1
n
u
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
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} \\
θ(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
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
x
k
(
i
)
(
for
k
=
0
)
θ
k
(
j
)
:
=
θ
k
(
j
)
−
α
(
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
x
k
(
i
)
+
λ
θ
k
(
j
)
)
(
for
k
≠
0
)
\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}
θ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
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
x
k
(
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)}
∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j) 可以表示为
∂
∂
θ
k
(
j
)
J
(
θ
(
1
)
,
θ
(
2
)
,
…
,
θ
(
n
u
)
)
\frac{\partial}{\partial \theta_{k}^{(j)}}J\left(\theta^{(1)}, \theta^{(2)}, \ldots, \theta^{\left(n_{u}\right)}\right)
∂θk(j)∂J(θ(1),θ(2),…,θ(nu)) 。
文章内容整理自吴恩达机器学习视频教程。