机器学习总结之——机器学习项目完整流程

机器学习总结之——机器学习项目的完整流程

1、分析项目需求,明确具体问题

  进行一个项目前,首先要做的是要分析项目各个需求,以及明确各个需求所对应的具体问题并将其抽象成一个个数学问题,将项目过程转换成数学建模过程。

  PS:这里的抽象成数学问题,是指这个项目中为我们提供或者我们能通过现有手段获取到什么样的数据(即我们能得到什么样的数据);目标是一个分类、回归还是一个聚类问题,如果都不属于的话,应该将其等价于其中的哪一类问题(即我们要完成什么样的目标)。

2、获取数据

  数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限,一般可以通过对现有数据挖掘、通过Python在网络上爬取、通过传感器等方式获取。
  对于数据的获取要遵循以下准则:
  (1)数据要有代表性,否则必然会过拟合,过拟合;
  (2)对于分类问题,尽量避免类别过于不平衡,不同类别的数据数量不要有数个数量级的差距;
  (3)对所需要获取的数据样本数量的量级需要进行评估,并根据评估结果(一般通过样本数量、样本的特征值种类以及每个特征值类型(int/double/String/etc..))判断训练过程中所需内存大小,如果所需内存超过内存最大容量就得考虑对算法进行改进或者使用一些降维的技巧了。如果数据量过于庞大,可以采取分布式处理结构,将机器学习任务在多个节点上分布式运行。

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

  良好的数据要能够提取出良好的特征才能真正发挥效力。
  特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。
  筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

4、训练模型与调优

  直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

5、模型诊断

  如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。
(1)过拟合、欠拟合
  过拟合、欠拟合判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
(2)误差分析
  误差分析也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
  诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。

6、模型融合

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

7、上线运行

  这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。
  这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

本博文还在完善中…

你可能感兴趣的:(机器学习算法总结)