美文网首页
Machine Learning Project Checkli

Machine Learning Project Checkli

作者: 博士伦2014 | 来源:发表于2018-09-26 16:10 被阅读0次

    禁止一切形式转载
    作者按:本来打算给英文版,但是考虑到易于使用就直接给中文版了,其次有些术语不知道用中文该如何准确表达,所以直接用了英文。

    作为一个具有良好习惯的数据科学家,在拿到一个问题时,要做的第一件事就是制作出您的机器学习项目清单。 这个笔记给出了一个可供参考的机器学习项目清单,它应该适用于大多数机器学习项目,但要确保适应您的需求。

    此清单可以指导您完成大多数机器学习项目。 有八个主要步骤:
    1.问题框架化,视野宏观化
    2.获取数据
    3.探索数据以获得 深层次见解
    4.准备数据以更好地将基础数据模式提供给机器学习算法
    5.探索不同的模型并列出最优模型
    6.微调模型并将它们组合成一个很好的解决方案
    7.展示您的解决方案
    8.运行,监控和维护您的系统
    实际操作中您可以随意调整此清单以满足您的具体需求

    1. 问题框架化,视野宏观化-Frame the Problem and Look at the Big Picture

    1.用术语定义项目目标
    2.您的解决方案将如何使用?
    3.目前的解决方案/解决方法是什么(如果有的话)?
    4.你应该如何构建这个问题(监督/无人监督,在线/离线等等)?
    5.如何衡量表现?
    6.表现衡量标准是否与项目目标一致?

    2. 获取数据-Get the Data

    注意:尽可能自动化,以便您轻松获取新数据。
    1.列出您需要的数据以及您需要的数据数量
    2.查找并记录您可以从哪里获取该数据
    3.检查需要多少内存空间
    4.检查法律义务,并在必要时获得授权
    5.获取访问权限
    6.创建工作区(具有足够的存储空间)
    7.获取数据
    8.将数据转换为您可以轻松操作的格式(不更改数据本身)
    9.确保删除或保护敏感信息(例如,匿名)
    10.检查数据的大小和类型(时间序列,样本,地理位置等)
    11.对测试集进行采样,将其放在一边,不要看它(没有数据窥探!)

    3. 探索数据-Explore the Data

    注意:尝试从相关领域专家那里获取有关这些步骤的见解。
    1.创建用于探索的数据副本(将其抽样为可管理的大小如有必要)
    2.创建一个Jupyter笔记本以记录您的数据探索
    3.研究每个属性及其特征:

    • 名称
    • 类型(分类,整数/浮点数,有界/无界,文本,结构化等)
    • 缺失值的百分比
    • 噪音和噪音类型(随机,异常值,舍入误差等)
    • 可能对任务有用吗?
    • 分布类型(高斯,均匀,对数等)

    4.对于监督学习任务,确定目标属性
    5.可视化数据
    6.研究属性之间的相关性
    7.研究如何手动解决问题
    8.确定您可能想要应用的有希望的转换
    9.确定有用的额外数据(请返回上一步“获取数据”)
    10.记录你学到的东西

    4. 准备数据-Prepare the Data

    注意:

    • 处理数据副本(保持原始数据集完整)
    • 为您应用的所有数据转换编写函数,原因有五:
      — 您可以在下次获得新数据集时轻松准备数据
      — 您可以在将来的项目中应用这些转换
      — 清洁和准备测试集
      — 在解决方案生效后清理和准备新的数据实例
      — 使您可以轻松地将您的准备选择视为超参数

    1.数据清理:

    • 修复或删除异常值(可选)
    • 填写缺失值(例如,零,均值,中位数......)或删除它们的行(或列)

    2.特征选择(可选):

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

    3.特征工程,适当时:

    • 使连续特征具体化
    • 分解特征(例如,分类,日期/时间等)。
    • 添加有用的特征转换(例如,log(x),sqrt(x),x ^ 2等)
    • 将特征聚合为有用的新特征
    • 有两种编码方式:labelEncoding和OneHotEncoding。对于回归问题,更多使用labelEncoding。对于分类问题,更多使用OneHotEncoding。

    4.特征缩放:将特征 standardize or normalize

    5. 探索不同的模型并列出最优模型-Short-List Promising Models

    注意:

    • 如果数据量很大,您可能需要对较小的训练集进行采样,以便进行训练
      在合理的时间内有许多不同的模型(请注意,这会对诸如大型神经网络或随机森林等复杂模型进行处罚)
    • 再次尝试尽可能自动化这些步骤

    1.训练quick and dirty models from different categories(例如,线性,朴素贝叶斯,SVM,随机森林,神经网络等)使用标准参数(默认参数)
    2.衡量并比较他们的表现

    • 对于每个模型,使用N-fold 交叉验证并计算平均值和 N folds 上的性能测量的标准偏差

    3.分析每种算法的最重要变量

    4.分析模型所犯的错误类型

    • 人类用什么数据来避免这些错误?

    5.进行快速的特征选择和特征工程
    6.对前面五个步骤进行一次或两次快速迭代
    7.列出前三到五个最有希望的模型,更倾向于那些出现不同类型错误的模型

    6. 微调模型并将它们组合成一个很好的解决方案-Fine-Tune the System

    注意:

    • 您将希望在此步骤中使用尽可能多的数据,尤其是在进行到微调快结束时
    • 始终如一地尽可能实现自动化

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

    • 将数据转换选择视为超参数,尤其是在你不确定它们时(例如,我应该用零或中值更换缺失值? 或者直接删除这一行?)
    • 除非要探索的超参数值非常少,否则更倾向于使用随机搜索网格搜索。 如果训练时间很长,您可能更喜欢贝叶斯训练优化方法(例如,使用高斯过程先验,as described by Jasper Snoek,Hugo Larochelle和Ryan Adams

    2.尝试Ensemble方法。 结合最佳模型通常会表现得更好,而不是单独运行它们
    3.一旦你对自己的最终模型充满信心,就可以在测试集上来估计泛化误差进而衡量它的表现

    在测量泛化误差后不要调整模型:您只需要开始过拟合测试集(此处颇为不解)

    7. 展示您的解决方案-Present Your Solution

    1.记录你所做的事情
    2.创建一个漂亮的演示文稿

    • 确保首先突出显示大图

    3.解释为什么您的解决方案可以实现项目目标
    4.不要忘记提供沿途注意到的有趣点

    • 描述哪些有效,哪些无效
    • 列出您的假设和系统的限制

    5.确保通过精美的可视化或易于理解的表达来阐述您的关键点
    (例如,“收入中位数是房价的第一预测因素“)

    8. 运行,监控和维护您的系统-Launch!

    1.准备好生产解决方案(插入生产数据输入,写入单元测试等)
    2.编写监控代码,以定期检查系统的实时性能,并在它下降时触发警报。

    • 谨防缓慢退化:随着数据的发展,模型往往会“腐烂”。
    • 测量性能可能需要人工管道(例如,通过众包服务)。
    • 同时需要监控输入的质量(例如,发送随机值的故障传感器,或其他团队的输出变得陈旧)这对在线学习系统尤为重要

    3.定期根据新数据重新训练模型(尽可能自动化)

    参考

    Hands-On Machine Learning with Scikit-Learn and Tensorflow

    相关文章

      网友评论

          本文标题:Machine Learning Project Checkli

          本文链接:https://www.haomeiwen.com/subject/svodoftx.html