9.2 协同过滤-机器学习笔记-斯坦福吴恩达教授
协同过滤(Collaborative Filtering)
回到上一节的问题,每部电影,我们都有评价其内容的特征向量 xxx :
但是,在现实中,不会有任何网站,任何人有精力,有能力去评估每部电影所具有的一些指数吧。因此,基于内容的推荐系统从构架初期,可能就会遭遇非常大的阻力。
假定我们先有了各个用户对电影的偏爱评估 θθθ :
θ(1)=(050),θ(2)=(050),θ(3)=(005),θ(4)=(050)\theta^{(1)}=\left(\begin{matrix}0\\5\\0\end{matrix}\right),\theta^{(2)}=\left(\begin{matrix}0\\5\\0\end{matrix}\right),\theta^{(3)}=\left(\begin{matrix}0\\0\\5\end{matrix}\right),\theta^{(4)}=\left(\begin{matrix}0\\5\\0\end{matrix}\right)θ(1)=⎝⎛050⎠⎞,θ(2)=⎝⎛050⎠⎞,θ(3)=⎝⎛005⎠⎞,θ(4)=⎝⎛050⎠⎞
并且,不知道电影的指数:
目标优化
现在,我们通过 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu) 来学习 x(i)x^{(i)}x(i) :
minx(i)=12∑j:(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑k=1n(xk(i))2\min_{x^{(i)}}=\frac 12 \sum_{j:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac {\lambda} 2 \sum_{k=1}^n(x^{(i)}_k)^2x(i)min=21j:(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(xk(i))2
则对于所有的电影指数 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm) :
minx(1),...,x(nm)=12∑i=1nm∑j:(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2\min_{x^{(1)},...,x^{(n_m)}}=\frac 12 \sum_{i=1}^{n_m} \sum_{j:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac {\lambda} 2 \sum_{i=1}^{n_m} \sum_{k=1}^n(x^{(i)}_k)^2x(1),...,x(nm)min=21i=1∑nmj:(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2
协同过滤算法
现在,我们拥有了评价用户的 θθθ 和评价商品的 xxx ,并且:
给定 θθθ 及用户对商品的评价,我们能估计 xxx 。
给定 xxx ,我们又能估计 θθθ 。
因此,就构成了 θ→x→θ→x...θ\rightarrow x\rightarrow θ\rightarrow x...θ→x→θ→x... 的优化序列,这便构成了协同过滤算法,即同时优化商品和用户具有的参数。
协同过滤的目标优化
- 推测用户喜好:给定 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm) ,估计 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu) :
minθ(1),...,θ(nu)=12∑j=1nu∑i:(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2\min_{θ^{(1)},...,θ^{(n_u)}}=\frac 12 \sum_{j=1}^{n_u} \sum_{i:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac {\lambda} 2 \sum_{j=1}^{n_u} \sum_{k=1}^n(θ^{(j)}_k)^2θ(1),...,θ(nu)min=21j=1∑nui:(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
- 推测商品内容:给定 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu) ,估计 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm) :
minx(1),...,x(nm)=12∑i=1nm∑j:(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2\min_{x^{(1)},...,x^{(n_m)}}=\frac 12 \sum_{i=1}^{n_m} \sum_{j:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac {\lambda} 2 \sum_{i=1}^{n_m} \sum_{k=1}^n(x^{(i)}_k)^2x(1),...,x(nm)min=21i=1∑nmj:(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2
- 协同过滤:同时优化 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm) 及 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu) :
minJ(x(1),...,x(nm);θ(1),...,θ(nu))\min J(x^{(1)},...,x^{(n_m)};θ^{(1)},...,θ^{(n_u)})minJ(x(1),...,x(nm);θ(1),...,θ(nu))
亦即:
minx(1),...,x(nm);θ(1),...,θ(nu)12∑(i,j):r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2+λ2∑j=1nu∑k=1n(θk(j))2\min_{x^{(1)},...,x^{(n_m)};θ^{(1)},...,θ^{(n_u)}} \frac 12 \sum_{(i,j):r(i,j)=1} ((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac {\lambda} 2 \sum_{i=1}^{n_m} \sum_{k=1}^n(x^{(i)}_k)^2 + \frac {\lambda} 2 \sum_{j=1}^{n_u} \sum_{k=1}^n(θ^{(j)}_k)^2x(1),...,x(nm);θ(1),...,θ(nu)min21(i,j):r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2+2λj=1∑nuk=1∑n(θk(j))2
∑(i,j):r(i,j)=1\sum_{(i,j):r(i,j)=1}∑(i,j):r(i,j)=1 反映了用户和商品所有有效配对。
算法流程
使用了协同过滤的推荐算法流程为:
随机初始化 x(1),...,x(nm);θ(1),...,θ(nu)x^{(1)},...,x^{(n_m)};\ θ^{(1)},...,θ^{(n_u)}x(1),...,x(nm); θ(1),...,θ(nu) 为一些较小值,与神经网络的参数初始化类似,为避免系统陷入僵死状态,不使用 0 值初始化。
使用梯度下降法来最小化 J(x(1),...,x(nm);θ(1),...,θ(nu))J(x^{(1)},...,x^{(n_m)};\ θ^{(1)},...,θ^{(n_u)})J(x(1),...,x(nm); θ(1),...,θ(nu)) ,对于 j=1,2,..,nu,i=1,2,...,nmj=1,2,..,n_u , i=1,2,...,n_mj=1,2,..,nu,i=1,2,...,nm ,参数的更新式为:
xk(i):=xk(i)−α(∑j:(i,j)=1((θ(j))Tx(i)−y(i,j))θk(j)+λxk(i))x_k^{(i)}:=x_k^{(i)} - \alpha (\sum_{j:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})\theta^{(j)}_k+\lambda x^{(i)}_k)xk(i):=xk(i)−α(j:(i,j)=1∑((θ(j))Tx(i)−y(i,j))θk(j)+λxk(i))
θk(j):=θk(j)−α(∑i:(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))\theta_k^{(j)}:=\theta_k^{(j)} - \alpha (\sum_{i:(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k+\lambda \theta^{(j)}_k)θk(j):=θk(j)−α(i:(i,j)=1∑((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))
- 如果用户的偏好向量为 θθθ ,而商品的特征向量为 xxx ,则可以预测用户评价为 θTxθ^TxθTx 。
因为协同过滤算法 θθθ 和 xxx 相互影响,因此,二者都没必要使用偏置 θ0θ_0θ0 和 x0x_0x0 ,即, x∈Rn、θ∈Rnx∈\R^n 、 θ∈\R^nx∈Rn、θ∈Rn 。
获得类似电影
当我们获得了电影 iii 的特征向量后,我们就可以通过计算 ∣∣x(j)−x(i)∣∣||x^{(j)}−x^{(i)}||∣∣x(j)−x(i)∣∣ 来比较电影 jjj 与电影 iii 的相似度。那么,给予了电影 jjj 足够好评的用户,也会被推荐到类似的电影。
9.2 协同过滤-机器学习笔记-斯坦福吴恩达教授相关推荐
- 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授
机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...
- 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
多分类问题 我们手上包含有手写字符的数据集,该数据集来自斯坦福机器学习的课后作业,每个字符图片大小为 20×20 ,总的样本规模为 5000×400 , 我们的神经网络设计如下,包含 1 个隐含层,隐 ...
- 10.1 掌握大数据-机器学习笔记-斯坦福吴恩达教授
掌握大数据 在算法分析与优化一节中,我们就提到,在机器学习界流传着这样一句话: It's not who has the best algorithm that wins. It's who has ...
- 9.1 基于内容的推荐系统-机器学习笔记-斯坦福吴恩达教授
基于内容的推荐系统 推荐系统是机器学习最重要的应用之一,你所知道的淘宝.亚马逊.facebook.豆瓣这些网站都把推荐系统作为了核心.在某个电影资讯的网站,有那么一份用户对于电影的打分(1 - 5 分 ...
- 8.1 概述-机器学习笔记-斯坦福吴恩达教授
概述 异常检测(Anomaly Detection)是机器学习里面的一个常见应用,机器通过训练,将知道什么样的样本是正常样本,从而具备识别异常样本的能力. 飞机制造商在飞机引擎从生产线上流入市场前,会 ...
- 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授
二分 K-Means 算法 该算法补充自 <机器学习实战> 一书 常规的 K-Means 算法的误差通常只能收敛到局部最小,在此,引入一种称为二分 K-Means(bisecting km ...
- 6.3 优化-机器学习笔记-斯坦福吴恩达教授
优化 和其他机器学习算法一样,K-Means 也要评估并且最小化聚类代价,在引入 K-Means 的代价函数之前,先引入如下定义: μc(i)=样本x(i)被分配到的聚类中心μ^{(i)}_c=样本\ ...
- 6.1 无监督学习-机器学习笔记-斯坦福吴恩达教授
无监督学习 从本节开始,将正式进入到无监督学习(Unsupervised Learning)部分.无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不 ...
- 5.7 程序示例--基于 SMO 的 SVM 模型-机器学习笔记-斯坦福吴恩达教授
程序示例–基于 SMO 的 SVM 模型 在这里,我们会实现一个基于 SMO 的 SVM 模型,在其中,提供了简化版 SMO 和 完整版 SMO 的实现. 简化版 SMO:不使用启发式方法选择 (α( ...
最新文章
- CUDA运行时 Runtime(一)
- 转载JQuery 获取设置值,添加元素详解
- 对Lucene PhraseQuery的slop的理解[转载]
- 惊现试衣间照片流出??
- linux内核那些事之struct page
- ajax回显500因为#与$的原因
- phpstudy_pro MySQL启动失败的原因
- AcWing 801. 二进制中1的个数
- VS Code自定义代码颜色
- CCF-CSP认证历年真题解
- win7此计算机无法加入家庭组,Win7系统无法加入家庭组问题的解决方法
- 80psi等于多少kpa_1公斤的气压是多少KPA?
- 如何关闭华为自动杀进程_如何彻底关闭windows 10的 自动更新
- tansig、logsig公式与导数推导
- 网页转pdf乱码问题,楷体部分出乱码
- 实验六 医学图像的增强(二)
- Teams认证话机系列(2)--AudioCodes C450HD
- 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP
- 使用c++,类实现求圆柱体体积
- 一文总览Polkadot生态