总共有八个步骤:算法
- 首先你要有一个要解决的问题
- 获取解决问题须要的数据
- 探索数据,对数据有一个清楚的理解
- 预处理数据以便更好地输入给机器学习算法
- 探索不一样的模型而且找到最好的那个
- 调整你的模型参数,并将这些参数组合成一个更好的解决方案
- 展现你的结果
- 对你的系统进行上线、监控和维护
1 规范化问题:Frame the Problem and Look at the Big Picture
- 用商业术语来定义你的目标
- 您的解决方案将如何使用?
- 若是有的话,目前的解决方案/方法是什么?
- 你如何规范化这个问题(有监督/无监督,在线/离线)?
- 模型的效果如何测量?
- 模型测量的指标是否与业务目标(原文为business objective)保持一致?
- 达到业务目标所需的最低模型性能是多少?
- 相似的问题有哪些? 你能够重复使用他们的经验或工具吗?
- 是否是人类专长的问题?
- 你如何人工手动解决这个问题?
- 列出目前为止,你或其余人所作出的假设
- 若是可能的话,验证假设
2 获取数据:Get the Data
- 列出你须要的数据和你须要的数据量
- 查找并记录能够获取该数据的位置
- 检查这些数据须要多少空间
- 检查法律义务,并在必要时得到受权
- 获取访问权限
- 建立一个有足够的存储空间的工做区(能够简单理解为计算机上的文件夹)
- 获取数据
- 将数据转换为您能够轻松操做的格式(不要更改数据自己)
- 确保删除或保护敏感信息(例如:使用匿名)
- 检查数据的大小和类型(时间序列,样本,地理信息等)
- 抽样出一个测试集,放在一边,不要管它
注意:尽量自动化获取数据,这样您能够轻松获取最新的数据数组
3 探索数据:Explore the Data
- 为探索数据建立一份数据副本(若是须要,可将其抽样为可管理的大小)
- 在Jupyter notebook上以记录您的数据探索过程
- 研究每一个属性及其特征
- 名字
- 类型:分类,int / float,有界/无界,文本,结构化等
- 丢失数据的百分比
- 噪音和噪音类型(随机,异常值,舍入偏差等)
- 对任务的有用性
- 数据分布的类型(高斯分布,均匀分布,对数分布等)
- 对于有监督学习任务,肯定标签值
- 可视化数据
- 研究样本属性之间的关系
- 思考如何手动解决这个问题
- 肯定您可能想要应用的数据转换
- 确承认能有用的额外数据
- 将你学到的东西记录下来
注意:尝试从领域专家那里获取这些步骤的看法网络
4 数据预处理:Prepare the Data
- 数据清理
- 根据须要,修复或删除异常值
- 补全异常值(利用零、均值、中位数等)或者删掉此行(或者列)
- 特征选择
- 适当的特征工程
- 对连续特征离散化处理
- 分解特征(例如,分类,日期/时间等)
- 添加有但愿的特征转换(例如,log(x),sqrt(x),x ^ 2等)
- 将特征聚合成新的特征
- 特征缩放:对特征进行归一化或标准化处理
注意:app
- 在数据副本上进行处理(保持原始数据集的完整)
- 对全部数据转换的函数编写代码,缘由有五:
- 能够在下次获取新数据集时轻松处理数据
- 能够在将来的项目中应用这些转换
- 对测试集进行预处理
- 在解决方案生效后清理并准备新的数据实例
- 轻松地将预处理选择做为超参数来处理
5 列出可能的模型:Short-List Promising Models
- 使用标准参数训练不一样类别的快速模型(例如,线性,朴素贝叶斯,SVM,随机森林,神经网络等)
- 测量并比较他们的性能
- 对于每一个模型,使用N折交叉验证并计算N折性能的均值和标准差
- 分析每种算法的重要变量
- 分析模型产生的错误类型
- 快速进行特征选择和特征工程
- 对前面五个步骤进行一两次更快的迭代
- 简短列出前三到五个最有但愿的模型,特别是不一样类型的错误的模型
注意:机器学习
- 若是数据很大,您可能须要抽取较小的训练集,以便在合理的时间内训练不一样的模型(在复杂模型中要特别注意,如大型神经网络或随机森林)
- 再次尝试,尽量自动执行这些步骤
6 模型调整:Fine-Tune the System
- 使用交叉验证对超参数进行微调
- 尝试集成方法。 结合你最好的几个模型每每会比单独更好
- 一旦你对你的最终模型充满信心,在测试集上运行以检测泛化偏差
注意:函数
在此步骤,您须要使用尽量多的数据,特别是在您微调结束的时候
一如既往地自动化你所能作的事工具
7 展现你的方案:Present Your Solution
- 记录下你所作的事情
- 建立一个不错的演示
- 解释您的解决方案为什么可以达到业务目标
- 不要忘记提出你一路注意到的有趣观点
- 描述什么工做是有效的,什么没效
- 列出您的假设和模型系统的局限性
- 确保您关键的研究结果经过美观的可视化或易于记忆的陈述进行传达(例如,“收入中位数是房价的头号预测指标”)
8 上线:Launch!
- 准备好生产环境下的解决方案(插入数据输入,编写单元测试等)
- 编写监控代码,按期检查系统的实时性能,并在性能降低时时触发警报
- 当心模型缓慢的退化:随着数据的发展,模型每每会“腐烂”。
- 衡量吸能可能须要人工流程(例如,经过众包服务)。
- 同时监控您输入的数据质量(例如发送随机值的故障传感器,或其余团队的输出过期)。 这对于在线学习系统尤其重要。
- 按期在新的数据上模型从新训练(尽量自动化)