吴恩达机器学习—推荐系统(13)

本文详细介绍了吴恩达机器学习课程中的推荐系统,包括基于内容的推荐系统和协同过滤。在基于内容的推荐系统中,通过优化目标函数和梯度下降预测用户对商品的偏好;协同过滤则在无法获取所有商品特征的情况下,学习用户和电影的参数。最后,文章还讨论了低秩矩阵分解和均值规范化在推荐系统中的应用。
摘要由CSDN通过智能技术生成

1. 基于内容的推荐系统

(1)推荐系统的应用很广泛:

1)电子商务:根据客户购买和浏览商品推荐相关商品
2)电影和视频推荐:根据视频浏览记录,喜好推荐
3)音乐电台的推荐
4)网页及新闻:推荐根据网页浏览记录,推荐相关新闻和网页
5)社交网络:推荐好友,信息流的会话推荐
6)广告推荐等

(2)电影推荐举例

电影资讯网站,用户对于电影的打分(1 - 5 分),代表用户没有评价过该电影,数据,对于每部电影都给出了两个评价指数,构成了电影的二维特征向量 x :x1=电影的浪漫指数,x2=电影的动作指数,详情如下:

movieAcBoCaDaromance(x1)action(x2)
Love55000.90
Romance5??01.00.01
Cute love?40?0.990
Nonstop car00540.11.0
Swords vs karate005?00.9

假设用户 i 对于每个指数的偏好程度由向量 θ(i)所衡量,则估计该用户对电影 j 的打分为: y ( i , j ) = ( θ ( j ) ) T x ( i ) y^{(i,j)}=(θ^{(j)})^Tx^{(i)} y(i,j)=(θ(j))Tx(i)
另外,引入 r(i,j) 表示第 i 个用户是否对第 j 部电影进行了打分,打分了为1,未打分为0。

(3)优化目标函数

对用户 j 打分状况作出最精确的预测,优化函数为: m i n ( θ ( j ) ) = 1 2 ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( θ k ( j ) ) 2 min (θ^{(j)}) =\frac{1}{2}\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{k=1}^n(θ^{(j)}_k)^2 min(θ(j))=21i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λk=1n(θk(j))2那么对于所用用户 1,2,…,nu ,需要: m i n ( θ ( 1 ) , θ ( 2 ) , … … , θ ( 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 (θ^{(1)},θ^{(2)},……,θ^{(n_u)}) =\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 min(θ(1)θ(2)θ(nu))=21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2则得到代价函数 J ( θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) ) J(θ^{(1)},θ^{(2)},...,θ^{(n_u)}) J(θ(1),θ(2),...,θ(nu)) 为: J = 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 J=\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 J=21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2

(4)梯度下降

θ 0 j = θ 0 j − α ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x 0 ( i ) θ^{j}_0 = θ^{j}_0 - α\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})x^{(i)}_0 θ0j=θ0jαi:r(i,j)=1((θ(j))Tx(i)y(i,j))x0(i) θ k j = θ k j − α ( ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k j ) , k ≠ 0 θ^{j}_k = θ^{j}_k - α(\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})x^{(i)}_k+λθ^{j}_k)\quad\quad,\quad\quad k \neq 0 θkj=θkjα(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθkj),k̸=0
以上是基于内容的推荐系统,它是基于线性回归的推荐系统,根据商品内容来判断用户可能对某个商品的偏好程度。

2. 协同过滤

在现实中,不能得到每部电影所具有的一些指数。因此,引入协同过滤,协同过滤能同时学习用户的参数和电影的特征。

(1)目标优化

