机器学习项目流程清单

机器学习项目流程清单 前端

 

 

 

 

这份列表可让你学习到如何部署本身的机器学习项目。总共八个步骤: 算法

  1. 首先你要有一个要解决的问题
  2. 获取解决问题须要的数据
  3. 探索数据,对数据有一个清楚的理解
  4. 预处理数据以便更好地输入给机器学习算法
  5. 探索不一样的模型而且找到最好的那个
  6. 调整你的模型参数,并将这些参数组合成一个更好的解决方案
  7. 展现你的结果
  8. 对你的系统进行上线、监控和维护

  1. 规范化问题(抽象成数学问题):Frame the problem and look at the big picture

    明确问题是进行机器学习的第一步。机器学习的训练过程一般都是一件很是耗时的事情,胡乱尝试时间成不是很是高的。 后端

    这里要先将问题抽象成数学问题,指的是咱们明确咱们能够得到什么样的数据,目标是一个分类仍是回归或者是聚类的问题,若是都不是的话,划归为其中的某类问题。 数组

    1. 用商业术语来定义你的目标
    2. 您的解决方案将如何使用?
    3. 若是有的话,目前的解决方案/方法是什么?
    4. 你如何规范化这个问题(有监督/无监督,在线/离线)?
    5. 模型的效果如何测量?
    6. 模型测量的指标是否与业务目标(原文为business objective)保持一致?
    7. 达到业务目标所需的最低模型性能是多少?
    8. 相似的问题有哪些? 你能够重复使用他们的经验或工具吗?
    9. 是否是人类专长的问题?
    10. 你如何人工手动解决这个问题?
    11. 列出目前为止,你或其余人所作出的假设
    12. 若是可能的话,验证假设

       

  2. 获取数据 Get the Data

    数据决定了机器学习结果的上限,而算法只是尽量逼近这个上限。 机器学习

    数据要有表明性,不然必然会过拟合。 分布式

    并且对于分类问题,数据偏斜不能过于严重,不一样类别的数据数量不要有数个数量级的差距。 函数

    并且还要对数据的量级有一个评估,多少个样本,多少个特征,能够估算出其对内存的消耗程度,判断训练过程当中内存是否可以放得下。若是放不下就得考虑改进算法或者使用一些降维的技巧了。若是数据量实在太大,那就要考虑分布式了。 工具

    1. 列出你须要的数据和你须要的数据量
    2. 查找并记录能够获取该数据的位置
    3. 检查这些数据须要多少空间
    4. 检查法律义务,并在必要时得到受权
    5. 获取访问权限
    6. 建立一个足够的存储空间的工做区(能够简单理解为计算机上的文件夹)
    7. 将数据转换为你能够轻松操做的格式(不要更改数据自己)
    8. 确保删除或保护敏感信息(例如:使用匿名)
    9. 检查数据的大小和类型
    10. 抽样出一个测试集,放在一边,不要管它

       

  3. 探索数据(explore the data)
    1. 为探索数据常见一份数据副本(若是须要,可将其抽样为可管理的大小)
    2. 在Jupyter notebook上以记录您的数据探索过程
    3. 研究每一个属性及其特征
      1. 名字
      2. 类型:分类,int / float,有界/无界,文本,结构化等
      3. 丢失数据的百分比
      4. 噪音和噪音类型(随机,异常值,舍入偏差等)
      5. 对任务的有用性
      6. 数据分布的类型(高斯分布,均匀分布,对数分布等)
    4. 对于有监督学习任务,肯定标签值
    5. 可视化数据
    6. 研究样本属性之间的关系
    7. 思考如何手动解决这个问题
    8. 肯定您可能想要应用的数据转换
    9. 确承认能有用的额外数据
    10. 将你学到的东西记录下来
  4. 数据预处理(特征预处理与特征选择)

    良好的数据要可以提取出良好的特征才能真正发挥效力。 性能

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

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

    1. 数据清理
      1. 根据须要,修复或删除异常值
      2. 补全异常值(利用零、均值、中位数等)或者删除掉此行(或者列)
    2. 特征选择

      1)删除对任务无用的属性

    3. 适当的特征工程
      1. 对连续特征离散化处理
      2. 分解特征(例如,分类,日期/时间等)
      3. 添加有但愿的特征转换
      4. 将特征聚合成新的特征
    4. 特征缩放:对特征进行归一化或者标准化处理

注意:

在数据副本上进行处理(保持原始数据集的完整)

对全部数据转换的函数编写代码,缘由有五:

能够在下次获取新数据集时轻松处理数据

能够在将来的项目中应用这些转换

对测试集进行预处理

在解决方案生效后清理并准备新的数据实例

轻松地将预处理选择做为超参数来处理

  1. 训练模型与调优

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

  2. 模型诊断

如何肯定模型调优的方向与思路呢?这就须要对模型进行诊断的技术。

过拟合、欠拟合 判断是模型诊断中相当重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增长数据量,下降模型复杂度。欠拟合的基本调优思路是提升特征数量和质量,增长模型复杂度。

偏差分析 也是机器学习相当重要的步骤。经过观察偏差样本,全面分析偏差产生偏差的缘由:是参数的问题仍是算法选择的问题,是特征的问题仍是数据自己的问题……

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

  1. 模型融合

通常来讲,模型融合后都能使得效果有必定提高。并且效果很好。

工程上,主要提高算法准确度的方法是分别在模型的前端(特征清洗和预处理,不一样的采样模式)与后端(模型融合)上下功夫。由于他们比较标准可复制,效果比较稳定。而直接调参的工做不会不少,毕竟大量数据训练起来太慢了,并且效果难以保证。

  • 记录下你所作的事情
  • 建立一个不错的演示
    • 确保首先突出重点。
  • 解释您的解决方案为什么可以达到业务目标
  • 不要忘记提出你一路注意到的有趣观点
    • 描述什么工做是有效的,什么没效
    • 列出您的假设和模型系统的局限性
  • 确保您关键的研究结果经过美观的可视化或易于记忆的陈述进行传达(例如,"收入中位数是房价的头号预测指标")
  1. 上限运行

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

    这些工做流程主要是工程实践上总结出的一些经验。并非每一个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有你们本身多实践,多积累项目经验,才会有本身更深入的认识。

 

 

本文转自:https://ask.julyedu.com/question/7013

相关文章
相关标签/搜索