应用机器学习过程
随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。
一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。
在这篇文章中,我想与你分享我解决机器学习问题的过程框架。
你可以将其用作下一个项目的起点或模板。
5步系统化过程
我喜欢使用5个步骤的流程:
- 定义问题。
- 准备数据。
- 抽查算法。
- 改善结果。
- 展示结果。
这个过程有很大的灵活性。例如,“准备数据”步骤通常分为分析数据(汇总和图表)和准备数据(为实验准备样本)。“抽查”步骤可能涉及多个正式实验。
这是一条很大的生产线,我试图以线性的方式通过它。使用自动化工具的伟大之处在于,你可以后退几个步骤(比如从“改善结果”返回到“准备数据”),然后插入新的数据集转换,并在中间的步骤中重新运行实验,以查看得出哪些有趣的结果,以及它们与你以前执行的实验相比有何不同。
我使用的过程是从数据库中的知识发现(或KDD)的标准数据挖掘过程改编而来的,有关更多详细信息,请参阅什么是数据挖掘和KDD一文。
1、定义问题
我喜欢用三个步骤来定义这个问题。我喜欢快速行动,我使用这个小型流程非常快速地从几个不同的角度来看待问题:
- 第一步:问题出在哪里?非正式和正式地描述问题,并列出假设和类似问题。
- 第二步:为什么要解决这个问题?列出你解决问题的动机、解决方案提供的好处以及如何使用该解决方案。
- 第三步:我该如何解决这个问题?描述如何手动解决问题以刷新领域知识。
你可以在文章中了解有关此过程的更多信息:
如何定义你的机器学习问题
准备数据
我以数据分析阶段作为数据准备的开始,该阶段涉及总结属性并使用散点图和直方图将其可视化。我还想详细描述每个属性以及属性之间的关系。这项繁重的工作迫使我在数据被算法丢失之前,在问题的上下文中思考数据。
实际的数据准备过程分为三步:
- 步骤1:数据选择:考虑哪些数据可用,哪些数据缺失,哪些数据可以删除。
- 步骤2:数据预处理:通过格式化、清理和采样来组织你选择的数据。
- 步骤3:数据转换:使用缩放、属性分解和属性聚合,通过工程特性转换预处理后的数据,为机器学习做好准备。
你可以在帖子中了解有关此数据准备过程的更多信息:
如何为机器学习准备数据
抽查算法
默认情况下,我在测试工具中使用10折交叉验证。所有实验(算法和数据集组合)重复10次,收集并报告精度的平均值和标准差。我还使用统计显著性检验从噪音中剔除有意义的结果。盒图对于总结每个算法和数据集对的精度结果分布非常有用。
我抽查算法,这意味着将一组标准的机器学习算法加载到我的测试工具中,并执行正式的实验。我通常在我准备的数据集的所有转换和缩放版本上运行来自所有主要算法系列的10-20个标准算法。
抽查的目标是找出适合于找出问题结构的算法和数据集组合的类型,以便通过有重点的实验来更详细地研究它们。
在此步骤中,可能会对性能良好的算法系列执行更有针对性的实验,但算法调整将留给下一步。
你可以在帖子中找到有关定义测试工具的更多信息:
如何评价机器学习算法。
你可以在帖子中发现抽查算法的重要性:
为什么要抽查机器学习问题的算法。
改善结果
抽查过后,是时候从钻机上挤出最好的结果了。我通过对性能最好的算法的参数运行自动敏感度分析来做到这一点。我还使用性能最好的算法的标准集成方法来设计和运行实验。我花了很多时间思考如何从数据集或已被证明执行良好的算法家族中获得更多。
同样,在这里,结果的统计意义至关重要。专注于方法并玩弄算法配置是如此容易。只有当结果是有意义的,并且所有的配置都已经被考虑好,并且实验被批量执行时,结果才是有意义的。我也喜欢维护我个人的排行榜,在一个问题上取得最好的结果。
总括而言,改善成果的过程包括:
- 算法调优:其中发现最佳模型被视为通过模型参数空间的搜索问题。
- 集成方法:将多个模型所作的预测组合在一起。
- 极限特征工程(Extreme Feature Engineering):将数据准备中看到的属性分解和聚合推向极限。
你可以在帖子中找到有关此过程的更多信息:
如何提高机器学习效果
展示结果
复杂机器学习问题的结果除非付诸实施,否则毫无意义。这通常意味着向利益相关者进行演示。即使这是一场比赛或我自己解决的问题,我仍然会经历展示结果的过程。这是一次很好的练习,让我学到了清晰的东西,我可以在下一次的基础上再接再厉。
我用来展示结果的模板如下,可以采用文本文档、正式报告或演示幻灯片的形式。
- 上下文(为什么):定义问题存在的环境,并设置研究问题的动机。
- 问题(问题):把问题简明扼要地描述为你出去回答的问题。
- 解决方案(答案):将解决方案简明扼要地描述为你在上一节中提出的问题的答案。具体点。
- 发现:用项目符号列出你一路上发现的观众感兴趣的东西。它们可能是数据中的发现,可能是有效或无效的方法,也可能是你在旅途中获得的模型性能优势。
- 限制:考虑模型不起作用的地方或模型没有回答的问题。不要回避这些问题,如果你能定义模型的不足之处,那么定义模型的优势在哪里就更可信了。
- 结论(为什么+问题+答案):重温“为什么”、研究问题和你发现的答案,放在一个紧凑的小包装里,便于自己和他人记住和重复。
你可以在帖子中找到更多关于使用机器学习项目的结果的信息:
如何使用机器学习结果
摘要
在这篇文章中,你已经学习了我处理机器学习问题的通用模板。
我几乎无懈可击地使用这个过程,我使用它跨平台,例如Weka、R和SCRKIT-Learning,甚至是我一直在使用的新平台,比如pylearn2。