协同过滤(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) :
min⁡x(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​=21​j:(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​) :
min⁡x(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​=21​i=1∑nm​​j:(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2

协同过滤算法

现在,我们拥有了评价用户的 θθθ 和评价商品的 xxx ,并且:

给定 θθθ 及用户对商品的评价,我们能估计 xxx 。
给定 xxx ,我们又能估计 θθθ 。
因此,就构成了 θ→x→θ→x...θ\rightarrow x\rightarrow θ\rightarrow x...θ→x→θ→x... 的优化序列,这便构成了协同过滤算法,即同时优化商品和用户具有的参数。

协同过滤的目标优化

  1. 推测用户喜好:给定 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​=21​j=1∑nu​​i:(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

  1. 推测商品内容:给定 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu​) ,估计 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm​) :

min⁡x(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​=21​i=1∑nm​​j:(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2

  1. 协同过滤:同时优化 x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm​) 及 θ(1),...,θ(nu)θ^{(1)},...,θ^{(n_u)}θ(1),...,θ(nu​) :

min⁡J(x(1),...,x(nm);θ(1),...,θ(nu))\min J(x^{(1)},...,x^{(n_m)};θ^{(1)},...,θ^{(n_u)})minJ(x(1),...,x(nm​);θ(1),...,θ(nu​))

亦即:

min⁡x(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​)min​21​(i,j):r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

∑(i,j):r(i,j)=1\sum_{(i,j):r(i,j)=1}∑(i,j):r(i,j)=1​ 反映了用户和商品所有有效配对。

算法流程

使用了协同过滤的推荐算法流程为:

  1. 随机初始化 x(1),...,x(nm);θ(1),...,θ(nu)x^{(1)},...,x^{(n_m)};\ θ^{(1)},...,θ^{(n_u)}x(1),...,x(nm​); θ(1),...,θ(nu​) 为一些较小值,与神经网络的参数初始化类似,为避免系统陷入僵死状态,不使用 0 值初始化。

  2. 使用梯度下降法来最小化 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)​)

  1. 如果用户的偏好向量为 θθθ ,而商品的特征向量为 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 协同过滤-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

    机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...

  2. 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授

    多分类问题 我们手上包含有手写字符的数据集,该数据集来自斯坦福机器学习的课后作业,每个字符图片大小为 20×20 ,总的样本规模为 5000×400 , 我们的神经网络设计如下,包含 1 个隐含层,隐 ...

  3. 10.1 掌握大数据-机器学习笔记-斯坦福吴恩达教授

    掌握大数据 在算法分析与优化一节中,我们就提到,在机器学习界流传着这样一句话: It's not who has the best algorithm that wins. It's who has ...

  4. 9.1 基于内容的推荐系统-机器学习笔记-斯坦福吴恩达教授

    基于内容的推荐系统 推荐系统是机器学习最重要的应用之一,你所知道的淘宝.亚马逊.facebook.豆瓣这些网站都把推荐系统作为了核心.在某个电影资讯的网站,有那么一份用户对于电影的打分(1 - 5 分 ...

  5. 8.1 概述-机器学习笔记-斯坦福吴恩达教授

    概述 异常检测(Anomaly Detection)是机器学习里面的一个常见应用,机器通过训练,将知道什么样的样本是正常样本,从而具备识别异常样本的能力. 飞机制造商在飞机引擎从生产线上流入市场前,会 ...

  6. 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授

    二分 K-Means 算法 该算法补充自 <机器学习实战> 一书 常规的 K-Means 算法的误差通常只能收敛到局部最小,在此,引入一种称为二分 K-Means(bisecting km ...

  7. 6.3 优化-机器学习笔记-斯坦福吴恩达教授

    优化 和其他机器学习算法一样,K-Means 也要评估并且最小化聚类代价,在引入 K-Means 的代价函数之前,先引入如下定义: μc(i)=样本x(i)被分配到的聚类中心μ^{(i)}_c=样本\ ...

  8. 6.1 无监督学习-机器学习笔记-斯坦福吴恩达教授

    无监督学习 从本节开始,将正式进入到无监督学习(Unsupervised Learning)部分.无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不 ...

  9. 5.7 程序示例--基于 SMO 的 SVM 模型-机器学习笔记-斯坦福吴恩达教授

    程序示例–基于 SMO 的 SVM 模型 在这里,我们会实现一个基于 SMO 的 SVM 模型,在其中,提供了简化版 SMO 和 完整版 SMO 的实现. 简化版 SMO:不使用启发式方法选择 (α( ...

最新文章

  1. CUDA运行时 Runtime(一)
  2. 转载JQuery 获取设置值,添加元素详解
  3. 对Lucene PhraseQuery的slop的理解[转载]
  4. 惊现试衣间照片流出??
  5. linux内核那些事之struct page
  6. ajax回显500因为#与$的原因
  7. phpstudy_pro MySQL启动失败的原因
  8. AcWing 801. 二进制中1的个数
  9. VS Code自定义代码颜色
  10. CCF-CSP认证历年真题解
  11. win7此计算机无法加入家庭组,Win7系统无法加入家庭组问题的解决方法
  12. 80psi等于多少kpa_1公斤的气压是多少KPA?
  13. 如何关闭华为自动杀进程_如何彻底关闭windows 10的 自动更新
  14. tansig、logsig公式与导数推导
  15. 网页转pdf乱码问题,楷体部分出乱码
  16. 实验六 医学图像的增强(二)
  17. Teams认证话机系列(2)--AudioCodes C450HD
  18. 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP
  19. 使用c++,类实现求圆柱体体积
  20. 一文总览Polkadot生态

热门文章

  1. 三种方式实现日志记录
  2. DNS 网关 路由 交换机 网桥 协议 服务器 这些都是什么关系?
  3. 使用device.js检测设备并实现不同设备展示不同网页
  4. Mysql分组合并函数并进行数据列处理
  5. jQuery源码学习
  6. 物理光学11 衍射的基本概念与惠更斯原理
  7. WPF基础入门3 - Panel和 Canvas基本使用
  8. 跨域 (1) jsonp 跨域
  9. 在Android中使用OpenGL ES开发第(五)节:GLSL基础语法
  10. 《深入理解Java虚拟机》读书笔记七