【读书笔记】【机器学习实战】第二章:端到端的机器学习项目

阅读书籍为《Hands-On Machine Learning with Scikit-Learn & TensorFlow》王静源等翻译的中文译版《机器学习实战,基于 Scikit-Learn 和 TensorFlow》

本章通过一个端到端的项目从开始的问题分析到最后的运行维护细致详细地介绍了一个完整的机器学习流程;

完整流程如下:

  1. 观察大局,分析问题:1. 定义目标,需求,功能;2. 定义问题(监督/无监督/, 在线/离线, 回归/分类等);3. 是否可以手动解决,如何手动解决;4. 定义衡量指标;5. 有无相似问题,有无可重用方案,提出自己的假设;6. 验证上述方案;
  2. 获得数据:1. 列出所需数据及数据规模;2. 检查数据及算法所需空间;3. 确认数据获取的合法权限;4. 创建工作区;5. 获取数据;6. 转换数据至合适格式(不改变数据本身);7. 检查数据类型和规模;8. 均衡分离测试集(避免后续数据窥探的发生);
  3. 研究数据:1. 创建数据副本,保护原始数据;2. 创建一个单独的.py文件用来数据研究;3. 研究每个属性及其特征(有无缺失值,缺失值的规模/噪音以及噪音的规模/分布类型);4. 可视化数据,观察数据走势;5. 可视化属性,观察属性之间的关系,研究属性间的相关性;6. 是否可以从数据中提取或添加新属性以便减少空间小号和获得更大的相关性。7. 记录这一步所获得的新知识,以及确保原始数据安全(以便发生问题进行数据恢复);
  4. 准备数据:1. 对副本操作,确保原始数据集安全;2. 编写数据转换函数;3. 清洗数据噪音以及缺失(平均数,中位数,或放弃等操作);4. 特征删除,提取,添加或转换成更容易计算的类型(对数,平方,开方等);5. 对于有明显分层的数据集(比如年龄段,收入段,性别等),测试集与训练集分离时都需要考虑分层抽取相应比例,保证数据均衡;
  5. 选择和训练模型:1. 测试集中分离出适当规模的数据进行训练,以节省时间;2. 使用标准参数从不同类型的模型(线性,朴素贝叶斯,SVM,随机森林,神经网络等)中训练模型;3. 测量比较上述模型性能;4. 分析每个算法中的重要变量;5. 分析模型错误产生的原因;6. 快速进行特征选择和处理;7. 对上述2-6步骤进行一两次快速迭代;8. 选择出有不同错误类型的2-4个最有希望的模型;
  6. 微调模型:1. 使用交叉验证微调超参数;2. 尝试组合多模型;3. 确定模型后,测量性能记忆在测试集上的泛化误差;
  7. 展示解决方:1. 文档化所做工作;2. 创建完美的演示;3. 解释为什么当前的解决方案到达了业务目标;4. 展示系统的针对性和局限;5. 确保客户对方案印象深刻;
  8. 启动,监控和维护系统:1. 为系统建立数据的输入,进行单元测试等;2. 编写监控代码, 定期检查系统性能;3. 定期对新数据重新建模(尽可能自动化);,8. 启动,监控和维护系统:1. 为系统建立数据的输入,进行单元测试等;2. 编写监控代码, 定期检查系统性能;3. 定期对新数据重新建模(尽可能自动化);

本篇笔记参考书籍第二章以及附录B撰写。由文中模型训练之前的篇幅笔墨可见对于问题定位,数据的分析及处理占据了项目的大部分时间,不难看出模型的训练及调整所占的比例和重要性远远不及对于问题的分析把握和对数据的熟悉程度。这一点在笔者整个计算机学习及解决问题的过程中也是有所感受。希望我们在系统完成的过程中避免跌入只执着与算法的怪圈而问题的分析把握和整体流程的进行。

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页