研究机器学习和人工智能最好的资源是什么?Kaggle 联合创始人的回答
扫描二维码
随时随地手机看文章
由量子位翻译Ben Hammer(Kaggle CTO)在AMA的回答。
你很幸运,要开始研究机器学习和人工智能,现在是比任何时候都好的时机。这个领域近年来在快速发展,专业人士发布并改进着高质量的开源软件工具和库,每天都有新的线上公开课和博客文章出现。机器学习在各个领域每天贡献着数十亿美元的营收,带来了无与伦比的资源和大量工作机会。
这也意味着,在你刚接触这个领域时会有被淹没的感觉。下面是我的入门方法,如果你在研究过程中卡住了,去Kaggle上搜索一下,很可能有人遇到过和你类似的问题,如果没有,可以在我们的论坛上发帖提问,这是个获得指引的好办法。
1. 找一个你感兴趣的问题
从一个你想解决的问题入手,会更容易集中精力,也更有学习的动力,这种方法比照着一份长得吓人的散乱知识点清单来学习要好很多。和被动地阅读相比,解决问题也能驱使你深入到机器学习之中。 好的入门问题有以下几个标准: 涉及你个人感兴趣的领域; 有现成的数据适合用来解决这个问题,否则你需要花大把的时间来找数据; 你能够在一台机器上流畅地处理这些数据,或者它的子集。 想不出来要解决的问题?上Kaggle嘛……Kaggle有个入门系列竞赛,提供了适用于新手的机器学习问题。推荐从泰坦尼克号乘客的生还概率预测( https://www.kaggle.com/c/titanic)开始。
2. 做一个快速、脏乱、黑客范儿的端到端解决方案
初学者很容易陷入一个实现细节之中,或者为错误的机器学习算法仔细调试,你需要避免这种错误。你的目标,是尽可能快地把端到端的基本解决方法做出来:读入数据、把它处理成适用于机器学习的格式、训练一个基本的模型、得出结果、评估它的性能。
3. 改进你的解决方案
现在,基本功能已经实现,发挥创造性的时候到了。你可以尝试对最初解决方案中的每个组件进行优化,然后测试修改带来的作用,搞清楚该在哪个部件上花时间。通常来说,获取更多的数据或者请洗数据之类的预处理步骤,比优化机器学习模型有着更高的投入产出比。 这些步骤可能需要你亲自上手处理数据,比如说通过检查特定的某一行、通过可视化方法来查看数据分布等方式,来更好地理解数据的结构和怪癖。
4. 写出来你的解决方案&分享
想要获得别人对你的解决方案的反馈,最好的方法就是写出来并分享。写出你的解决方案意味着你会以新的方式去看它,并加深理解,也能让别人理解你的工作并做出反馈、帮你学习进步。写作也有助于开始建立机器学习作品集,来展示你的能力,对找工作很有帮助。 我们以Kaggle数据集和Kaggle Kernels为例,它们分别可以用来分享数据和解决方案,从而获得反馈,看其他人如何对你的问题进行扩展。这也是丰富你的Kaggle资料的办法。
5. 在更多问题上重复1-4步
现在,你已经完成了一个自己喜欢的问题,接下来应该在不同领域的问题上多试几次。 你在入门的时候是不是用了表格式的数据?选一个要用到非结构化文本的问题,再试试解决图像相关的问题。 你是不是先解决了一个结构化的机器学习问题?很多有价值的创造性工作,一开始都有赖于从宽泛的商业或研究对象找到一个定义清晰的机器学习问题。 Kaggle竞赛和数据集为机器学习的两个方面:定义清晰的机器学习问题和原始数据来源提供了一个良好的起步点。
6. 认真地参加Kaggle竞赛
和上千人比赛着去解决同一个问题,尽力做到最好,是一个很好的学习机会,这能够驱使你在这个问题上不断迭代,找到解决问题的有效途径。 关于其他人是怎样解决问题排除bug的,针对某个竞赛的论坛上有着丰富的资源,kernels体现了其他人对数据的洞察,并且给你提供了一个轻易的上手途径,获胜者的博客文章则展示了什么样的方法效果最好。 Kaggle竞赛提供了和别人组队的机会,我们的社区成员有着不同的背景和技能,每个人都能从其他人身上学到东西。
7. 在专业领域应用机器学习
这让你在大部分时间中都能接触到机器学习,有助于自我提升。决定你想要成为什么样的角色、建立和这个角色相关的个人项目列表,是一个很好的开端。 如果你还没准备好应聘机器学习相关职位,也可以在你现在的岗位上开辟新项目、寻找提供咨询的机会、参与黑客马拉松和数据相关的社区服务机会、这些都能帮你在机器学习领域立足。专业领域的工作通常需要比较强的编程能力。 在专业领域应用机器学习,有这些价值的机会:
将机器学习用于生产系统;
专注于机器学习研究,将技术发展的最高水平向前推进;
用机器学习进行探查、分析,来提升你的产品和商业决策。
8. 帮助别人研究机器学习
教人学习能帮你巩固对基础概念的掌握。教别人有很多不同的方法,你可以根据自己的风格选一个:
写论文;
做演讲;
写博客文章和教程;
在Kaggle、Quora等网站上回答问题;
亲自指导;
在Kaggle Kernels和GitHub上分享代码;
讲课;
写书。