一个完整机器学习项目流程总结

现在机器学习应用越来越流行,了解机器学习项目的流程,能帮助我们更好的使用机器学习工具来处理实际问题。

1 理解实际问题,抽象为机器学习能处理的数学问题

理解实际业务场景问题是机器学习的第一步。

机器学习的特征工程和模型训练通常都是一件非常耗时的过程,胡乱尝试时间成本是非常高的。深入理解要处理的问题,能避免走很多弯路。

理解问题,包括明确可以获得什么样的数据,机器学习的目标是一个分类、回归还是聚类。如果都不是的话,要考虑将它们转变为机器学习问题。

2 获取数据

获取数据包括获取原始数据以及从原始数据中经过特征工程从中提取训练、测试数据。机器学习比赛中原始数据都是直接提供的,但是实际问题需要自己获得原始数据。

数据决定机器学习结果的上限,而算法只是尽可能的逼近这个上限”,可见数据在机器学习中的作用。总的来说数据要有具有“代表性”,否则必然会过拟合。对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距

不仅如此还要对评估数据(样本数量、特征数量)的量级,估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果数据量太大可以考虑改进算法或者减少训练样本、降维的技巧了,如果数据量实在太大,那就要考虑分布式了。

3 特征工程

特征工程是非常能体现一个机器学习者的功底的。

特征工程包括从原始数据中特征构建、特征提取、特征选择,非常有讲究。深入理解实际业务场景下的问题,丰富的机器学习经验能帮助我们更好的处理特征工程。特征工程做的好能发挥原始数据的最大效力,往往能够使得算法的效果和性能得到显著的提升,有时能使简单的模型的效果比复杂的模型效果好。

数据预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。

筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

4 模型训练、诊断与调优

现在有很多的机器学习算法的工具包,例如sklearn,使用非常方便,真正考验水平的根据对算法的理解调节(超)参数,使模型达到最优

过拟合、欠拟合的模型状态判断是模型诊断中至关重要的一步。常见的方法如:交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加训练的数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。 

诊断后的模型需要进行进一步调优,调优后的新模型需要重新诊断,这是一个反复迭代不断逼近的过程,需要不断的尝试,进而达到最优的状态。

5 模型验证、误差分析

模型验证和误差分析也是机器学习中非常重要的一步。

通过测试数据,验证模型的有效性,通过观察误差样本,分析误差产生的原因(是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题 …),往往能使得我们找到提升算法性能的突破点。

误差分析主要是分析出误差来源于 算法 、 特征 、数据

6 模型融合

 一般来说实际中,成熟的机器算法也就那么些,工程上,提升算法的准确度主要方法是模型的前端(特征工程、清洗、预处理、采样)和后端的模型融合。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

模型融合的方法,主要包括一人一票的统一融合,线性融合和堆融合。

在机器学习中模型融合非常常见,基本都能使得效果有一定的提升,而且效果很好。

7 上线运行

这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。

这些工作流程主要是工程实践上总结出的一些经验,并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。 

参考

机器学习项目流程 http://www.cnblogs.com/wxquare/p/5484690.html

你可能感兴趣的:(一个完整机器学习项目流程总结)