机器学习项目流程检查单

翻译自Hands-On Machine learning with Scikit-Learn and TensorFlow
APPENDIX B : Machine Learning Project Checklist

机器学习项目清单

本清单引导你实践一个机器学习项目。主要包括8步:
1、问题构建及全局控制
2、获得数据
3、探索并了解数据
4、准备数据,从而更好的发现机器学习算法需要的潜在数据模式
5、探索多种不同模型并选取几个最优模型
6、优化模型并组合成最好的解决方案
7、提出方案
8、上线、监视并维护系统
显然,你应该根据需要随时调整这个清单

问题构建及全局控制

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 notebook来记录你的数据探索
3、研究每个属性以及它们的特征:
 名称
 类型(类别,int/float,有界的/无界的,文本,结构化的,等等)
 缺失值百分比
 噪度和噪声类型(随机的、离群值、舍入误差等)
4、对于有监督学习任务,识别目标属性
5、可视化数据
6、研究属性之间的相关度
7、研究怎样手工解决问题
8、识别有用的转换
9、识别有用的附加数据
10、已经学习的文档

准备数据

注意:
在数据副本上进行操作(保持原始数据完整)
为所有数据编写转换函数,因为:
 可以在下次获取新数据集时方便的准备数据
 可以在将来的项目中使用这些转换方法
 用来清洗并准备测试数据集
 使得将制备选择作为超参时更容易
1、数据清洗:
 处理或删除离群值(可选)
 填充缺失值(例如:用0,均值、中位数…)或删除它们所在的行(或列)
2、特征选择(可选)
删除对任务无有用信息的属性
3、特征工程(视情况):
 离散化连续特征
 分解特征(如:分类的,日期/时间,等)
 进行有用的特征转换(如,log(x),sqrt(x),x^2,等)
 聚合成有用的新特征
4、特征规范化:标准化或正则化特征

选出可用的模型

注意:
 如果数据规模很大,可能要采样出小的训练集从而适用于在合理时间内训练多个不同模型(要意识到这对复杂模型如大规模神经网络或随机森林不利)
 再一次说明,尽可能使下面步骤自动化
1、使用标准参数训练多个迅速而又随性的不同类别的模型(如:线性、朴素贝叶斯,SVM,随机森林,神经网络等)
2、评估并比较性能
对每个模型,使用N折交叉验证,并计算N折性能评估的均值和标准差
3、对每个算法分析最重要变量
4、分析每个模型产生的错误类型
要避免这些错误,人会使用什么数据
5、进行一轮快速的特征选择和工程化
6、对前五步进行一到两次快速迭代
7、选出3至5个表现最好的模型,优化模型

系统调优

注意:
 本步中要使用尽可能多的数据,特别是要进行最终调优时
 尽可能自动化
1、使用交叉验证优化超参
 将数据转换选择作为超参对待,特别是不能确定怎样处理它们才合适时(例如:是应该用0还是中位数替换缺失值?或只是丢弃行?)
 除非只有很少超参值供选,否则最好使用grid search随机寻找合适参数值。如果训练很耗时,可以优先使用贝叶斯优化方法(如:使用高斯过程优先,如Jasper Snoek, Hugo Larochelle, and Ryan Adams描述的)
2、尝试组合方法。组合最好的模型通常会比单独运行它们性能更好一些
3、一旦确定了最终模型,在测试集上测量性能以估计泛化误差
警告:测量泛化误差后不要调整模型:那会使得模型对测试集过拟合

提交解决方案

1、编写技术文档和分析报告
2、做一个精彩的报告:先确信你强调了全局
3、解释你的方案为什么能达到业务目标
4、不要忘了呈现出过程中的兴趣点
 描述什么有效什么无效
 列出你的假设以及你系统的局限
5、确保你的关键成果通过漂亮的可视化或容易记住的陈述传达(如:收入中值是房价预测中的第一关键因素)

上线

1、为生产环境准备方案(插入生产数据输入,写单元测试,等)
2、编写监控代码以定时检测系统运行表现,掉线时发出警告
 了解慢性恶化:模型在数据演变时趋于腐坏
 性能测量可能需要人为渠道(如:通过众包服务)
 监视输入质量(如:一个故障传感器发送随机值,或其他团队的输出失效)。这对在线学习系统特别重要
3、维持模型使用定期最新数据(尽可能自动化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值