机器学习项目流程

机器学习项目流程

机器学习项目的主要八个步骤:

来源:(机器学习实战 基于scikit-learn和tensorflow)蜥蜴书

架构问题,关注蓝图

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.  清理和准备测试数据集
  4. 一旦解决方案失效,用来清理和准备新数据实例
  5. 可以轻松地将你的准备选择作为超参数

1、数据清理:

修复或删除异常值(可选)

填充缺失值(使用0,平均数,中位数等)或删除改行

2、特征选择(可选)

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

3、在适当情况下,处理特征

离散连续特征

分解特征(如分类、日期、时间等)

添加期望的特征转换(log,sqrt等)

聚合特征称为期望的新特征

列出期望的模型

注意:

  • 如果数据很大,可能需要采样为较小的训练集,以便于在合理的时间内训练不同的模型(这回对诸如大型的神经集或随机森林会造成不利的影响)
  • 尽可能自动化这些步骤
  1. 使用标准参数,从不同类别 (例如线性,朴素贝叶斯,SVM,随机森林,神经网络)中训练需求快速的不成熟的模型
  2. 测量并比较他们的性能:对于每一个模型,使用N倍交叉验证并计算N次折叠的性能测试的均值和标准差
  3. 分析每个算法最重要的变量
  4. 分析模型产生的错误类型:人类用什么样的数据避免这些错误
  5. 快速进行特征选择和处理
  6. 对前面五部进行一两次快速的迭代
  7. 列出前三到五个最有希望的模型,倾向于选择有不同错误类型的模型

微调系统

注意:

你希望为这一步使用尽可能多的数据,特别是在微调结束时

永远尽可能的自动化

1、使用交叉验证微调超参数:

  • 把数据转换选择当做超参数,尤其是不确定的时候(例如,应该用0或者平均值进行填充缺失值吗?,或者直接删除他?)
  • 除非需要研究的超参数值很少,否则更喜欢在网格搜索上随机搜索,如果训练很长,可能更喜欢贝叶斯最优化方法

2、尝试组合方法,组合好几个模型往往比单独的运行效果好

3、一旦你对于最终模型有信心,在测试集上测量他的性能以估计泛化误差

注意:测量泛化误差之后,不要调整模型,只需要开始过度拟合测试集

展示解决方案

1、文档化你的工作

2、创建完美的演示:首先确保突出蓝图

3、解释为什么你的解决方案达到了业务目标

4、不要忘记展示你发现的有趣的地方

  • 描述什么可以工作,什么不可以
  • 列出你的假设和系统的极限

5、确保你的关键发现被完美展示或易于以及的陈述

启动

1、准备好生产环境的解决方案(插入生产数据输入,写单元测试等)

2、编写监控代码、定期检查系统的性能,出问题是及时警报

  • 同样需要考虑缓慢退化;随着数据的增加,模型往往会‘腐烂’
  • 测量性能可能需要的人工流水线(例如:众包服务)
  • 同时监控输入质量(例如发送随机值的故障传感器,或者其他团队的输出过时),这对在线学习系统尤为重要

3、定期对数据重新建模(尽可能的自动化)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值