机器学习常规项目流程

内容包括:机器学习常规项目流程+建模注意事项

机器学习常规项目流程:

1、理解实际业务问题,抽象成数学问题

  明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,深入理解要处理的问题,能避免走很多弯路。这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类、回归还是聚类的问题,如果都不是的话,如果划归为其中的某类问题。

2、获取数据

  “数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限”,可见数据在机器学习中的作用。数据要有代表性,否则必然会过拟合。而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。不仅如此还要对评估数据的量级,样本数量、特征数量,估算训练模型对内存的消耗,判断训练过程中内存是否能够放得下。如果数据量太大可以考虑减少训练样本、降维或者使用分布式机器学习系统。

 

3、特征预处理与特征选择

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

  筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如:

  1)Filter法(过滤法):方差选择法、相关系数计算法、卡方检验、平均互信息

  2)Wrapper法(封装法):递归特征消除法

  3)Embedded(集成法):基于惩罚项的特征选择法、基于树模型的特征选择法

4、模型训练、诊断、调优

  现在有很多的机器学习算法的工具包,例如sklearn,使用非常方便,真正考验水平的根据对算法的理解调节参数,使模型达到最优。当然,能自己实现算法的是最牛的。模型诊断中至关重要的是判断过拟合、欠拟合,常见的方法是绘制学习曲线,交叉验证。通过增加训练的数据量、降低模型复杂度来降低过拟合的风险,提高特征的数量和质量、增加模型复杂来防止欠拟合。诊断后的模型需要进行进一步调优,调优后的新模型需要重新诊断,这是一个反复迭代不断逼近的过程,需要不断的尝试,进而达到最优的状态。

5、模型验证、误差分析

  模型验证和误差分析也是机器学习中非常重要的一步,通过测试数据,验证模型的有效性,观察误差样本,分析误差产生的原因,往往能使得我们找到提升算法性能的突破点。误差分析主要是分析出误差来源与数据、特征、算法。

6、模型融合

  一般来说,模型融合后都能使得效果有一定提升。而且效果很好。工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

7、上线运行

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

附:

1、建模过程考虑的几个重要因素:

  1)泛化能力:对未知空间的预测能力,衡量模型优劣的主要指标;

  2)解释能力:建模是用数学的方法来解释现实问题,目的是通过模型找寻实际问题的最佳解决措施。

  3)维数灾难:模型可能涉及到很多的参数是无法通过样本来准确估计的,或者由于过多的参数而导致模型的泛化能力变差。

  4)计算能力:通常,随着模型的复杂度增加,所带来的计算复杂度也会倍增,甚至是指数性增加。

  5)输入选择:对于模型输入的变量并不是越多越好,如果输入中含有的无效成分太多,反而会影响最终输出结果。因此,要合理选择模型输入。

  6)鲁棒性和抗扰性:传统的线性系统常常是建立在带有高斯噪音的线性时不变过程。而实际动态的过程往往是复杂、非线性、非平稳、随机且部分未知的,因此保证模型的鲁棒性和抗干扰性是一大难题。

  7)在线更新:对于持续输入样本的模型,不仅要实现参数实时更新,也要实现模型结构的自适应调整。
 
posted @ 2018-09-07 12:58  小归零  阅读(255)  评论(0)    收藏  举报