机器学习项目清单

本篇博客源于《Hands on Machine Learning with Scikit Learn and Tensorflow》的第二章以及附录B。


一般机器学习项目可以参考下列清单开展,主要包括八个步骤,可以根据实际情况修改:

1. 确定问题

  1. 确定商业目标(整体项目的商业价值)
  2. 如何应用解决方案(机器学习技术在项目中的角色)
  3. 调研现有、成熟的方法(如果有的话)
  4. 确定问题(监督/非监督,在线/离线...)
  5. 选择合理的评价指标,评估机器学习方法的效果
  6. 选择的评价指标是否和商业目标有联系
  7. 确定在满足商业目标的前提下,评价指标的下限是多少(如准确度不能低于多少、误差率不能高于多少等)
  8. 是否有类似的问题,能否复用经验或者工具
  9. 是否需要人类专家
  10. 如何手动解决问题
  11. 列出自己或者他人迄今作出的假设
  12. 如果可能的话可以验证假设是否正确

2. 获取数据

尽可能自动化获取数据的过程,便于获取新数据

  1. 列出所需的数据以及数量
  2. 寻找并且记录下来数据来源
  3. 检查存储数据所需的空间
  4. 检查获取数据是否合法,必要的时候申请授权
  5. 获得接触数据的权限
  6. 创建工作空间(足够的存储)
  7. 获取数据
  8. 将数据转换成容易操作的数据格式(不改变数据本身)
  9. 确保敏感信息被删除或者受保护(脱敏)
  10. 检查数据大小和数据类型(时间序列数据、地理数据等)
  11. 采样得到测试数据集,放到一边,并且绝对不能偷窥测试数据

3. 探索数据

像领域专家一样去努力了解数据

  1. 创建数据副本用于探索(数据量大的情况下采样一部分数据)
  2. 创建Jupyter notebook记录下数据探索过程
  3. 研究每个属性的特征
    3.1 名称
    3.2 类型(类别、整型/浮点数、有限区间/无限区间、文本、结构化数据等)
    3.3 缺失值的百分比
    3.4 噪音及其类型(随机、异常点、近似误差)
    3.5 是否对任务游泳
    3.6 分布类型(高斯、标准、对数等)
  4. 对于监督学习任务,确定目标属性
  5. 可视化数据
  6. 研究数据之间的相关性
  7. 研究如何人工解决问题
  8. 判断哪些数据转换可能有用
  9. 判断是否还可以增加额外的有用数据(重复探索步骤)
  10. 文档化探索数据的收获

4. 准备数据

注意:

  • 在数据副本上操作(保持原始数据无损)
  • 所有应用的数据转换过程都用函数表示:
  • 以后能够更简单地处理新数据
  • 在未来的项目中应用这些数据转换
  • 用于清洗并准备测试数据
  • 解决方案上线后能够用于清洗、准备新数据实例
  • 数据转换的函数可以作为超参数对待
  1. 清洗数据
    1.1 修正或者移除异常点(可选)
    1.2 填充缺失值(零、平均值、中位数...)或者删除缺失行或者缺失列
  2. 特征选择(可选)
    2.1 抛弃对任务无用的属性
  3. 特征工程
    3.1 离散化连续特征
    3.2 分解特征(类别、日期/时间等)
  4. 特征放缩:标准化或者归一化特征

5. 初步选择可能有用的模型

注意:

  • 如果数据集过大,可以采样更小的训练数据集,便于在合理的时间内训练更多不同的模型(需要注意这样做会对复杂的模型不利,例如大型神经网络或者随机森林)
  • 尽可能尝试自动化这些步骤
  1. 快速使用标准参数训练许多模型(线性、朴素贝叶斯、SVM、随机森林、神经网络等)
  2. 度量并且比较它们的表现
    2.1 对于每个模型,采用N折交叉验证,比较在N次试验下评价指标的平均值和标准差
  3. 分析对于每个算法最有意义的变量
  4. 分析模型的误差类型
    4.1 如果是人类,使用什么样的数据会避免这些误差
  5. 快速确定特征选择和特征工程
  6. 快速重复迭代前面的1-5步一到二次
  7. 列出最有效的3-5个模型,不同的模型的误差可能有所不同

6. 微调系统

注意

  • 使用尽可能多的数据
  • 尽可能自动化该过程
  1. 使用交叉验证微调超参数
    1.1 将数据转换的选择也看作是超参数,特别是当自己也不确定数据转换是否有效时(例如,用零还是中位数填充缺失值或者直接删除缺失行)
    1.2 除非超参数非常少,否则更倾向于使用随机搜索而不是网格搜索。如果训练过程太长,更倾向于贝叶斯优化方法。
  2. 尝试使用ensemble方法,将最好的几个模型结合到一起往往比单独模型效果要好
  3. 一旦对最终模型的效果满意,在测试数据上评估模型表现,预估泛化误差。

不要在测试数据上评估后再修改模型,这样做只会导致在测试数据集上过拟合。

7. 展示解决方案

  1. 将所做的工作记录至文档
  2. 做一个好的展示
    2.1 确定能够体现价值
  3. 解释为什么解决方案实现了商业目标
  4. 不要忘记了工作中遇到的有意思的点
    4.1 描述哪些有用,哪些没用
    4.2 列出假设以及系统的限制性
  5. 确保核心发现和前面漂亮的可视化或者经验假设有关系(例如“中位数收入是房价的一个指标”)

8. 部署!

  1. 将解决方案应用到产品中(集成产品数据输入、单元测试等)
  2. 使用监测代码检查系统在正常区间内的实时效果,并且当宕机时预警
    2.1 注意系统缓慢退化:模型会随数据进化而“腐烂”
    2.2 可能需要人工来评估模型表现(众包服务)
    2.3 监控输入数据质量,对于线上学习系统特别重要
  3. 在新数据上重新训练模型(尽可能自动化这个过程)

转载于:https://www.cnblogs.com/yuyin/articles/9874118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值