机器学习自学路线图

在本帖中,我将为您提供一个切实可行的应用机器学习的自学路线图,您可以利用它来定位自己并确定下一步该怎么做。

我经常思考框架和系统化方法(我的博客上就有证明)。我认为这篇帖子是对我之前关于机器学习自学计划的思考的一次重大扩展,那篇帖子“机器学习自学指南”确实在社区引起了共鸣。

我们开始吧……

you are here

您在这里。
照片由 electricnerve 拍摄,部分权利保留

机器学习路线图

机器学习是一个庞大的研究领域。有如此多的算法、理论、技术和问题类别需要学习,确实会让人感到不知所措。

机器学习也是一门深度交叉学科。您可以从面向程序员的材料跳到面向统计学家的材料,当其中大量假设了先验知识时,确实会让人感到沮丧。

需要的是一种结构化的方法,它提供一个路线图来学习机器学习的主题和细节程度,同时整合书籍和开放课程等流行资源。

这种结构化的方法通过将注意力集中在您需要学习的内容上,来解决不知所措的问题。它通过排序材料的呈现来解决沮丧问题,重点关注实际方面,并为工程师和程序员量身定制。

路线图可以让您根据自己当前的位置和想要去的地方进行定位。

自学是途径

自学意味着按照自己的节奏、自己的方式和自己的时间表进行。

自学是学习机器学习的最佳方式。但这并不意味着您必须独自完成,远非如此。它意味着以对您来说最有效率的方式学习,并利用互联网上最好的课程、书籍和指南。

自学也与本科和研究生等更正式的课程兼容。它意味着积极地将材料整合到您自己的知识库中,并掌握这个过程。通过掌握这个过程,您可以更深入地探索您最感兴趣的领域。

机器学习是一门应用学科,就像编程一样。学习理论很重要,但您必须投入时间来应用理论。您必须练习。这一点至关重要。您需要建立对过程、算法和问题的直观认识。

self study

自学是途径
照片由 scui3asteveo 拍摄,部分权利保留

能力等级

机器学习的学习结构化方法分为四个能力等级。

  1. 初学者
  2. 新手
  3. 中级
  4. 高级

这四个等级的划分基于他们面临的问题和学习目标。反过来,每个等级都有不同的活动可以追求,以实现他们的目标。

各级别的问题

每个能力等级面临着不同的问题,如下所示:

  • 初学者:对机器学习的实际定义感到困惑。海量信息令人生畏。对大多数现有信息中未明确说明的先验知识感到沮丧。
  • 新手:被算法的数学描述吓倒。在将机器学习应用于问题时遇到困难。在寻找机器学习可以研究的问题时感到迷茫。
  • 进阶者:对入门材料感到厌倦。渴望获得更多细节和更深入的见解。迫切希望展示和提升自己的知识和技能。
  • 高级者:痴迷于从系统和解决方案中获得最大收益。寻求更大的贡献机会。受到启发去突破界限。

学习目标

能力层级的每个层级都有一个单一的目标和许多可以为实现该目标而追求的任务。这些目标如下:

  • 初学者:打下清晰的基础,开启在该领域的旅程。
  • 新手:开发并实践应用机器学习的过程。
  • 进阶者:加深对算法、问题和工具的理解。
  • 高级者:开发该领域的扩展,例如算法、问题和工具。

自学活动

每个级别的目标决定了为实现这些目标而应追求的活动类型。您可以设计自己的活动(强烈鼓励您这样做),尽管以下是每个级别建议的活动:

初学者

新手

中级

高级

  • 以结构化的方式开发算法、问题和工具的扩展。
  • 参与社区并做出贡献。

如何使用

这个路线图是一个有用的工具,您可以在通往机器学习精通的道路上以多种方式使用它。

  • 学习指南:将其用作您要完成的目标和活动的线性指南。耐心和努力将使您很快达到高级水平。
  • 精简指南:像上面一样用作线性指南,但将目标缩小到您希望精通的特定机器学习领域,而不是更广泛的应用机器学习领域。这可以是一个特定的问题或一类算法。
  • 信息过滤器:路线图可用于过滤您遇到的信息和资源。这是一个强大的用例,因为您可以快速评估博客文章、文章或书籍是否与您旅程中的水平相关。

这条路适合你!

我为其他工程师和程序员设计了本指南。

  • 您可能知道如何编程。
  • 您可能在职业上从事(或曾经从事)工程师或程序员的工作。
  • 您可能是本科生或研究生。
  • 您对机器学习或数据科学感兴趣。
  • 您可能正在从事机器学习和数据相关工作。
machine learning is a journey

机器学习是一段旅程
照片由 GoodNCrazy 拍摄,部分权利保留

这种方法是为那些已经熟悉开发和构建系统过程的程序员和工程师量身定制的。他们具有计算或逻辑的思维方式,并以系统的角度进行思考。特别是程序员,他们已经熟悉了自动化功能以及算法的复杂性和特性。

这种方法对专业程序员和学习工程、计算机科学或类似学科的学生都非常有效。

  • 您不必是程序员或优秀的程序员。您可以使用 Weka 等具有图形用户界面的现成工具来解决机器学习问题并应用机器学习算法。
  • 您不必是数学家或统计学家。您可以在学习特定算法时,只学习该算法所需的统计学、概率和线性代数知识,而无需在开始机器学习之前花费 3 年的时间学习统计学和数学课程。
  • 您可以阅读指南、书籍并参加开放课程。它们可以轻松地融入到四个能力等级的划分中。一本特定的书可能是新手或进阶级别的一个完美参考,或者可能跨越这两个级别。同样,一门课程可能正好适合某个级别,也可能跨越两个或多个级别,从而提供各种机器学习活动的示例。

范围