假设知道用户对于不同种类电影的喜好( θ ( j ) θ^{(j)} θ(j))以及对各个电影的评分, 就大致可以得到各个电影的特征向量( x ( i ) x^{(i)} x(i)),方法为:
m i n ( x ( i ) ) = 1 2 ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( x k ( i ) ) 2 min(x^{(i)}) = \frac12\sum_{j:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{k=1}^{n}(x^{(i)}_k)^2 min(x(i))=21j:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λk=1n(xk(i))2给定 θ ( 1 ) , θ ( 2 ) , … … , θ ( n u ) 求 x ( 1 ) , x ( 2 ) , … … , x ( n m ) θ^{(1)},θ^{(2)},……,θ^{(n_u)}求x^{(1)},x^{(2)},……,x^{(n_m)} θ(1)θ(2)θ(nu)x(1)x(2)x(nm): m i n ( x ( 1 ) , x ( 2 ) , … … , x ( n m ) ) = 1 2 ∑ i = 1 n m ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 min(x^{(1)},x^{(2)},……,x^{(n_m)}) = \frac12\sum_{i=1}^{n_m}\sum_{j:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^{(i)}_k)^2 min(x(1)x(2)x(nm))=21i=1nmj:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2
给 定 x ( 1 ) , x ( 2 ) , … … , x ( n m ) 求 θ ( 1 ) , θ ( 2 ) , … … , θ ( n u ) : 给定x^{(1)},x^{(2)},……,x^{(n_m)}求θ^{(1)},θ^{(2)},……,θ^{(n_u)}: x(1)x(2)x(nm)θ(1)θ(2)θ(nu):
m i n ( θ ( 1 ) , θ ( 2 ) , … … , θ ( 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 (θ^{(1)},θ^{(2)},……,θ^{(n_u)}) =\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 min(θ(1)θ(2)θ(nu))=21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2循环θ——>x——>θ——>……的过程

(2)协同过滤算法

1)给定 x ( 1 ) , x ( 2 ) , … , x ( n m ) 求 θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) x^{(1)},x^{(2)},…,x^{(n_m)}求θ^{(1)},θ^{(2)},…,θ^{(n_u)} x(1)x(2)x(nm)θ(1)θ(2)θ(nu)
2)给定 θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) 求 x ( 1 ) , x ( 2 ) , … , x ( n m ) θ^{(1)},θ^{(2)},…,θ^{(n_u)}求x^{(1)},x^{(2)},…,x^{(n_m)} θ(1)θ(2)θ(nu)x(1)x(2)x(nm)
3)把两个结合起来,综合的优化函数,最小化 x ( 1 ) , x ( 2 ) , … , x ( n m ) 和 θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) x^{(1)},x^{(2)},…,x^{(n_m)}和θ^{(1)},θ^{(2)},…,θ^{(n_u)} x(1)x(2)x(nm)θ(1)θ(2)θ(nu)
J ( x ( 1 ) , x ( 2 ) , … , x ( n m ) , θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) ) = 1 2 ∑ ( i : j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J(x^{(1)},x^{(2)},…,x^{(n_m)},θ^{(1)},θ^{(2)},…,θ^{(n_u)}) = \frac12\sum_{(i:j):r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^{(i)}_k)^2+\fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 J(x(1)x(2)x(nm),θ(1)θ(2)θ(nu))=21(i:j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2+2λj=1nuk=1n(θk(j))2
算法实现:
1)用很小的数随机初始化 x ( 1 ) , x ( 2 ) , … , x ( n m ) 和 θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) x^{(1)},x^{(2)},…,x^{(n_m)}和θ^{(1)},θ^{(2)},…,θ^{(n_u)} x(1)x(2)x(nm)θ(1)θ(2)θ(nu)
2)用梯度下降求解 J ( x ( 1 ) , x ( 2 ) , … , x ( n m ) , θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) ) J(x^{(1)},x^{(2)},…,x^{(n_m)},θ^{(1)},θ^{(2)},…,θ^{(n_u)}) J(x(1)x(2)x(nm),θ(1)θ(2)θ(nu)) x k ( i ) = x k ( i ) − α ( ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( j ) + λ x k ( i ) ) , k ≠ 0 x^{(i)}_k = x^{(i)}_k - α(\sum_{j:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})θ^{(j)}_k+λx^{(i)}_k)\quad\quad,\quad\quad k \neq 0 xk(i)=xk(i)α(j:r(i,j)=1((θ(j))Tx(i)y(i,j))θk(j)+λxk(i)),k̸=0 θ k ( j ) = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) , k ≠ 0 θ^{(j)}_k = θ^{(j)}_k - α(\sum_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})x^{(i)}_k+λθ^{(j)}_k)\quad\quad,\quad\quad k \neq 0 θk(j)=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j)),k̸=03)通过用户的参数 θ θ θ和求出的电影特征 x x x预测电影的得分: y ( i , j ) = ( θ ( j ) ) T x ( i ) y^{(i,j)}=(θ^{(j)})^Tx^{(i)} y(i,j)=(θ(j))Tx(i)

3. 矢量化:低轶矩阵分解

