推荐算法
机器学习的一个常见应用。
我们以推荐电影来作为一个例子。
基于内容的推荐
r ( i , j ) : 表 示 用 户 j 对 电 影 i 有 评 分 y ( i , j ) : 用 户 j 对 电 影 i 的 评 分 x ( i ) : 第 i 个 电 影 存 在 的 特 征 x 列 向 量 。 θ ( j ) : 第 j 个 用 户 对 不 同 特 征 的 评 价 列 向 量 。 对 于 用 户 j , 电 影 i 来 说 , 预 测 的 评 分 是 : ( θ ( j ) ) T ( x ( i ) ) , 含 义 为 用 户 j 的 偏 好 ∗ 电 影 包 含 的 特 征 \begin{aligned} & r(i,j):表示用户j对电影i有评分\\ & y^{(i,j)}:用户j对电影i的评分\\ \\ & x^{(i)}:第i个电影存在的特征x列向量。\\ & \theta^{(j)}:第j个用户对不同特征的评价列向量。\\ & 对于用户j,电影i来说,预测的评分是:(\theta^{(j)})^T(x^{(i)}),含义为用户j的偏好*电影包含的特征\\ \end{aligned} r(i,j):表示用户j对电影i有评分y(i,j):用户j对电影i的评分x(i):第i个电影存在的特征x列向量。θ(j):第j个用户对不同特征的评价列向量。对于用户j,电影i来说,预测的评分是:(θ(j))T(x(i)),含义为用户j的偏好∗电影包含的特征
已知电影的特征向量,和部分已知的用户评价时,我们要预测用户j对某一电影的评分,则可以通过计算用户j的电影特征偏好Θ来实现。
由于统计出每个用户对电影特征的偏好Θ时不现实的,因此我们要进行拟合Θ。
即
对
于
用
户
j
,
最
小
化
预
测
评
分
(
θ
(
j
)
)
T
(
x
(
i
)
)
与
真
实
评
分
y
(
i
,
j
)
的
欧
氏
距
离
,
即对于用户j,最小化预测评分(\theta^{(j)})^T(x^{(i)})\ \ 与\ \ 真实评分y^{(i,j)}的欧氏距离,
即对于用户j,最小化预测评分(θ(j))T(x(i)) 与 真实评分y(i,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}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{k=1}^n(\theta_k^{(j)})^2
θ(j)min21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(θk(j))2
对于最小化用户j的电影特征偏好后,对所有用户的偏好都可进行拟合。
学
习
θ
(
1
)
,
θ
(
2
)
,
.
.
.
,
θ
(
n
)
min
θ
(
1
)
,
θ
(
2
)
,
.
.
.
,
θ
(
n
)
1
2
∑
j
=
1
n
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
∑
k
=
1
n
(
θ
k
(
j
)
)
2
学习\theta^{(1)},\theta^{(2)},...,\theta^{(n)}\\ \min_{\theta^{(1)},\theta^{(2)},...,\theta^{(n)}}\frac{1}{2}\sum_{j=1}^n\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{j=1}^n\sum_{k=1}^n(\theta_k^{(j)})^2
学习θ(1),θ(2),...,θ(n)θ(1),θ(2),...,θ(n)min21j=1∑ni:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nk=1∑n(θk(j))2
使用梯度下降计算结果
θ
k
(
j
)
:
=
θ
k
(
j
)
−
α
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
(
i
)
)
−
y
(
i
,
j
)
)
x
k
(
i
)
(
f
o
r
k
=
0
)
θ
k
(
j
)
:
=
θ
k
(
j
)
−
α
(
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
(
i
)
)
−
y
(
i
,
j
)
)
x
k
(
i
)
+
λ
θ
k
(
j
)
)
(
f
o
r
k
≠
0
)
\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\sum_{i:r(i,j)=1}((\theta^{j})^Tx^{(i)})-y^{(i,j)})x_k^{(i)}\quad (for\ k=0)\\ \theta_k^{(j)}:=\theta_k^{(j)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{j})^Tx^{(i)})-y^{(i,j)})x_k^{(i)}+\lambda\theta_k^{(j)})\quad (for\ k\neq0)\\
θ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)
协同过滤
当电影的特征信息不全,用户的偏好也不全的时候,要预测用户评分时,就要考虑其他的拟合方法了。
下面有两种思路。
- 随机初始化用户的偏好向量Θ,拟合电影特征向量x。
- 随机初始化电影的特征向量x,拟合用户偏好向量Θ。
这里可以采取两种方法交错执行,逐渐逼近最有的Θ和x。
拟合电影的特征向量只需要将之前的Θ换成x即可。
随
机
用
户
的
偏
好
向
量
θ
(
1
)
,
.
.
.
,
θ
(
n
)
学
习
电
影
特
征
向
量
x
(
i
)
min
x
(
i
)
1
2
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
k
=
1
n
(
x
k
(
i
)
)
2
随机用户的偏好向量\theta^{(1)},...,\theta^{(n)}\quad学习电影特征向量x^{(i)}\\ \min_{x^{(i)}}\frac{1}{2}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{k=1}^n(x_k^{(i)})^2
随机用户的偏好向量θ(1),...,θ(n)学习电影特征向量x(i)x(i)min21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(xk(i))2
继续对所有的电影特征向量x进行拟合。
min
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
1
2
∑
i
=
1
m
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
i
=
1
m
∑
k
=
1
n
(
x
k
(
i
)
)
2
\min_{x^{(1)},x^{(2)},...,x^{(m)}}\frac{1}{2}\sum_{i=1}^m\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^m\sum_{k=1}^n(x_k^{(i)})^2
x(1),x(2),...,x(m)min21i=1∑mi:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑mk=1∑n(xk(i))2
注意与拟合θ的区别。
Θ与x交替拟合,逐渐逼近最优的Θ和x。
优化
很明显,交替拟合,看似是个正确的解,但显然是非常浪费时间的。
比较拟合Θ和拟合x。
确
定
x
(
1
)
,
.
.
.
,
x
(
m
)
学
习
θ
(
1
)
,
.
.
.
,
θ
(
n
)
min
θ
(
1
)
,
.
.
.
,
θ
(
n
)
1
2
∑
j
=
1
n
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
∑
k
=
1
n
(
θ
k
(
j
)
)
2
确
定
θ
(
1
)
,
.
.
.
,
θ
(
n
)
学
习
x
(
1
)
,
.
.
.
,
x
(
m
)
min
x
(
1
)
,
.
.
.
,
x
(
m
)
1
2
∑
i
=
1
m
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
i
=
1
m
∑
k
=
1
n
(
x
k
(
i
)
)
2
\begin{aligned} 确定& x^{(1)},...,x^{(m)}\quad学习\theta^{(1)},...,\theta^{(n)}\\ & \min_{\theta^{(1)},...,\theta^{(n)}}\frac{1}{2}\sum_{j=1}^n\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{j=1}^n\sum_{k=1}^n(\theta_k^{(j)})^2\\ 确定& \theta^{(1)},...,\theta^{(n)}\quad学习x^{(1)},...,x^{(m)}\\ & \min_{x^{(1)},...,x^{(m)}}\frac{1}{2}\sum_{i=1}^m\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^m\sum_{k=1}^n(x_k^{(i)})^2\\ \end{aligned}
确定确定x(1),...,x(m)学习θ(1),...,θ(n)θ(1),...,θ(n)min21j=1∑ni:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nk=1∑n(θk(j))2θ(1),...,θ(n)学习x(1),...,x(m)x(1),...,x(m)min21i=1∑mi:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑mk=1∑n(xk(i))2
将上面的两个合在一起。
最
小
化
x
,
θ
J
(
x
(
1
)
,
.
.
.
,
x
(
m
)
,
θ
(
1
)
,
.
.
.
,
θ
(
n
)
)
=
1
2
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
i
=
1
m
∑
k
=
1
n
(
x
k
(
i
)
)
2
+
λ
2
∑
j
=
1
n
∑
k
=
1
n
(
θ
k
(
j
)
)
2
即
最
小
化
代
价
函
数
min
x
(
1
)
,
.
.
.
,
x
(
m
)
θ
(
1
)
,
.
.
.
,
θ
(
n
)
J
(
x
(
1
)
,
.
.
.
,
x
(
m
)
,
θ
(
1
)
,
.
.
.
,
θ
(
n
)
)
最小化x,\theta\\ J(x^{(1)},...,x^{(m)},\theta^{(1)},...,\theta^{(n)})=\frac{1}{2}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^m\sum_{k=1}^n(x_k^{(i)})^2+\frac{\lambda}{2}\sum_{j=1}^n\sum_{k=1}^n(\theta_k^{(j)})^2\\ 即最小化代价函数\min_{x^{(1)},...,x^{(m)}\\\theta^{(1)},...,\theta^{(n)}}J(x^{(1)},...,x^{(m)},\theta^{(1)},...,\theta^{(n)})
最小化x,θJ(x(1),...,x(m),θ(1),...,θ(n))=21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑mk=1∑n(xk(i))2+2λj=1∑nk=1∑n(θk(j))2即最小化代价函数x(1),...,x(m)θ(1),...,θ(n)minJ(x(1),...,x(m),θ(1),...,θ(n))
那么我们就可以初始化Θ和x后,将他们同时使用梯度下降进行拟合了。
1.
随
机
初
始
化
x
(
1
)
,
.
.
.
,
x
(
m
)
,
θ
(
1
)
,
.
.
.
,
θ
(
n
)
2.
最
小
化
代
价
函
数
J
(
x
(
1
)
,
.
.
.
,
x
(
m
)
,
θ
(
1
)
,
.
.
.
,
θ
(
n
)
)
使
用
梯
度
下
降
:
x
k
(
i
)
:
=
x
k
(
i
)
−
α
(
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
(
i
)
)
−
y
(
i
,
j
)
)
θ
k
(
j
)
+
λ
x
k
(
i
)
)
θ
k
(
j
)
:
=
θ
k
(
j
)
−
α
(
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
(
i
)
)
−
y
(
i
,
j
)
)
x
k
(
i
)
+
λ
θ
k
(
j
)
)
3.
最
后
求
得
的
θ
和
x
计
算
预
测
用
户
j
对
电
影
i
的
评
分
θ
T
x
\begin{aligned} 1.& 随机初始化x^{(1)},...,x^{(m)},\theta^{(1)},...,\theta^{(n)}\\ 2.& 最小化代价函数J(x^{(1)},...,x^{(m)},\theta^{(1)},...,\theta^{(n)})\\ & 使用梯度下降:\\ & x_k^{(i)}:=x_k^{(i)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{j})^Tx^{(i)})-y^{(i,j)})\theta_k^{(j)}+\lambda x_k^{(i)})\\ & \theta_k^{(j)}:=\theta_k^{(j)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{j})^Tx^{(i)})-y^{(i,j)})x_k^{(i)}+\lambda\theta_k^{(j)})\\ 3.& 最后求得的\theta和x计算预测用户j对电影i的评分\theta^Tx \end{aligned}
1.2.3.随机初始化x(1),...,x(m),θ(1),...,θ(n)最小化代价函数J(x(1),...,x(m),θ(1),...,θ(n))使用梯度下降:xk(i):=xk(i)−α(i:r(i,j)=1∑((θj)Tx(i))−y(i,j))θk(j)+λxk(i))θk(j):=θk(j)−α(i:r(i,j)=1∑((θj)Tx(i))−y(i,j))xk(i)+λθk(j))最后求得的θ和x计算预测用户j对电影i的评分θTx
低秩矩阵分解
评分矩阵Y可以分解为θx。
这就是矩阵分解。
均值归一化
当出现一个新用户时,他的偏好θ,评分θx,都不知道。如何去设置初始值呢。
采取平均数的方法,默认他对每个电影的评分是电影的均值。然后去拟合合适的θ。
参考资料
B站吴恩达机器学习相关课程:https://www.bilibili.com/video/BV164411b7dx