本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片
机器学习 | Coursera
吴恩达机器学习系列课程_bilibili

目录

  • 16 推荐系统
    • 16-1 问题规划
    • 16-2 基于内容的推荐算法
    • 16-3 协同过滤
    • 16-4 协同过滤算法
    • 16-5 向量化:低秩矩阵的分解
    • 16-6 实施细节:均值归一化

16 推荐系统

16-1 问题规划


以电影评分预测系统为例,机器学习系统需要预测问号处的值来决定向用户推荐哪部电影

  • nun_unu​表示用户的数量,这里=4
  • nmn_mnm​表示电影的数量,这里=5
  • r(i,j)r(i,j)r(i,j):如果用户jjj已经给电影iii进行评分了的话,r(i,j)=1r(i,j)=1r(i,j)=1
  • y(i,j)y^{(i, j)}y(i,j)表示用户jjj给电影iii的评分(仅在r(i,j)=1r(i,j)=1r(i,j)=1时才有定义)

16-2 基于内容的推荐算法

  • 用两个特征x1x_1x1​和x2x_2x2​分别表示一部电影的浪漫片程度和动作片程度,组合成矩阵并加上x0=1x_0=1x0​=1,比如x(1)=[10.90]x^{(1)}=\left[\begin{array}{l} 1 \\ 0.9 \\ 0 \end{array}\right]x(1)=⎣⎡​10.90​⎦⎤​,x(i)x^{(i)}x(i)表示的是第iii部电影的特征向量
  • 对每一个用户jjj都学习出一个参数θ(j)∈R3\theta^{(j)} \in \mathbb{R}^{3}θ(j)∈R3,预测出用户jjj对电影iii的评价星级为(θ(j))Tx(i)\left(\theta^{(j)}\right)^{T} x^{(i)}(θ(j))Tx(i)

得到推荐算法的代价函数为:
12m(j)∑i:r(i,j)=1((θ(j))⊤(x(i))−y(i,j))2+λ2m(j)⋅∑k=1n(θk(j))2\frac{1}{2 m^{(j)}} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{\top}\left(x^{(i)}\right)-y^{(i, j)}\right)^{2}+\frac{\lambda}{2 m^{(j)}} \cdot \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}2m(j)1​i:r(i,j)=1∑​((θ(j))⊤(x(i))−y(i,j))2+2m(j)λ​⋅k=1∑n​(θk(j)​)2
其中m(j)m^{(j)}m(j)表示用户jjj评价了的电影数量
∑i:r(i,j)=1\sum_{i: r(i, j)=1}∑i:r(i,j)=1​表示累加所有满足r(i,j)=1r(i, j)=1r(i,j)=1的项,变化iii
为了简化计算,一般去掉m(j)m^{(j)}m(j)项,代价函数变为:
12∑i:r(i,j)=1((θ(j))⊤(x(i))−y(i,j))2+λ2⋅∑k=1n(θk(j))2\frac{1}{2 } \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{\top}\left(x^{(i)}\right)-y^{(i, j)}\right)^{2}+\frac{\lambda}{2 } \cdot \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}21​i:r(i,j)=1∑​((θ(j))⊤(x(i))−y(i,j))2+2λ​⋅k=1∑n​(θk(j)​)2

要优化所有用户的参数,代价函数改为:
J(θ(1),…,θ(nu))=12∑j=1nu∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2J\left(\theta^{(1)}, \ldots, \theta^{\left(n_{u}\right)}\right)=\frac{1}{2} \sum_{j=1}^{n_{u}} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}J(θ(1),…,θ(nu​))=21​j=1∑nu​​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

梯度下降更新项如上↑

16-3 协同过滤

由于之前的推荐算法的数据集中是给定了每部电影的特征,而一般一部电影的特征是难以判断的,所以需要协同过滤
来自动学习特征

调查每位用户对电影类型的喜好得到参数矩阵θ\thetaθ,比如θ(1)=[050]\theta^{(1)}=\left[\begin{array}{l} 0 \\ 5 \\ 0 \end{array}\right]θ(1)=⎣⎡​050​⎦⎤​表示的是用户1对x1x_1x1​表示的浪漫片有5的喜爱,对x2x_2x2​表示的动作片有0的喜爱,矩阵第一项的存在是因为有x0=1x_0=1x0​=1这一项
根据用户给出的对一类电影的喜爱程度、用户给出的对电影的评分,就可以计算每一部电影的特征值

通过上图的代价函数计算出每一部电影的合适的特征

先猜测一组参数θ\thetaθ,然后计算出电影的特征xxx,再根据此特征计算新的参数θ\thetaθ,再计算出电影的特征xxx,这样不断循环,最后就能收敛

16-4 协同过滤算法

去掉x0=1x_0=1x0​=1和θ0=1\theta_0=1θ0​=1,让x∈Rnx \in \mathbb{R}^{n}x∈Rn,θ∈Rn\theta \in \mathbb{R}^{n}θ∈Rn

把求θ\thetaθ和求xxx的两个代价函数合起来,得到一个新的不需要像上一节一样循环往复的代价函数:
J(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))2J\left(x^{(1)}, \ldots, x^{\left(n_{m}\right)}, \theta^{(1)}, \ldots, \theta^{\left(n_{u}\right)}\right)=\frac{1}{2} \sum_{(i, j): r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{i=1}^{n_{m}} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2} J(x(1),…,x(nm​),θ(1),…,θ(nu​))=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

