1. 引言
最近看吴恩达深度学习的深度学习课程笔记,笔记公布网站:https://github.com/fengdu78/deeplearning_ai_books
http://www.ai-start.com。看到第三门课:结构化机器学习项目,看完很有感触,感觉大牛确实是牛,比自己当初做项目单独摸索时使用的方法强太多,自己当初也能按照这些方法做就好了。为了以后自己少走弯路,将课程中好的执行策略加上自己的理解记录在此,以后做项目遇到困难多翻翻。
2. 实用的机器学习策略
什么是机器学习策略呢?就是你做项目时搭建好一个原型后怎么一步步的优化,使得其接近可用、可部署的模型。
2.1 选算法模型
这一步最好不要自己造轮子,首先理清自己要解决的问题所在的学术领域,到百度学术找找学术文献看看专业的研究者都是怎么做的,看的多了就有自己选什么样算法和模型的思路了;遇到比较好的论文,可能还有github的实现,那就更好了,抓一部分自己真正要用的样本,代入到github项目里调一调,这样对是否借鉴相关算法、以及算法要注意的各种重要问题都能心里有谱,而且还不怎么花时间。
另外,如果你要解决的问题,恰好已经在工业界有很好的公认的好的实现了,那你要做的就更简单了,算法和模型可以直接借鉴,剩下的就是怎么将你自己的数据与公开的算法模型对齐了。当然,这里面也会涉及到很多优化问题,不仅需要好好调调模型参数,可能还需要借助学术文献做做更深入的优化。如果不幸的是工业界没有公认的好实现,那你就要借助开源算法平台,例如深度学习tensoflow或者传统机器学习scikit-learn,自己做模型验证了,验证的算法模型来自之前研究的学术论文,或多个学术论文模型的综合。
2.2 数据集划分
一般来讲,需要将数据集划分成训练集、验证集(深度学习课程中将其叫做开发集)和测试集。其中:
1. 训练集用来训练不同的算法模型;
2. 用开发集评估不同的模型选择最优的一个,然后不断迭代去改善开发集的性能;
3.用测试集去评估最终应用效果。
需要注意的是开发集和测试集要来自同一数据分布,一种可行的方法是将所有数据随机洗牌,放入开发集和测试集,此时二者处于同一分布。另外,设立开发集和测试集时,要能够反映你未来会