吴恩达《Machine Learning Yearning》总结(11-20章)

简介: 11.何时修改开发集、测试集和度量指标开展一个新项目,尽快选好开发集和测试集;例子,根据度量指标A分类器排在B分类器前面,但是团队认为B分类器在实际产品上优于A分类器,这时就需要考虑修改开发集和测试集,或者评价指标了。

11.何时修改开发集、测试集和度量指标

开展一个新项目,尽快选好开发集和测试集;例子,根据度量指标A分类器排在B分类器前面,但是团队认为B分类器在实际产品上优于A分类器,这时就需要考虑修改开发集和测试集,或者评价指标了。

有三个主要原因可能导致A分类器的评分较低:

(1)你需要处理实际数据的分布和开发集、测试机数据的分布情况不同。

(2)你的开发集上过拟合。

(3)该指标所度量的不是项目应当优化的目标。

12小结:建立开发集和测试集

(1)选择作为开发集和测试集的数据,应当与你预期在将来获取并良好处理的数据有着同分布,但不需要和训练数据的分布一致。

(2)开发集和测试集的分布应当尽可能一致。

(3)选择单一评价指标进行优化,需要考虑多项目标时,不妨将他们整合到一个表达式里面(比如对多个误差指标取平均值),或者定义满意度指标和优化指标。

(4)机器学习是一个高速迭代的过程:在最终令人满意的方案出现前,你可能要尝试很多想法。

(5)拥有开发集、测试集和单值评价指标可以帮助你迅速评估一个算法,从而加速迭代过程。

(6)当你探索一个全新的应用时,尽可能在一周内建立你的开发集、测试集和指标,而在成熟的应用上则可以花费更长的时间。

(7)传统的70%/30%训练集、测试集划分对大规模数据并不适用,实际上开发集和测试集的比例会远低于30%.

(8)开发集的规模应当大到能够检测出算法精度的细微改变,但也不用太大;测试集的规模应当大到能够使你对系统的最终性能作出一个充分的估计。

(9)当开发集和评估指标不再能给团队一个正确的导向时,就尽快修改它们:(i)如果你的开发集上过拟合,则获取更多的开发集数据。(ii)如果开发集和测试集的数据分布和实际关注的数据分布不同,则获取新的开发集和测试集。(iii)如果评价指标不能够对最重要的任务目标进行度量,则需要修改评价指标。

13.快速构建并迭代你的第一个系统

案例:面对要构建一个新的垃圾邮件过滤系统时,可能会有很多不同的想法,这时候首要的不是全面考虑,而是尽快先构建一个最基础的系统。再从这个系统的结果中找出下一步该怎么走的线索(指导方针)。

14.误差分析:根据开发集样本评估想法

误差分析(Error Analysis)指的是检查算法误分类的开发集样本的过程,以便找到造成这些误差的原因。这将帮助你确定项目优先级,即找到什么原因造成误差占比最大,这时去优化它才最有意义,而不是盲目的去优化某一个原因。

15.在误差分析时并评估多个想法

利用电子表格来统计,误分类样本(如100张)分别因为什么而发生误分类,可能一张图有多个原因(如是狗而且很模糊),最终统计各原因占比,选择大的进行优化。

16.清洗误标注的开发集和测试集样本

还是根据以上原理,查看误标注样本对误分类造成的影响所占比例,然后判断是否要去修正,如果修正,务必将这种修正方法用到测试集上,这样才能保证一致性。

17.讲大型开发集拆分为两个子集,专注其一

比如有5000张大型开发集,有20%误差,即有1000张误分类,这是全部进行误差分析,非常耗时,故可以选取500张开发集(约有100张误分类)作为Eyeball开发集,其余4500张作为Blackbox开发集,前者因为已经观察过了,所以很容易过拟合,通过后者进行验证可以准确知道前者何时开始过拟合了,这时应该丢弃或者寻找新的Eyeball开发集或者将后者逐步移入到前者中去。

18.Eyeball和Blackbox开发集该设置多大

Eyeball开发集应该大到能够让你对算法主要的错误类别有所察觉,分类器的误差越小,所需要的EYeball开发集需要越大,才能满足前面第一句话的要求;如果面对的是人类也做不好的任务,那么检车Eyeball开发集将不会有打的版主,因为很难找出算法不能准确分类一个样本的原因。

Blackbox开发集的大小相对于Eyeball没那么重要,有时候可能甚至没有(此时因为Eyeball需要很大的开发集),这是只是造成过拟合分风险比较大。

19.小结:基础误差分析

