Machine Learning Project Checklist

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

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

此清单可以指导您完成大多数机器学习项目。 有八个主要步骤:
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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容