机器学习项目清单

架构问题,关注蓝图网络

  1. 用商业术语定义目标。
  2. 方案如何使用?
  3. 目前的解决方案/办法是什么?
  4. 应该如何架构问题(有监督/无监督,在线/离线,等等)?
  5. 如何测量性能?
  6. 性能指标是否与业务目标一致?
  7. 每一个业务目标须要的最低性能是什么?
  8. 有没有一些类似的问题?能重用一些经验和工具吗?
  9. 有没有相关有经验的人?
  10. 如何手动解决此问题?
  11. 列出目前为止你(或其余人)的假设。
  12. 若是可能的话,验证假设。

获取数据
尽量的自动化,以便获取最新数据。架构

  1. 列出须要的数据及其体量。
  2. 查找并记录获取数据的途径。
  3. 检查须要的空间。
  4. 检查法律义务,必要时获取受权。
  5. 获取访问权限。
  6. 建立工做空间(确保具备足够的存储空间)。
  7. 获取数据。
  8. 将数据转换为可操做的格式(不改变数据自己)。
  9. 确保删除或保护敏感信息。
  10. 检查数据的类型和大小(时间序列、样本、地点等)。
  11. 采样一个测试数据集,放在一边,永远不要用它(没有数据窥视!)。

研究数据以获取灵感机器学习

  1. 建立数据的副本用于研究(若是须要,能够将其抽样为可管理的大小)
  2. 建立一个 Jupyter 笔记原本记录数据研究
  3. 研究每一个属性及其特征:
    名字
    类型(分类、整型/浮点型、有界/无界、文本、结构等)
    缺失值的百分比
    噪音和噪音类型(随机、异常、舍入偏差等)
    可能有用的任务
    分布类型(高斯、统 、对数等)
  4. 对于有监督的学习任务,确认目标属性
  5. 可视化数据
  6. 研究属性之间的相关性
  7. 研究如何手动解决问题
  8. 肯定但愿使用转换
  9. 肯定可能有用的额外数据(回到以前的“获取数据”部分)
  10. 记录学习到的东西

准备数据以更好地将低层模型暴 给机器学习算告函数

在数据的副本上工做(保持原始数据集不变)。工具

编写适用于全部数据转换的函数,缘由有五个:性能

能够很容易地准备下一次获得新数据时的数据

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

清理和准备测试数据集。

一旦解决方案失效,用来清理和准备新数据实例

能够轻松地将你的准备选择做为超参数

1. 数据清理:单元测试

修复或删除异常值(可选)
填充缺失值(例如,使用零、平均数、中位数等)或删除该行(或列)

2. 特征选择(可选):学习

删除不能为任务提供任何有用信息的属性。

3. 在适当状况下,处理特征:测试

离散连续特征;
分解特征性(如,分类、日期/时间等);
添加指望的特征转换(如, log(x)、sqrt(x)、x2等);
聚合特征称为指望的新特征

研究各类不一样的模型,并列出最好的模型优化

  • 若是数据很大,可能须要采样为较小的训练集,以便于在合理的时间内训练不一样的模型。
  • 再次,尽量地自动化这些步骤。

1. 使用标准参数,从不一样类别(例如,线性、朴素贝叶斯、SVM、随机森林、神经网络等)中训练需求快速的不成熟的模型。

2. 测量并比较它们的性能。

对于每一个模型,使用N倍交叉验证并计算N次折叠的性能测试的均值和标准差。

3. 分析每一个算怯最重要的变量。

4. 分析模型产生的错误类型。

人类用什么样的数据避免这些错误?

5. 快速进行特征选择和处理。

6. 对前面五步进行一两次快速迭代。

7. 列出前 到五个最有但愿模型,倾向于选择有不一样错误类型的模型。

微调模型,并将其组合为更好的解决方案
1. 使用交叉验证微调超参数。

把数据转换选择看成超参数,尤为是不肯定时(例如,应该用零或者平均值填充缺失值?或者直接删除?)。
除非须要研究的超参数值不多,不然更喜欢在网格搜索上随机搜索。若是训练很长,你可能更喜欢贝叶斯优化方提(高斯过程进行先验)

2. 尝试组合方怯。组合多个好模型每每比单独运行效果好。

3. 一旦你对最终模型有信心,在测试集上测 它的性能以估计泛化偏差。
提出解决方案
1. 文档化工做。

2. 建立完美的横示。

首先确保突出蓝图。

3. 解释为何你的解决方案达到了业务目标。

4. 不要忘记展现你发现的一些有趣的地方。

描述什么能够工做,什么不行。
列出你的假设和系统的局限。

5. 确保你的关键发现被完美展现或易于记忆的陈述。
启动、监视、维护系统
1. 准备好生产环境的解决方案(插入生产数据输入,写单元测试等)。
2. 编写监控代码,按期检查系统的性能,出问题时及时报警。

  • 一样须要考虑缓慢退化:随着数据的增长,模型每每会“腐烂”。
  • 测量性能可能须要人工流水线。
  • 同时监控输入质量。这对在线学习系统尤其重要。

3. 按期对新数据从新建模(尽量自动化)。

相关文章
相关标签/搜索