机器学习自学指南

你有许多方法和资源来学习机器学习:阅读书籍、学习课程、参加比赛和各种可用的工具。在这篇文章中,我想使这些活动更为体系化,并列出一个大致的顺序,以说明在普通程序员到机器学习高手的过程中所要着手什么。

机器学习的四个级别

设想机器学习按能力分为四种水平,这个模型帮助我们思考可用的资源和活动,以及什么时候搞定它们比较好。

  1. 新手
  2. 入门
  3. 中级
  4. 高级

在这我把“新手”和“入门”分开,是想表明一个绝对意义的新手(对这个领域感兴趣的程序员)想要学习的话也是有路可循的。

我们将逐一介绍这四个中的每个级别,着眼于适于各个级别的的资源和活动,帮助你学习更多知识并提高理解深度和技能水平。

以下细则仅供参考,某个级别上的活动或资源很可能也适用于之前或者之后的级别。

我认为这个总体系还是有用的,我很想听听你的想法,在文末留下你的评论吧。

新手

新手是对机器学习感兴趣的程序员。你可能已经开始读一本书、维基百科页面,或参加了一门课程几节课,但还没真正 “搞明白” ;由于得到的建议往往是属于中级甚至高级水平,这确实会使你感到很沮丧。

新手需要亲切友好的介绍。远离代码、教科书和课程,你首先要明白“为什么”、“是什么”、“怎么做”,搞懂这些是为日后进阶奠定基础。

适用于纯新手的活动和资源有:

入门

入门者已经接触到机器学习领域。你已经读完了一本书或学完了一门课程,明确了自己的兴趣,并且还想学习更多;你已经有一点“懂了”,想开始做个什么事儿。

入门者确实需要去做些什么。你需要付诸实践,才能将这些学习资料融会贯通,整合到到自身现有的知识体系中,比如你已掌握的编程语言或者习惯解决的问题。

适用于新手的活动和资源有:

  • 完成课程:参加并完成斯坦福机器学习之类课程;记好笔记,尽可能地完成作业,提出问题。
  • 阅读书籍:不是阅读教科书,而是读像上面列出的针对初学者程序员的友好的书籍。
  • 学习工具:学习如 Scikit-LearnWEKAR或类似的工具或库。具体来说,学习如何运用你在书本或课程中读到或学到的算法,在实践中领会它。要习惯于在学习时动手尝试。
  • 写一些代码:实现一个稍简单的算法,如感知器、k-近邻算法或线性回归。编写小程序以阐明思路,并学习使之运行的细枝末节。
  • 完成教程:参考并完成教程。你可以开始建立一个目录,记录你用数据集、脚本乃至源代码完成的小项目完成,以便回顾、阅读和思考。

中级

作为入门者,你需要已经读了一些书,并完成了一些课程。你应当知道如何运用一些工具,并写了许多代码,实现了简单的算法和完成了一些教程。而一个中级学习者则应突破自己,通过自行设计项目来学习新技术,并与更大的社区互动和学习。

中级学习者应学习如何准确、有效地实现和运用算法,你还要掌握以下技能:花费了大量时间在预处理数据上,理清、总结和思考其所能回答的问题类型。

适用于中级水平的活动和资源有:

  • 小型项目:设计可用机器学习解决问题的小型项目和实验。这就像设计和执行自己编写的教程,以探索你感兴趣的技术。你还可以实现一个算法或链接到提供该算法的库。详细了解小型项目
  • 数据分析:习惯于探索和总结数据集。创建自动化报告;了解何时运用何种工具;收集你能够挖掘、清洗的数据;找到能够锻炼技能和交流趣事的地方。
  • 阅读教科书:阅读和内化机器学习的教科书。掌握技术的数学描述,并熟悉算法和问题表述形式公式化往往是很困难的。
  • 编写插件:为开源机器学习平台和库编写插件和包,作为学习编写稳健和生产级算法实现的练习。在项目中使用自己的插件,从社区寻求代码评审,如何可以的话,让平台整合你的代码中。你的目标是取得反馈并从中学习。
  • 比赛:参加机器学习比赛,比如与学术会议相关的,或者像 Kaggle 这样的平台提供的。参与讨论,提出问题,了解其他参与者如何处理问题。将你可以吸收学习的项目、方法和代码添加到你的知识库里。

高级