我建议您将范围集中在分类和回归类型的问题以及相关的算法和工具上。这两种是最常见的基础机器学习问题,大多数其他问题都可以归结为这两种。

机器学习中有计算机视觉、自然语言处理、推荐系统或强化学习等子领域。这些领域可以归结为分类和回归问题,并且它们的研究内容也正好符合所提出的路线图结构。我建议在达到进阶级别之前,不要深入研究这些领域。

原则

我有一些实用的原则,可以帮助您朝着机器学习目标取得快速而有用的进展。它们确实构成了路线图的框架。

  • 机器学习是一段旅程。您需要知道自己现在在哪里以及想去哪里。这需要时间和努力,但您有大量的帮助可以获得。
  • 创建半正式的工作成果。以博客文章、技术报告和代码存储库的形式记录您在此过程中学到的知识和发现。您将快速积累一份已展示技能和知识的投资组合,供您和他人反思。
  • 即时学习。不要在需要之前学习复杂的主题。例如,只学习足够的概率或线性代数来理解您正在研究的算法,不要在开始机器学习之前花费 3 年的时间学习统计学和数学课程。
  • 利用现有技能。如果您会编程,请实现算法以理解它们,而不是研究数学。使用您熟悉的语言。专注于您正在学习的一件事,不要同时学习新的语言、工具或库来使其复杂化。
  • 精通是一个理想。精通机器学习需要持续学习。您永远无法真正达到它,只能不断学习、学习和改进。

提示

以下是 3 个技巧,可帮助您有效地充分利用本指南和您的机器学习之旅。

  • 从一个可以在一小时内完成的小项目开始。
  • 争取每周完成一个项目,以建立和保持您的动力以及一个可以构建的项目工作空间。
  • 在您的博客、Facebook、Google+、Github 或任何您可以分享结果的地方分享您的成果,以展示您的兴趣、不断提高的技能、知识并获得反馈。

行动步骤

花点时间写下来

  • 您认为自己处于什么水平,以及您在哪些方面遇到困难?
  • 您想达到什么水平,想做什么?

13 条对《机器学习自学指南的缺失路线图》的回复

  1. Suresh 2016年5月16日下午3:38 #

    您好,首先感谢您的指导!我想问一下,我对机器学习很感兴趣,但作为一名职业人士,我是一名 Oracle DBA,我能成为一名优秀的机器学习专业人士吗?

    • toimi 2016年5月18日凌晨4:27 #

      嗨,Suresh!如果您对机器学习感兴趣,您可以成为一名优秀的机器学习专业人士。但您必须为此付出努力。

  2. Jim 2016年8月13日凌晨12:30 #

    谢谢 Jason,我认为我处于新手和进阶之间。我不一定想成为一名数据科学/统计学专家,但我希望对可用的方法以及如何评估它们对不同类型问题的实际(统计?)价值和准确性更有信心。

  3. Howard in Toronto :) 2016年8月13日凌晨5:47 #

    这是一份了不起的路线图。希望有更多的老师能有这种教学策略。我想我们所有人,无论采用何种教学策略,都必须遵循这条路线图才能学习任何非天生的科目。机械地来说,我认为大脑必须开始招募皮层柱来形成基本思想和名称,然后在此基础上构建——这与上面的路线图非常相似。

  4. Pravallika 2016年8月15日下午6:34 #

    感谢 Jason 提供了一些可能的方法来进入机器学习领域。实际上,我目前正处于初学者阶段,正在学习机器学习课程。我对它非常着迷。您能否给我一些可以做的基础程序?我现在还处于起步阶段。

  5. Milton 2017年2月11日晚上8:01 #

    感谢 Jason 提供了一些可能的方法来进入机器学习领域,您让路线图变得更简单了……

  6. W 2017年7月23日下午5:17 #

    Jason,谢谢这篇帖子。它很有帮助。我有一个关于我在机器学习旅程中的位置以及接下来该做什么的问题。我认为自己处于进阶水平:现在我可以使用 Python(numpy、sklearn、pandas 等)参加一些 Kaggle 比赛,并在排行榜上取得约 10%-20% 的性能。然而,我仍然觉得大多数算法都像一个黑箱,而且我在特征工程方面不够自信,在面对新程序时也缺乏创意/创新。您认为我下一步应该怎么做?我正在考虑阅读一些经典的机器学习论文,从头开始实现算法,并在此过程中加强我对优化/线性代数的理解。您认为这有助于我在一年内找到一份入门级的机器学习/建模相关工作吗?(我更喜欢专注于在商业中解决使用机器学习的分析问题,而不是专注于机器学习的工程部分)谢谢。

    • Jason Brownlee 2017年7月24日凌晨6:52 #

      我建议阅读论文以便更好地理解方法,这只是为了获得更好的结果。

      如果您可以随心所欲地解决问题,那么就去帮助企业解决他们的问题并创造价值。如果您在找工作方面需要帮助,请开发一个强大的已完成项目组合,展示您能交付的价值。

      招聘看重您所了解的数学的机构是抓错了重点。这就像雇佣一名开发人员,他可以告诉您编译器为何有效,但却无法编写出健壮的软件来解决实际的业务问题。或者,一名开发人员可以解释 Java 虚拟机如何工作,但却无法为业务应用程序编写可维护的 Java 代码。

      这有帮助吗?

  7. ml 2017年9月26日上午11:45 #

    非常感谢您为我们发布了这样一张出色的地图。

  8. Jesús Martínez 2018年4月11日晚上11:46 #

    我真心认为这是您最好的、最有用的文章之一。非常感谢您发布了如此全面的路线图。我还认为您的技巧和原则非常到位!(在我自己发现类似原则之前,我曾多次犯错)。

    为您鼓掌!继续努力 🙂

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。