【CV】吴恩达机器学习课程笔记第16章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片
机器学习 | 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)1i: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}21i: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))=21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=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∑nmk=1∑n(xk(i))2+2λj=1∑nuk=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章相关推荐
- 【CV】吴恩达机器学习课程笔记第10章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 10 应用机器学习的建议 10-1 决定下一步做什么 10 ...
- 【CV】吴恩达机器学习课程笔记 | 第1-2章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量 ...
- 【CV】吴恩达机器学习课程笔记第18章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 18 应用案例:照片OCR 18-1 问题描述与流程(pi ...
- 【CV】吴恩达机器学习课程笔记第17章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 17 大规模机器学习 17-1 学习大数据集 17-2 随 ...
- 【CV】吴恩达机器学习课程笔记第11章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 11 机器学习系统设计 11-1 确定执行的优先级:以垃圾 ...
- 【CV】吴恩达机器学习课程笔记 | 第1-15章
目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量线性回归 2-2 代价函数 2-5 Batch 梯度下降算法 4 多变量线性回归 4-1 多特征 4-2 多元梯度下降法 4-3 多元梯 ...
- 吴恩达机器学习课程笔记(11-19章)
第十一章 11.1 确定执行的优先级 垃圾邮件分类器算法: 为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量 x x x .我们可以选择一个由 100 100 100 个最常出现在垃圾 ...
- 吴恩达机器学习课程笔记(1-10章)
第一章 1.1 什么是机器学习? 定义: 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准. 解释: 计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,通过P测定在T上的表现因经 ...
- 吴恩达机器学习课程笔记一
吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...
最新文章
- 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )
- javaweb学习总结(七)——HttpServletResponse对象(一)
- 010 自动技能的设计和实现
- 软件管理定律系列之布鲁克斯定律
- 硬件基础 —— 电阻
- 用方框图语言表示指令周期及其流程
- Python实战从入门到精通第十二讲——给函数参数增加元信息
- [转]微信小程序之购物车功能
- google erath api v3 与v2版本在定位方面的区别
- 一篇文章讲清python开发必懂的8种数据结构
- 流程即代码:云研发、低代码 IDE —— Uncode
- 相机等效焦距和视场角计算
- lempel ziv matlab,1.9 Lempel-Ziv算法
- 12035徐波:PMBOK融会贯通:会议一览
- 瞰见 | 美股新贵Confluent背后的卡夫卡,不是那个魔幻小说家
- matlab 数组横向纵向拼接
- 好用的在线音乐网站,有这5个就够了(收藏备用)
- 【工具-DVWA】DVWA的安装和使用
- c语言s-next,memset_s - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- 什么样的设计可以征服客户?