上图是协同过滤算法的全过程:

  • 初始化xxx和θ\thetaθ为一个很小的值
  • 用梯度下降或其他优化算法最小化代价函数
  • 得出最后的xxx和θ\thetaθ即可计算某个用户未评价的电影的可能的评价星级

16-5 向量化:低秩矩阵的分解


首先把上图的数据表写成矩阵YYY

矩阵YYY中的每一个元素都是由公式(θ(j))⊤(x(i))\left(\theta^{(j)}\right)^{\top}\left(x^{(i)}\right)(θ(j))⊤(x(i))计算得出的
矩阵XXX和矩阵Θ\ThetaΘ由上图所示的元素组成,所以矩阵YYY可以表示为Y=XΘTY=X \Theta^{T}Y=XΘT

如何找到跟一部电影相似的另一部电影?

  • ∥x(i)−x(j)∥\left\|x^{(i)}-x^{(j)}\right\|∥∥​x(i)−x(j)∥∥​越小,表示电影iii和电影jjj越相似

16-6 实施细节:均值归一化

如果一位用户没有对任何一部电影评分,那么会得出预测他对所有电影的评分都为0的荒谬结果,所以需要均值归一化

如上图所示,跟上一节相同的矩阵YYY,求每一部电影的评分均值得到矩阵μ\muμ,然后把矩阵YYY中的每一项都减去矩阵μ\muμ中对应的电影的平均值,得到新的矩阵YYY,按照新的矩阵来学习出θ(i)\theta^{(i)}θ(i)和x(i)x^{(i)}x(i),最后在计算某一个未知的评分时需要用公式(θ(j))⊤(x(i))+μi\left(\theta^{(j)}\right)^{\top}\left(x^{(i)}\right)+\mu_{i}(θ(j))⊤(x(i))+μi​,(因为之前平均值被减掉了,所以现在要加回去),这样预测用户5时得到的结果就不再时0,而是预测的电影的评分平均值

【CV】吴恩达机器学习课程笔记第16章相关推荐

  1. 【CV】吴恩达机器学习课程笔记第10章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 10 应用机器学习的建议 10-1 决定下一步做什么 10 ...

  2. 【CV】吴恩达机器学习课程笔记 | 第1-2章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量 ...

  3. 【CV】吴恩达机器学习课程笔记第18章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 18 应用案例:照片OCR 18-1 问题描述与流程(pi ...

  4. 【CV】吴恩达机器学习课程笔记第17章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 17 大规模机器学习 17-1 学习大数据集 17-2 随 ...

  5. 【CV】吴恩达机器学习课程笔记第11章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 11 机器学习系统设计 11-1 确定执行的优先级:以垃圾 ...

  6. 【CV】吴恩达机器学习课程笔记 | 第1-15章

    目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量线性回归 2-2 代价函数 2-5 Batch 梯度下降算法 4 多变量线性回归 4-1 多特征 4-2 多元梯度下降法 4-3 多元梯 ...

  7. 吴恩达机器学习课程笔记(11-19章)

    第十一章 11.1 确定执行的优先级 垃圾邮件分类器算法: 为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量 x x x .我们可以选择一个由 100 100 100 个最常出现在垃圾 ...

  8. 吴恩达机器学习课程笔记(1-10章)

    第一章 1.1 什么是机器学习? 定义: 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准. 解释: 计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,通过P测定在T上的表现因经 ...

  9. 吴恩达机器学习课程笔记一

    吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...

最新文章

  1. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )
  2. javaweb学习总结(七)——HttpServletResponse对象(一)
  3. 010 自动技能的设计和实现
  4. 软件管理定律系列之布鲁克斯定律
  5. 硬件基础 —— 电阻
  6. 用方框图语言表示指令周期及其流程
  7. Python实战从入门到精通第十二讲——给函数参数增加元信息
  8. [转]微信小程序之购物车功能
  9. google erath api v3 与v2版本在定位方面的区别
  10. 一篇文章讲清python开发必懂的8种数据结构
  11. 流程即代码:云研发、低代码 IDE —— Uncode
  12. 相机等效焦距和视场角计算
  13. lempel ziv matlab,1.9 Lempel-Ziv算法
  14. 12035徐波:PMBOK融会贯通:会议一览
  15. 瞰见 | 美股新贵Confluent背后的卡夫卡,不是那个魔幻小说家
  16. matlab 数组横向纵向拼接
  17. 好用的在线音乐网站,有这5个就够了(收藏备用)
  18. 【工具-DVWA】DVWA的安装和使用
  19. c语言s-next,memset_s - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  20. 什么样的设计可以征服客户?

热门文章

  1. C++ 笔记(34)— C++ exit 函数
  2. linux 下根据cpp文件快速书写头文件
  3. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
  4. Visual Studio 中文显示乱码问题
  5. linux模拟器 cygwin源
  6. GitHub无法显示图片问题解决
  7. 最新Spring整合MyBatis详解教程
  8. CPU0 处理器的架构及应用
  9. Non-Maximum Suppression,NMS非极大值抑制
  10. MindSpore接口mindspore::api