《Machine Learning Yearning》总结笔记(
《Machine Learning Yearning》是吴恩达历时两年,根据自己多年实践经验整理出来的一本机器学习、深度学习实践经验宝典。注意,这还是一本总结实践经验的书,这相比于市面上绝大部分侧重于模型理论与证明推导的机器学习书籍不同,是鲜有的设计工程实践经验的一本书。每一章内容都短小精悍,干货十足,强烈推荐给从事数据领域工作的朋友。
其实本书的每一章节的内容都非常精炼,想要从中提炼什么要点,难免会损失书中所涉及到的很多重要的逻辑思维方法。所以这里的要点总结一方面只是作为个人阅读记录,另一方面则主要力图概括每个章节涉及的知识内容,方便没有阅读本书的朋友们快速了解本书内容结构。
1~3节
本书前三节属于介绍性内容,说明了本书的目的在于帮助大家理解如何为一个机器学习项目设定技术方向,如何制定合适的学习策略。
4~7节
这部分介绍了数据规模和可用性是机器学习得以发展的主要因素。而解决训练数据集的准备问题是开展机器学习项目的首要问题。
用于训练的数据要尽量符合应用实际
机器学习需要搜集数据集用于训练和检测。并通常使用70% / 30%的比例来随机划分获得的数据集来获得训练集和检验集。但要注意到,在很多实际应用中,搜集到的数据集往往与真实的应用场景搜索不同。(原文中将用于交叉检验的训练集分为训练集和开发集)
这就需要合理的选择训练集和检验集,使之能够代表将来实际数据的情况。要尽量想办法模拟实际使用场景来获取数据。
训练集和检验集的分布要一致
此外,不能武断地认为检验集的分布和训练集是相同的。要尽可能的选择最终期望算法能够正确处理的样本作为检验集,而不是随便选择一个你恰好拥有的训练集样本。
如果一套训练系统在训练集上运行性能良好,但在检验集上却效果不佳。只有在训练集和检验集的分布相同时,才能够确定算法是在训练集上过拟合了。但如果训练集和检验集分布不一致,则无法排除数据本身对结果的影响,从而无法确定算法是否有问题。
训练集和检验集的大小
训练集的规模应该尽量大,这样才能在交叉验证的过程中分辨出学习器之间的性能差异。一个只有100个样本的训练集无法检测出两个性能差距0.1%的学习器之间的差别。
检验集是用来评估学习器性能的数据集,所以检验集的大小要能够满足对整体系统性能进行一个高可信度的评估。一般在数据总量贴近10000左右的情况下,采取30%比重的数据作为检验集是可以检测到0.1%的性能提升的。但在大数据时代,数据总量非常庞大,并不需要按比例划分检验集才能检测到这0.1%的性能差异,只需要有足够量的数据可以。
8~10节
介绍了学习器的评价指标。
使用多个评价指标,往往由于不同学习器在不同指标上各有优劣,难以抉择。使用单评价指标则能帮助你更快地做出判断。
取平均值或者加权平均值是将多个指标合并为一个指标的最常用方法之一。此外,还可以设置多个“满意度指标”和一个“优化指标”。筛选“满意度指标”达到指定目标范围下,“优化指标”最好的一个学习器。
而通过评价指标评价学习器性能,可以指导我们不断地迭代,改进系统构建的策略和想法。在特定训练集下,可以清楚地比较每次迭代后的效果如何。
11~12节
在机器学习项目的实践过程中,训练集、检验集和评价指标并不是选定后就不改变的。
如果在实践过程中渐渐发现初始的训练集、检验集和评价指标与期望的目标有一定差距时,就要尽快想办法改进它们。
通常有三个方面的错误需要进行修正:
1、实际的数据分布和训练集/检验集的数据分布不同。
2、学习器在训练集上过拟合了。
3、评价指标不能反映项目优化的目标。