Kaggle 上机器学习的八个步骤

选自Kaggle

作者:Ben Hamner

机器之心编译

参与:黄小天

上个月,Kaggle 联合创始人兼 CTO Ben Hamner 在 Quora 上回答了有关 Kaggle、机器学习和人工智能的一系列问题。对于 Hamner 给出的《机器学习的八个步骤》的建议,Kaggle Team 重新整理并做了核心摘要。

现在学习机器学习和人工智能比以往任何时候都更好。近年来,这一领域飞速发展并硕果累累。专家们开源了各种高质量的软件工具和库,新的线上资源和博文也层出不穷。机器学习带动了产业内数十亿美元的收入,催生出了空前的资源和海量的就业机会。但这也意味着如何入门机器学习让人有点无所适从。下面是我的入门方法。如果你在本文中的某处卡住了,请搜索 Kaggle(也许某人以前也遇到了同样问题),并在 Kaggle 论坛上提出问题(如果以前没人提问过该问题),这是找到方向并解决问题的好方法。

1. 挑一个你感兴趣的问题

从一个你想要解决的问题而不是令人生畏的、不系统的主题列表(你可以从谷歌上搜索到很多的机器需诶心资源列表,这里我就不在提供)出发,你会很容易地专注、主动学习。解决问题会促使你更深入更投入,而不是仅仅被动地阅读一些有关机器学习的文章。

选择好的入门问题有几个标准:

  • 问题涵盖了你个人很感兴趣的某一领域

  • 数据随时可用且非常适宜解决问题(否则你的大部分时间将被耗掉)

  • 你可在单台机器上舒服地使用数据(或者数据的一些相关子集)

  • 没有发现问题?被担心!我们通过入门竞赛系列在 Kaggle 上提供了一些很好的机器学习问题。点击 Titanic 竞赛(https://www.kaggle.com/c/titanic)开始。

2. 为你的问题做一个快速、劣质和笨拙的端到端解决方案。

确实很容易在实现细节中或者错误机器学习算法的调试中陷入僵局,而你想要避免它。

在这里你的目标是尽快获得一些超级基本的内容,涵盖端到端的问题:读取数据,并将其处理为适合机器学习的形式,训练基本模型,创造结果并评估其性能。

3. 进行并改进你的初步方案

现在你有了一个功能基准,是时候创新了。试着改进初步方案的每一个组件,并衡量影响,看看在哪里花费时间有意义。很多时候获取更多数据或者改进数据清理和预处理步骤比优化机器学习模型本身有更高的回报率(ROI)。

这个步骤的一部分应该包括动手使用数据——检查各行和可视化分布,以更好地理解其结构和奇特性。

4. 写出并分享解决方案

获得解决方案反馈的最佳方式是写下来并分享。写的过程是梳理解决方案的新方式,并带来更好的理解。这同样会使其他人理解你在做的事情并提供反馈,帮助你学习。这也启动了你的机器学习代表项目集(portfolio),有助于你展示能力并取得工作。

Kaggle 数据集(https://www.kaggle.com/datasets)和 Kaggle 内核(https://www.kaggle.com/kernels)是你分享数据和解决方案、从其他人获得反馈并观察他人如何扩展你的问题的有效方式,并开始充实你的 Kaggle 文件。

Kaggle 上机器学习的八个步骤

5. 在一系列不同的问题上重复步骤 1-4

现在你已经解决了感兴趣的单一问题,然后在一系列不同的领域中多次执行这一操作。

你是从表格数据开始的吗?那就再解决一个涉及更少结构化文本的问题,以及另外一个处理图像的问题。

机器学习问题最初对你而言是结构化的吗?很多创新性和有价值的工作解决的正是如何从一开始把一个松散定义的业务或者研究目标转化为明确定义的机器学习问题。通过这种方式解决一个问题类型。

Kaggle 竞赛(https://www.kaggle.com/competitions)和 Kaggle 数据集为明确定义的机器学习问题和适用于机器学习的原始数据资源提供了一个很好的起点。

6. 认真地参与一场 Kaggle 竞赛(如果你还没这样做)

对于一个数千人正致力解决的同一问题给出最佳答案是一个巨大的学习机会:它促使你对同一问题不断迭代,并使你发现什么可以有效解决问题。

Kaggle 上机器学习的八个步骤

个体竞赛的论坛有着关于其他人如何使用你的方法处理和调试问题的丰富资源,内核提供了关于用简单方法开始解决问题的数据的探索性见解,并且获奖博文(http://blog.kaggle.com/category/winners-interviews/)在最后展示最佳成果。

Kaggle 竞赛也提供了与其他人组队的独特机会。社区人群有着不同的背景和技术,每个人皆可有教和学两种角色。你永远不会不知道,也许你未来的同事也在 Kaggle 社区中。

7. 申请机器学习专业工作

这使你把大部分时间花在机器学习上,并真正提升你的水平。决定你要追求的职位类型并打造与此相关个人代表项目集是一个强有力的起点。如果你还没有准备好面试机器学习职位,那就在目前的职位上接受新项目,寻求咨询机会;并且参与公民黑客马拉松,把握与数据相关的社区服务机会也是获得立足的额外途径。专业工作需要强大的编程能力,并借其极大地提升工作表现——通过重点项目带来的提升将产生很多下游收益。

专业机器学习工作的宝贵机会包括:

  • 机器学习在生产系统中的应用

  • 聚焦机器学习研究,推动最新进展

  • 利用机器学习提升产品和业务决策的探索性分析

8. 教其他人机器学习

教学可以帮你巩固对机器学习核心概念的理解。教他人的方式有很多种,选择最适合自己的一种:

  • 写研究论文(https://papers.nips.cc/book/advances-in-neural-information-processing-systems-29-2016)

  • 发表演讲

  • 写博文(http://blog.kaggle.com/)和教程(http://blog.kaggle.com/category/tutorials/)

  • 在 Kaggle、Quora 和其他网站上回答问题

  • 个人指导和辅导

  • 分享代码实例(在 Kaggle 内核和 GitHub 上)

  • 教课

  • 写书(http://www.deeplearningbook.org)

相关推荐