将例子中用户对电影的评分表格转化为矢量,则表示为:
Y = ( 5 5 0 0 5 ? ? 0 ? 4 0 ? 0 0 5 4 0 0 5 0 ) , 其 中 n m = 5 , n u = 4 , y ( i , j ) 为 一 个 元 素 Y=\begin{pmatrix} 5 & 5&0&0 \\5 &?&?&0 \\? & 4&0&? \\0& 0&5&4 \\0 & 0&5&0 \\ \end{pmatrix} ,其中n_m=5,n_u=4, y^{(i,j)}为一个元素 Y=55?005?4000?05500?40,nm=5,nu=4,y(i,j)预测分数为: ( ( θ ( 1 ) ) T x ( 1 ) ( θ ( 2 ) ) T x ( 1 ) … … ( θ ( n u ) ) T x ( 1 ) ( θ ( 1 ) ) T x ( 2 ) ( θ ( 2 ) ) T x ( 2 ) … … ( θ ( n u ) ) T x ( 2 ) … … … … … … … … ( θ ( 1 ) ) T x ( n m ) ( θ ( 2 ) ) T x ( n m ) … … ( θ ( n u ) ) T x ( n m ) ) = X Θ T \begin{pmatrix}( θ^{(1)})^Tx^{(1)} &( θ^{(2)})^Tx^{(1)} &……&( θ^{(n_u)})^Tx^{(1)} \\( θ^{(1)})^Tx^{(2)} &( θ^{(2)})^Tx^{(2)} &……&( θ^{(n_u)})^Tx^{(2)} \\……&……&……&……\\( θ^{(1)})^Tx^{(n_m)} &( θ^{(2)})^Tx^{(n_m)} &……&( θ^{(n_u)})^Tx^{(n_m)} \\ \end{pmatrix}=X Θ^T (θ(1))Tx(1)(θ(1))Tx(2)(θ(1))Tx(nm)(θ(2))Tx(1)(θ(2))Tx(2)(θ(2))Tx(nm)(θ(nu))Tx(1)(θ(nu))Tx(2)(θ(nu))Tx(nm)=XΘT X = ( ( x ( 1 ) ) T ( x ( 2 ) ) T … … ( x ( n m ) ) T ) Θ = ( ( θ ( 1 ) ) T ( θ ( 2 ) ) T … … ( θ ( n u ) ) T ) X=\begin{pmatrix}\\ (x^{(1)})^T\\ (x^{(2)})^T\\ ……\\ (x^{(n_m)})^T\\ \end{pmatrix} \quad \quad \quadΘ=\begin{pmatrix}\\(θ^{(1)})^T\\ (θ^{(2)})^T\\ ……\\ (θ^{(n_u)})^T\\ \end{pmatrix} X=(x(1))T(x(2))T(x(nm))TΘ=(θ(1))T(θ(2))T(θ(nu))T
X X X 的每一行描述了一部电影的内容, Θ T Θ^T ΘT 的每一列描述了用户对于电影内容偏好程度,亦即,我们将原来稀疏的矩阵分解为了 X X X Θ Θ Θ
用这个方法求取 X X X Θ Θ Θ ,获得推荐系统需要的参数,称之为低秩矩阵分解,该方法不仅能在编程时直接通过向量化的手法获得参数,还通过矩阵分解节省了内存空间。

注:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵

4. 均值规范化

假定现在新注册了一个用户 Eve(5),他还没有对任何电影作出评价,则有 Y = ( 5 5 0 0 ? 5 ? ? 0 ? ? 4 0 ? ? 0 0 5 4 ? 0 0 5 0 ? ) Y=\begin{pmatrix} 5 & 5&0&0&? \\5 &?&?&0&? \\? & 4&0&?&? \\0& 0&5&4&? \\0 & 0&5&0&? \\ \end{pmatrix} Y=55?005?4000?05500?40?????则 Eve(5) 对于电影内容的偏好应当被参数 θ(5) 所评估,最小化代价函数过程: J ( x ( 1 ) , x ( 2 ) , … , x ( n m ) , θ ( 1 ) , θ ( 2 ) , … , θ ( n u ) ) = 1 2 ∑ ( i : j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J(x^{(1)},x^{(2)},…,x^{(n_m)},θ^{(1)},θ^{(2)},…,θ^{(n_u)}) = \frac12\sum_{(i:j):r(i,j)=1}((θ^{(j)})^Tx^{(i)}−y^{(i,j)})^2+\fracλ2\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^{(i)}_k)^2+\fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 J(x(1)x(2)x(nm),θ(1)θ(2)θ(nu))=21(i:j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2+2λj=1nuk=1n(θk(j))2由于该用户没有对任何电影作出评价, θ(5) 能影响上式的项只有: λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 \fracλ2\sum_{j=1}^{n_u}\sum_{k=1}^n(θ^{(j)}_k)^2 2λj=1nuk=1n(θk(j))2如果令 θ(5)=均为0,则得到对任何电影的评价将会被预测为0,这不符合现实情况,所以直接这么处理不合适,为了这个解决这个问题,需要先求取各个电影的平均得分 μ μ μ μ T = ( 2.5 2.5 2 2.25 1.25 ) μ^T=\begin{pmatrix} 2.5&2.5&2&2.25&1.25 \\ \end{pmatrix} μT=(2.52.522.251.25)并求取 Y − μ Y−μ Yμ ,对 Y Y Y 进行均值标准化: Y − μ = ( 2.5 2.5 − 2.5 − 2.5 ? 2.5 ? ? − 2.5 ? ? 2 − 2 ? ? − 2.25 − 2.25 2.75 1.75 ? − 1.25 − 1.25 3.75 − 1.25 ? ) Y−μ=\begin{pmatrix} 2.5 & 2.5&-2.5&-2.5&? \\2.5 &?&?&-2.5&? \\? & 2&-2&?&? \\-2.25& -2.25&2.75&1.75&? \\-1.25 & -1.25&3.75&-1.25&? \\ \end{pmatrix} Yμ=2.52.5?2.251.252.5?22.251.252.5?22.753.752.52.5?1.751.25?????对于用户 j ,他对电影 i 的评分就为: y ( i , j ) = ( θ ( i ) ) T x ( j ) + μ i y^{(i,j)}=(θ^{(i)})^Tx^{(j)}+μ_i y(i,j)=(θ(i))Tx(j)+μi。所以 Eve(5)的评分为: μ i μ_i μi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值