有很多方法可以学习机器学习。
您可以阅读书籍、参加课程、参加比赛以及使用各种工具。
在这篇文章中,我想围绕这些活动构建一些结构,并建议一个大致的顺序,说明在您从程序员转变为机器学习专家的旅程中,何时应该学习哪些内容。
机器学习的四个层次
考虑机器学习的四个能力层次。这是一个模型,可以帮助我们思考可用的资源和活动,以及何时适合进行这些活动。
- 初学者
- 新手
- 中级
- 高级
我想在这里区分初学者和新手,因为我想表明一个绝对的初学者(一个对该领域感兴趣的程序员)如果选择,他们也有一条前进的道路。
我们将遍历这四个层次,并考察可以帮助处于某个层次的人学习更多、提高理解力和技能的资源和活动。
这个细分只是一个建议,某些层次之前或之后的活动或资源在给定的层次中可能非常有用和适当。
我认为整体结构很有用,我非常想听听您的想法,请在下方留言评论。

由 pugetsoundphotowalks 贡献,部分权利保留
初学者
初学者是指对机器学习感兴趣的程序员。他们可能已经开始阅读一本书、维基百科页面,或者参加了几门课程,但他们还没有真正“理解”它。他们感到沮丧,因为他们得到的建议是针对中级和高级水平的。
初学者需要一个温和的介绍。远离代码、教科书和课程。他们首先需要了解“为什么”、“是什么”和“如何”,为新手级别的材料奠定基础。
以下是一些适用于绝对初学者的活动和资源:
- 书籍介绍:阅读面向程序员的优秀机器学习和数据挖掘书籍的介绍,例如:
- 概览视频:观看向非专业观众介绍机器学习的演示文稿。一些例子包括: Tom Mitchell 的访谈 和 Peter Norvig 在 Facebook Tech Talk 上关于大数据。
- 与人交流:询问他们是如何开始接触这个领域的,他们推荐给初学者的资源有哪些,以及是什么让他们对这个领域感到兴奋。
新手
新手已经接触过机器学习领域。他们读过书或上过课。他们知道自己对此感兴趣,并想了解更多。他们开始理解了,并想开始动手实践。
新手需要做一些事情。他们需要付诸行动,以便将材料扎实地融入现有的知识结构中,例如他们熟悉的编程语言或他们习惯解决的问题。
以下是一些适用于新手的活动和资源:
- 完成课程:参加并完成斯坦福大学机器学习课程等课程。做大量笔记,尽可能完成作业,提出很多问题。
- 阅读书籍:不是教科书,而是像上面列出的面向初学者的友好书籍。
- 学习工具:学习使用或库,如 Scikit-Learn、WEKA、R 或类似的工具。具体来说,学习如何使用你在书本或课程中学到的算法。亲眼看看它的运作,并在学习它们的同时尝试不同的方法。
- 编写代码:实现一个更简单的算法,如感知器、k-近邻或线性回归。编写小程序来揭开方法的神秘面纱,并学习实现它所需的所有微观决策。
- 完成教程:跟随并完成教程。开始构建一个包含你完成的小项目、数据集、脚本甚至源代码的目录,以便你回顾、阅读和思考。
中级
新手已经读过一些书并完成了一些课程。他们知道如何使用一些工具,并且已经编写了很多代码,包括实现简单的算法和完成教程。中级学习者开始独立钻研,构思自己的项目来学习新技术,并与更广泛的社区互动和学习。
中级学习者正在学习如何准确、熟练、稳健地实现和运用算法。他们也正在培养花大量时间处理数据、清理数据、总结数据以及思考数据可以回答哪些问题的技能。
以下是一些适用于中级学习者的活动和资源:
- 小型项目:构思小型编程项目和实验,将机器学习用于解决问题。这就像设计和执行自己的教程,以探索你感兴趣的技术。你可以实现一个算法,或链接到一个提供该算法的库。 了解更多关于小型项目的信息。
- 数据分析:熟悉数据集的探索和总结。自动化报告,知道何时使用何种工具,并寻找可以探索、清理数据并从中练习技术并传达有趣信息的数据。
- 阅读教科书:阅读并内化机器学习教科书。这可能需要掌握对技术进行数学描述的技能,并认识描述问题类别和算法的正式化。
- 编写插件:为开源机器学习平台和库编写插件和包。这是一个学习如何编写健壮的、生产级别的算法实现的练习。在项目中使用你自己的插件,请求社区进行代码审查,并努力将代码纳入平台(如果可能)。获得反馈和学习是目标。
- 竞赛:参加机器学习竞赛,例如与会议相关的竞赛或在 Kaggle 等平台上提供的竞赛。参与讨论,提出问题,了解其他从业者如何处理问题。为你可从中汲取的项目、方法和代码库增加内容。
高级
高级从业者已经编写了大量的代码,无论是集成机器学习算法还是自己实现算法。他们可能参加过竞赛或编写过插件。他们读过教科书,上过课,对该领域有广泛的了解,并且对他们偏爱的几项关键技术有深入的了解。
高级从业者构建、部署和维护使用机器学习的生产系统。他们紧跟该领域的最新发展,并积极寻找和学习一种方法的细微差别以及其他一线从业者传递的技巧。
以下是一些适用于高级从业者的活动和资源:
- 定制算法:修改算法以满足他们的需求,这可能涉及实现会议和期刊论文中针对相似问题域概述的定制。
- 新算法:根据底层形式化方法,设计全新的方法来应对遇到的挑战。这更多地是为了获得最佳结果,而不是推进该领域的边界。
- 案例研究:阅读甚至重现为机器学习竞赛和其他从业者完成的案例研究。“我如何做到的”论文和帖子通常充满了关于数据准备、特征工程和技术使用的微妙技巧。
- 方法论:流程的系统化,无论是正式的还是为自己而设的。此时他们已经有了一种解决问题并获得结果的方法,并且他们正在积极寻找方法,通过技巧、最佳实践以及新的和更好的技术来进一步完善和改进该流程。
- 研究:参加会议,阅读研究论文和专著,与该领域的专家交流。他们可能会写下他们的一些工作并提交发表,或者只是将其发布在博客文章中,然后继续工作。
精通是持续的,学习永无止境。一个人可以在这次旅程的任何一点暂停和绕道,成为“竞赛达人”或“专业库达人”。事实上,我预计这样的绕道将是常态。
这个细分可以被看作是技术人员从初学者到高级水平的线性路径,它是有意以程序员为中心的。我非常想听听对这一解读的批评,以便我能做得更好。这个细分只是我在给定层次上对要解决的活动类型的建议。
那么你处于哪个级别,接下来打算做什么?留言评论!
更新:继续在 Reddit 上讨论。
加入关于本指南的讨论,请访问 reddit.com/r/MachineLearning。
谢谢。对我来说非常有帮助。
很高兴听到这个 @Hamed,谢谢。
你好,
我是 Oracle ERP 技术顾问,已有 14 年经验,并在 1997-2002 年获得了数学硕士学位。
我特意转向分析领域并开始学习。
我从 R 和机器学习开始。这篇文章将帮助我规划我的机器学习之路。
谢谢
很高兴听到这个 Ruma。
嗨 Jason,很高兴你关注了这样一个先进且快速发展的领域。我的问题是,我来自 Java 背景,对 Python 不了解,但大多数 ML 书籍都使用 Python。请建议我该如何成为 ML 专家?我是一名没有 ML 背景的新手。
考虑从 Weka 开始
https://machinelearning.org.cn/how-to-run-your-first-classifier-in-weka/
嗨 Jason,我想问你是否可以提供一些“我是如何做到”的论文来源?据我所知,Kaggle 上有一些,Netflix 竞赛也有,但我想要更多。提前感谢!
嗨 Yunhan,问得好。
Kaggle 博客是我所知道的最好的来源。他们称之为“获胜者访谈”。
http://blog.kaggle.com/category/winners-interviews/
嗨,Jason,
我是一名高级 Linux 系统管理员。
我希望将机器学习作为职业道路。但我不知道如何继续学习机器学习。
你能在这方面指导我吗?
此致:Raghavendra. R. Vastrad。
我最好的建议是从这里开始
https://machinelearning.org.cn/start-here/#getstarted
我很乐意回答你的任何问题。
Jason Brownlee 亲爱的,您的解释非常棒,您做得太棒了……。
谢谢 Asif。
谢谢,Jason
我是一个对机器学习很感兴趣的初学者。我正在尝试将机器学习与我自己的领域联系起来。我不在互联网领域。我只想利用我的仪器数据来提取一些仪器原理无法直接获得的更深层信息。此外,我尝试使用这些更深层的信息来提高仪器的分辨率或容量。希望您能提供一些建议。
嗨 Francis,
这个过程可能会帮助你解决你的问题。
https://machinelearning.org.cn/start-here/#process
这有帮助吗?
嗨,Jason,
我计划学习机器学习,那么我们可以使用哪种最好的编程语言(Python/R)?
谢谢
Python
https://machinelearning.org.cn/start-here/#python
Jason,这是一篇很棒的文章。我把自己定位为新手。你能否分享一些关于学习/练习自动化报告的资源?非常感谢。
太棒了!
也许这篇文章可以帮助你定义你的预测问题。
https://machinelearning.org.cn/how-to-define-your-machine-learning-problem/
我指的是您在中级水平提到的“数据分析:熟悉数据集的探索和总结。自动化报告,知道何时使用何种工具,并寻找可以探索、清理数据并从中练习技术并传达有趣信息的数据”。
啊,我明白了,抱歉我的困惑。
这非常具体于问题/数据。我建议寻找你正在使用的报告,或者可以添加预测或分类以增加价值的报告。
或者,你可以选择一个现有的报告,它做了一些统计分析,然后用 R 或 Python 重写它,以便熟悉这些库和基本统计。
希望这能有所帮助。
嗨 @Jason,很棒的文章,我开始了一个技术博客,想在征得你同意的情况下在我的博客上发布这篇文章,为了避免任何版权问题,网站将被引用为来源。请告诉我这是否可以。谢谢。
请不要转载我的材料。
很棒的文章,Jason。拥有一个清晰的关于一个人应该追求的阶段的概述,以便在机器学习领域获得精通,这是非常有用的。一如既往,您的文章充满了智慧。恭喜!🙂
谢谢。
感谢您帮助我更多地了解机器学习。我不知道一个被认为是中级的人可以自己制定项目来学习新技术。如果这些技术可以改进他们的编程,甚至为未来的新创新奠定基础,那听起来就很有用。
我很高兴它有所帮助。你不需要许可,放手去做,弄得乱七八糟!学习知识!
你好!我是来自印度的 MUHAMMAD IQBAL,已完成计算机应用硕士学位。
我曾考虑再次攻读人工智能、机器学习和深度学习的研究生。但是,在阅读了你的博客后,我决定不参加耗时长的课程,而是开始了自己的学习方式。
我已经完成了 Jose Partilla 在 Udemy 上提供的 Python 机器学习和数据科学课程,这让我对 ML 和数据科学有了很多了解。
我现在正在学习加州大学圣地亚哥分校的数据科学课程。
你的博客很棒。
继续努力!
保持出色!我会说“恭喜”!
一位充满活力的老师,品质无与伦比。
谢谢,谢谢,非常感谢!
谢谢,祝你好运!
我很乐意提供建议和帮助,如果我能做到的话。
我必须感谢您付出的时间,尤其是这篇精彩的文章!我真的很喜欢每一部分,并且还为您的网站上的新信息添加了书签。
我只是想感谢您为没有背景、没有明确起点的人整理了这些资源。
我获得了结构生物学与生物化学硕士学位,随着 AlphaFold2 的出现以及 DeepMind 的惊人工作,我感到我的领域在机器学习模型面前迅速缩小,我的专业知识变得过时,这些模型可以将整个研究生论文的工作量缩减到几分钟的模拟。
激动人心而又动荡的时代。
谢谢 Lukas 的支持和反馈!我们非常感激!