机器学习应用-推荐算法概述

推荐算法

机器学习的一个常见应用。

我们以推荐电影来作为一个例子。

基于内容的推荐

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):jiy(i,j):jix(i)ixθ(j)jji(θ(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=1n(θ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=1ni:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nk=1n(θ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=1n(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=1mi:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1mk=1n(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=1ni:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nk=1n(θk(j))2θ(1),...,θ(n)x(1),...,x(m)x(1),...,x(m)min21i=1mi:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1mk=1n(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=1mk=1n(xk(i))2+2λj=1nk=1n(θk(j))2x(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))θxjiθTx

低秩矩阵分解

评分矩阵Y可以分解为θx。

这就是矩阵分解。

均值归一化

当出现一个新用户时,他的偏好θ,评分θx,都不知道。如何去设置初始值呢。

采取平均数的方法,默认他对每个电影的评分是电影的均值。然后去拟合合适的θ。

参考资料

B站吴恩达机器学习相关课程:https://www.bilibili.com/video/BV164411b7dx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值