目录
前言
P80-P85
添加数据
迁移学习
机器学习项目的完整周期
公平、偏见与伦理
P86-P95
倾斜数据集的误差指标
决策树模型
测量纯度
选择拆分方式增益
使用分类特征的一种独热编码
连续的有价值特征
回归树
前言
这是吴恩达机器学习笔记的第五篇,第四篇笔记请见:
吴恩达机器学习全课程笔记第四篇
完整的课程链接如下:
吴恩达机器学习教程(bilibili)
推荐网站:
scikit-learn中文社区
吴恩达机器学习资料(github)
P80-P85
机器学习的迭代发展:
以“垃圾邮箱分类器”为例,如何减少学习算法中可能出现的错误?
添加数据
有一种技术,特别是对于图像和音频数据,可以显著增加训练集大小,这种技术称为“数据增强”
如图所示,改变x使之有相同的y,以达到数据增强的效果
除了图像数据,对于音频数据,也可以进行数据增强,如下所示:
在数据增强中,如果加入的扭曲(噪声)不合适,可能不会对增大数据集产生作用
除了使用数据增强去添加数据之外,还可以使用合成数据去添加数据
合成数据是基于计算机模拟或算法生成模仿现实世界观察的人造数据,简言之,合成数据是人工制造的模拟数据
以OCR照片为例,现在想要训练一个模型去提取图片中的文字:
下面是一个真实的数据:
为这项任务创建人工数据的一种方法是:转到计算机的文本编辑器,里面有很多不同的字体,使用这些字体在文本编辑器中键入随机文本,截图它们并使用不同颜色、不同对比度和不同的字体
迁移学习
对于一个没有那么多数据的应用程序,可以使用迁移学习,它允许使用来自不同任务的数据来帮助你的应用程序
如上图所示,对于一个数据集很小很小的网络,建议使用选项一,即仅仅训练输出层的参数,否则使用选项二
迁移学习的一个好处是:你可能不需要称为监督的执行人,许多神经网络的预训练已经有研究人员在大图像上训练了神经网络,会在网上发布一个经过训练的神经网络,免费授权给任何人下载和使用
迁移学习的总结如下:
机器学习项目的完整周期
确定项目的范围------->定义和收集数据<---------->训练模型、误差诊断、迭代优化------->部署、检测、维持模型系统
下面展示的是模型部署的一些细节
如图,开发的移动应用可以通过api进行调用
部署过程需要一定的软件工程技术,软件工程需要编写代码使得可靠准确的预测、扩大服务范围、保存数据、系统监控、模型更新
MLOps是一门工程学科,旨在统一 ML 系统开发(dev)和 ML 系统部署(ops),以标准化过程生产高性能模型的持续交付
公平、偏见与伦理
除了偏见之外,公平对待个人,机器学习也有一些负面用例
下面有一些让你工作更公平的建议,在部署可能造成伤害的系统之前,减少偏见,更道德
P86-P95
倾斜数据集的误差指标
如果你正在开发机器学习应用程序,数据集的正面和负面例子非常不平衡,会发现,通常的误差度量如准确率不会那么有效
比如下面这个罕见疾病检测的问题,我们的学习算法成功诊断概率是99%,即误差1%,但如果全世界只有0.5%的人发生这种疾病,即使我写一个print("y=0")的程序,即永远告诉病人没有患病的误差0.5%都比上面那个1%低。因此单单看准确率去评判学习算法是不够的
精确率和召回率的定义如下:
提高输出标签1的门槛,即像下面一样把0.5改成0.7再改成0.9会提高准确率、降低召回率
下面展示如何权衡准确率和召回率
取平均值的方法并不是一个好的方法,而使用F1 score权衡可以强调两个指标中更小的那个
通过F1 score去权衡上述这两个指标从而选择学习算法
决策树模型
许多用来赢得机器学习比赛的应用程序是决策树和树的集合
以检测是否为猫的算法为例:
决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值
给定训练集构建决策树的过程有几个步骤
第一个步骤是:在每个节点上使用什么特征去划分
第一个步骤是:决定什么什么停止划分
测量纯度
通过熵函数可以测量一组数据的不纯度
熵函数真实的表达式如下所示:
选择拆分方式增益
在构建决策树时,我们将决定在结点上拆分什么特征,将决定根据什么特征在减少熵,学习熵的减少称为信息增益
如下图所示,计算每一种拆分方式的信息增益,就是用原来的熵减去新的熵
总结起来,信息增益的计算方式如下:
决策树构建过程总结
使用分类特征的一种独热编码
在刚才的例子中,对于耳朵这个特征不是圆的就是尖的,下面使用独热编码解决这个问题
也就是说:如果一个分类特征有k个值,那么就创造k个二进制数字(取值0或1)
连续的有价值特征
上面的特征都是离散的,当特征是连续值是会怎么样呢
比如在上面例子的基础上加一个体重的特征
选择不同的阈值,计算信息增益然后决定最终的拆分阈值
回归树
到目前为止,我们只把决策树作为分类算法来讨论,使用回归树可以将决策树推广为回归算法
比如对于体重的预测,可以通过决策树进行划分,最后求得每一种类的平均值
建立回归树时,如何选择一个划分呢?
在建立回归树时,不是去减少熵,相反的,我们应该去减少权重的方差,这是回归树的信息增益