一个高级学习者已经写了大量代码,整合机器学习算法或者包括自己实现的算法。你可能参加过比赛或者写过插件,且已经阅读了课本,完成了课程,对这个领域有广泛的了解,以及对你偏好的几个关键技术有深入的了解。

高级学习者建立、部署和维护使用机器学习的生产级系统;掌握这些领域中的新动态;热切寻找和发掘其他前沿从业者同你自己的方法和技巧上的细微区别。

适用于高级学习者的活动和资源有:

  • 定制算法:修改算法以满足你的需求,也包括根据类似问题所在领域的会议和期刊论文中的概述实现定制。
  • 新的算法:设计基于一般形式的全新方法以迎接你遇到的挑战。更重要的是要取得最好的结果,而不是推进领域的前沿。
  • 案例分析:阅读甚至再现机器学习大赛和其他从业者的案例分析。这些“我是怎么做的”论文和帖子通常充满了专业人员在数据准备、特征工程和技术选用中的巧妙诀窍。
  • 方法论:无论是正式用或者自用,确保程序条理化。你有办法解决问题,并在这一点上取得成果,但更要积极寻找方法,通过技巧、实践和新的更好的技术来进一步完善和改进这一程序。
  • 科研:参加会议、阅读研究论文和专著,与该领域的专家交谈。你可以完成你的研究成果,并付梓出版,或者放在博客上,然后回去继续工作。

学海无涯,学无止境。你可能在过程中的任何时候停下来和绕点路钻研,成为 “竞赛狗” ”或“ 图书馆常客 ”。实际上,我倒希望这样的绕路成为常态。

这个细则可视为是技术人员从初级到高级的学习之旅的线性路径,且有意以程序员为中心。欢迎指正此文,以便我能够改善它。同时,此文仅作为我个人的建议,希望在可以参与的活动类型方面,给那些在上述级别而渴求更多类似学习材料的人带来帮助。

那么,你现在在什么级别呢?接下来打算做什么呢?在下方发表你的评论吧!

更新:在 Reddit 讨论。

本文的版权归 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

数据科学求职丨简历中应避免的四个错误

通过了解数百家公司在招聘过程,我们了解到哪些简历是公司所青睐的,以及哪些简历是会被否决。

17310
来自专栏AI科技评论

八步拿下数据科学,攻克 “21世纪最性感的工作”

在数据科学(Data Science)领域,除了“什么是数据科学”这个问题以外,大家最感兴趣的问题就是“如何学习数据科学?”其实这个问题除了新手会问,有时候领域...

27970
来自专栏华章科技

在twitter搞数据科学是怎样一种体验?

2015年6月17日是我在Twitter工作两周年的纪念日。回想起来,两年间,数据科学在Twitter的应用方式和范围发生了很大变化:

10430
来自专栏数据科学与人工智能

知识图谱的应用

导读 知识图谱 (Knowledge Graph) 是当前的研究热点。自从2012年Google推出自己第一版知识图谱以来,它在学术界和工业界掀起了一股热潮。各...

1.3K80
来自专栏CDA数据分析师

数据科学家:那些年,我都学过哪些编程语言…

我们对事物的看法各不相同,有时他人特别喜欢的语言可能会成为另一个人的的噩梦。而我个人的噩梦是用C语言进行日常的编程工作。

16020
来自专栏JAVA高级架构

架构漫谈(四):如何做好架构之架构切分

架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问...

265100
来自专栏AI科技大本营的专栏

基于知识图谱的人机对话系统 | 公开课笔记

人机对话系统,或者会话交互,有望成为物联网时代的主要交互方式。而语言的理解与表达和知识是密切联系的,知识图谱作为一种大规模知识的表示形式,在人机对话系统中各模块...

45510
来自专栏机器学习算法与Python学习

为什么程序员一定要学深度学习

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 对于深度学习,我也是一个初学者,能力...

35340
来自专栏CDA数据分析师

避免这7个数据错误,让你的数据分析更有效率!

? 编译 Harris 本文转自机房360,转载需授权 数据正在成为现代企业的一个更重要的工具,几乎可以作为一种货币,它可以从衡量营销活动的有效性到评估员...

38280
来自专栏机器之心

Python扩大领先优势,PyTorch仅占6.4%:2018年数据科学语言&工具排名

14660

扫码关注云+社区

领取腾讯云代金券