(1)当你开始一个新项目,尤其是在一个不擅长领域是,很难正确猜测出最有前景的方向。

(2)所以,不要在一开始就师徒设计和构建一个完美的系统。相反,应尽可能(可能在短短几天内)的构建和训练一个基本系统,然后使用误差分析帮助你识别出最有前景的方向,并据此不断迭代改进你的算法。

(3)通过手动检查约100个算法错误分类的开发集样本来执行误差分析,并且计算主要的错误类别,用这些信息来确定优先修正哪种类型的错误。

(4)考虑讲开发集分为人为检查的Eyeball开发集和非人为检查的Blackbox开发集。如果在Eyeball开发集上的性能比在Blackbox开发集上好很多,那么你已经过拟合Eyeball开发集,并且应该考虑为其获得更多的数据。

(5)Eyeball数据即应该足够大,以便于算法有足够的错误分类样本供你分析。对很多应用来说,含有1000-10000个样本的Blackboxk开发集已足够。

(6)如果你的开发集不够大到可以按照这种方式进行拆分,那么就使用Eyeball开发集用于人工误差分析,模型选择和调参数。

20.偏差和方差:误差的两大来源

大前提:假设你的训练集、开发集和测试集都来自相同的分布。单纯去获取跟多训练数据是否可取?

以下初略的定义偏差和方差(总误差=偏差+方差):

偏差:训练集的误差;方差:测试集的误差减去训练集的误差(即测试集比训练集差了多少);例子:比如一个分类器,训练集的误差是15%,测试集的误差是16%,那么偏差为15%,方差为1%,此时属于高偏差,单纯增加数据量是无济于事的。

相关文章
|
机器学习/深度学习 算法 双11
周志华《Machine Learning》学习笔记(17)--强化学习
强化学习(Reinforcement Learning,简称RL)是机器学习的一个重要分支,前段时间人机大战的主角AlphaGo正是以强化学习为核心技术。
130 0
周志华《Machine Learning》学习笔记(17)--强化学习
|
机器学习/深度学习 算法
周志华《Machine Learning》学习笔记(7)--支持向量机
支持向量机是一种经典的二分类模型,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。
150 0
周志华《Machine Learning》学习笔记(7)--支持向量机
|
机器学习/深度学习 算法 数据挖掘
周志华《Machine Learning》学习笔记(15)--半监督学习
监督学习指的是训练样本包含标记信息的学习任务
163 0
周志华《Machine Learning》学习笔记(15)--半监督学习
|
机器学习/深度学习 算法 数据挖掘
周志华《Machine Learning》学习笔记(10)--集成学习
顾名思义,集成学习(ensemble learning)指的是将多个学习器进行有效地结合,组建一个“学习器委员会”
71 0
周志华《Machine Learning》学习笔记(10)--集成学习
|
机器学习/深度学习 自然语言处理 算法
周志华《Machine Learning》学习笔记(16)--概率图模型
根据一些已观察到的证据来推断未知,更具哲学性地可以阐述为:未来的发展总是遵循着历史的规律。
90 0
周志华《Machine Learning》学习笔记(16)--概率图模型
|
机器学习/深度学习 算法 数据挖掘
周志华《Machine Learning》学习笔记(1)--绪论
机器学习是目前信息技术中最激动人心的方向之一,其应用已经深入到生活的各个层面且与普通人的日常生活密切相关。
101 0
周志华《Machine Learning》学习笔记(1)--绪论
|
算法 数据挖掘
周志华《Machine Learning》学习笔记(9)--EM算法
EM(Expectation-Maximization)算法是一种常用的估计参数隐变量的利器,也称为“期望最大算法”,是数据挖掘的十大经典算法之一。
135 0
周志华《Machine Learning》学习笔记(9)--EM算法
|
机器学习/深度学习 算法 数据挖掘
周志华《Machine Learning》学习笔记(8)--贝叶斯分类器
贝叶斯分类器是一种概率框架下的统计学习分类器,对分类任务而言,假设在相关概率都已知的情况下,贝叶斯分类器考虑如何基于这些概率为样本判定最优的类标。
125 0
周志华《Machine Learning》学习笔记(8)--贝叶斯分类器
|
算法
周志华《Machine Learning》学习笔记(5)--决策树
顾名思义,决策树是基于树结构来进行决策的,在网上看到一个例子十分有趣,放在这里正好合适。
88 0
周志华《Machine Learning》学习笔记(5)--决策树
|
机器学习/深度学习 人工智能 自然语言处理
Machine Learning-L0-机器学习简介
Machine Learning-L0-机器学习简介
Machine Learning-L0-机器学习简介