机器学习精通之道

机器学习入门精通的5个步骤

我教授一个5步流程,你可以用它来开始你的应用机器学习之旅。

这是一种非常规的方法。

传统的机器学习教学方式是自下而上的。

从理论和数学开始,然后是算法实现,最后让你自己去摸索如何开始解决现实世界的问题。

Machine Learning for Programmers - Gap in Bottom Up

传统的机器学习入门方法在通往从业者的道路上存在一个缺口。

Machine Learning Mastery的方法则颠覆了这一点,它从最有价值的成果开始。

它瞄准的是企业愿意为之付费的成果
如何交付一个结果.

这个结果的形式是一组预测或一个能够可靠地进行预测的模型。

这是一种自上而下结果优先的方法。

从实现市场上最理想结果的目标出发,从业者通往这一结果的最短路径是什么?

我们可以将这条路径总结为以下5个步骤

  • 第1步:调整心态 (相信!)
  • 第2步:选择一个流程 (如何获得结果)
  • 第3步:选择一个工具 (实现)
  • 第4步:在数据集上练习 (付出努力)
  • 第5步:建立一个作品集 (展示你的技能)

就是这样。

这是我所有电子书培训背后的理念。

这就是我创建这个网站的原因。我知道一种更简单的方法,并且必须分享出来。

下面是一幅卡通图来说明这个过程,为简洁起见,省略了第1步(关于心态)和第2步(关于展示你的工作)。

 

Machine Learning for Programmers - A Better Approach

一种更好的学习机器学习的方法,从端到端地解决机器学习问题开始。

让我们来仔细看看每一步。

第0步:里程碑

在我们开始之前,你必须了解机器学习的里程碑。

我通常会假设你已经知道这些,但除非你了解一些真正的基础知识,否则你无法继续。

例如:

第1步:心态

机器学习不仅仅是教授们的专属。

它不只属于天才或学者。

你必须相信

你可以学习这个主题并应用它来解决问题。

没有理由做不到。

  • 你不需要编写代码。
  • 你不需要懂数学或擅长数学。
  • 你不需要更高的学位。
  • 你不需要大数据。
  • 你不需要使用超级计算机。
  • 你不需要很多时间。
Machine Learning for Programmers - Limiting Beliefs2

为不开始学习机器学习找借口是如此容易。

实际上,只有一件事能阻止你开始并精通机器学习。

那就是你自己。

  • 也许你就是找不到动力。
  • 也许你认为你必须从头实现一切。
  • 也许你总是在选择高级问题而不是初学者问题来着手。
  • 也许你没有一个系统化的流程来交付结果。
  • 也许你没有利用好工具和库。

清除那些阻碍你入门的限制性信念。

这篇文章可能会有帮助

你会遇到很多障碍。

识别它们,解决它们,然后继续前进。

为什么选择机器学习?

一旦你知道你可以做机器学习,就要明白为什么。

  • 也许你对学习更多关于机器学习算法感兴趣。
  • 也许你对创建预测感兴趣。
  • 也许你对解决复杂问题感兴趣。
  • 也许你对创建更智能的软件感兴趣。
  • 也许你甚至有兴趣成为一名数据科学家。

认真思考这个问题,试着找出你的“为什么”。

这篇文章可能会有帮助

一旦你有了你的“为什么”,就找到你的部落。

你与哪个机器学习从业者群体最有共鸣?

  • 也许你是一位有普遍兴趣的商务人士。
  • 也许你是一位负责交付项目的经理。
  • 也许你是一名机器学习学生。
  • 也许你是一名机器学习研究员。
  • 也许你是一名面临棘手问题的研究员。
  • 也许你想实现算法
  • 也许你需要一次性的预测。
  • 也许你需要一个可以部署的模型。
  • 也许你是一名数据科学家。
  • 也许你是一名数据分析师。

每个部落都有不同的兴趣,并且会从不同的方向接触机器学习领域。

不是所有的书籍和材料都适合你,找到你的部落,然后找到那些能与你产生共鸣的材料。

这篇文章可能会有帮助

第2步:选择一个流程

你想在一个又一个问题上可靠地获得高于平均水平的结果吗?

你需要遵循一个系统化的流程。

  • 一个流程可以让你利用和重用最佳实践。
  • 这意味着你不必依赖记忆或直觉。
  • 它会引导你从头到尾完成一个项目。
  • 这意味着你总知道下一步该做什么。
  • 它可以根据你特定的问题类型和工具进行定制。

一个系统化的流程,其区别在于,一方面是好坏结果的过山车,另一方面是高于平均水平且不断改进的结果。

我每次都会选择高于平均水平且不断改进的结果。

我推荐的一个流程模板如下

  • 第1步:定义你的问题。
  • 第2步:准备你的数据。
  • 第3步:抽查算法。
  • 第4步:改进结果。
  • 第5步:呈现结果。

下面是一幅很好的卡通图来总结这个系统化的流程

Machine Learning for Programmers - Select a Systematic Process

选择一个系统化且可重复的流程,你可以用它来持续地交付结果。

你可以在这篇文章中了解更多关于这个流程的信息

你不必使用这个流程,但你确实需要一个系统化的流程来处理预测建模问题。

第3步:选择一个工具

选择一个顶级的工具,你可以用它来交付机器学习结果。

将你的流程映射到这个工具上,并学习如何最有效地使用它。

我最推荐三种工具

  • Weka机器学习工作台 (非常适合初学者)。Weka提供图形用户界面,无需编写代码。我用它来处理快速的一次性建模问题。
  • Python生态系统 (非常适合中级者)。特别是在SciPy平台之上的pandas和scikit-learn。你可以在开发中使用相同的代码和模型,它们足够可靠,可以在生产环境中运行。
  • R平台 (非常适合高级者)。R是为统计计算而设计的,尽管其语言有些晦涩,一些包的文档也很差,但它提供了最多的方法以及最先进的技术。

对于专业领域,我也有一些建议

  • 用于深度学习的Keras。它使用Python,意味着你可以利用整个Python生态系统,这节省了大量时间。其接口非常简洁,同时还支持Theano和Keras后端的强大功能。
  • 用于梯度提升的XGBoost。它是目前该技术最快的实现。它同时支持R和Python,让你可以利用任一平台进行项目开发。

这些只是我个人的推荐,我有很多关于每一项的文章以及更详细的培训。

学习如何熟练使用你选择的工具。研究它。成为这方面的专家。

什么编程语言?

编程语言并不重要。

甚至你使用的工具也不重要。

你在解决问题过程中学到的技能可以轻松地从一个平台转移到另一个平台。

尽管如此,这里有一些关于机器学习中最流行语言的调查结果

第4步:在数据集上练习

一旦你有了一个流程和一个工具,你就需要练习。

你需要大量练习。

在标准的机器学习数据集上进行练习。

  • 使用真实世界的数据集,这些数据集是从实际问题领域收集的(而不是人为构造的)。
  • 使用适合内存或Excel电子表格的小型数据集。
  • 使用被充分理解的数据集,这样你就知道可以期待什么样的结果。

在不同类型的数据集上练习。在那些让你感到不舒服的问题上练习,因为你将不得不提升你的技能来找到解决方案。寻找数据问题中的不同特性,例如

  • 不同类型的监督学习,如分类和回归。
  • 不同大小的数据集,从几十、几百、几千到几百万个实例。
  • 不同数量的属性,从少于十个、几十个、几百个到几千个属性。
  • 不同属性类型,从实数、整数、分类、序数到混合类型。
  • 不同的领域,迫使你快速理解和描述一个你之前毫无经验的新问题。

使用UCI机器学习库

这些是使用最广泛、理解最透彻的数据集,也是最好的起点。

在文章中了解更多

参加机器学习竞赛,如Kaggle

这些数据集通常更大,需要更多的准备才能很好地建模。

关于你可以练习的最流行数据集列表,请参阅这篇文章

在你自己设计的问题上练习

收集对你重要的机器学习问题的数据。

你会发现这些问题和你设计的解决方案都更有价值。

更多信息,请参阅这篇文章

第5步:建立一个作品集

你将积累一系列已完成的项目。

好好利用它们。

随着你处理数据集并不断进步,创建半正式的输出来总结你的发现。

  • 也许上传你的代码并在一个自述文件中进行总结。
  • 也许你在一篇博客文章中写下你的结果。
  • 也许你制作一个幻灯片演示。
  • 也许你在YouTube上创建一个小视频。

每一个完成的项目都代表了你不断增长的作品集的一部分。

就像画家一样,你可以建立一个已完成作品的作品集,来展示你在用机器学习交付结果方面不断增长的技能。

你可以在这篇文章中了解更多关于这种方法的信息

你可以自己使用这个作品集,利用你之前结果中的代码和知识来开展更大、更具雄心的项目。

一旦你的作品集成熟,你甚至可以选择利用它在工作中承担更多责任,或进入一个新的以机器学习为中心的角色。

关于这方面的更多信息,请参阅这篇文章

提示和技巧

以下是一些在使用此流程时你可能会考虑的实用提示和技巧。

  • 从一个简单的流程(如上所述)和一个简单的工具(如Weka)开始,一旦有了信心再进阶。
  • 从最简单、最常用的数据集开始(鸢尾花数据集皮马印第安人糖尿病数据集)。
  • 每次应用该流程时,都要寻找改进它以及你使用它的方法。
  • 如果你发现了新方法,要想出将其整合到你的流程中的最佳方式。
  • 学习算法,但仅限于能帮助你通过你的流程取得更好结果的程度和方式。
  • 向专家学习,看看可以借鉴哪些方法并添加到你的流程中。
  • 像研究预测建模问题一样研究你的工具,并充分利用它。
  • 挑战越来越难的问题,放弃简单的问题,因为你从中也学不到太多东西。
  • 专注于清晰地呈现结果,你做得越好,你的作品集的影响力就越大。
  • 参与论坛和问答网站上的社区活动,既要提问也要回答问题。

总结

在这篇文章中,你发现了一个简单的5步流程,你可以用它来开始并在应用机器学习领域取得进展。

虽然这个方法阐述起来很简单,但确实需要辛勤工作,但它确实会有回报。

我的许多学生都通过这个流程,并找到了机器学习工程师和数据科学家的工作。

如果你想深入了解这个流程和相关思想,请参阅这篇文章

你有什么问题吗?
请在下面的评论中提问,我会尽力回答。

机器学习精通之道的42条回应

  1. Mrutyunjaya 2016年10月10日 at 3:20 pm #

    嗨,Jason,谢谢分享。对初学者来说是很好的内容。

  2. ASIF AMEER 2016年10月11日 at 3:21 am #

    亲爱的Jason Brownlee,

    开启机器学习之旅的指南真是太棒了!

    非常感谢

  3. neelam singh 2016年10月20日 at 3:57 am #

    很棒的指南...帮了大忙.........

  4. Adolfo 2016年10月20日 at 4:45 am #

    这简直是纯金!谢谢。

  5. Debs 2016年10月20日 at 5:30 am #

    很棒的文章。感谢你把这些步骤分解得如此清晰。
    这真的让我觉得机器学习是可以做到的 🙂

  6. Beena M V 2016年10月20日 at 10:21 am #

    非常感谢Jason..对初学者来说太棒了。

  7. Sarah 2016年10月20日 at 2:11 pm #

    很棒的文章..

    我是一名研究生,我正在使用MATLAB进行机器学习研究,关于如何学习MATLAB中良好的编程技巧,有什么建议吗?我对这个领域完全是新手..我正在尝试用优化算法和机器学习构建一个混合模型。我两者都有代码,但不知道如何继续下去。
    提前感谢。

    • Jason Brownlee 2016年10月21日 at 8:32 am #

      嗨,Sarah,

      我认为matlab非常适合培养强大的线性代数技能和多元统计学。它可能是学习这些东西的最佳环境。

      我还认为,如果你想从这两个角度学习机器学习算法,那里是最好的地方。但这并不是学习算法最快的方式,也不是唯一的方法。

      如果你采用这种较慢的第一原理方法,你需要大量阅读有关优化算法和所用数学的资料,以学习如何整合它们。

  8. Jonathan Pang 2016年10月20日 at 8:12 pm #

    Jason,谢谢分享

    • Jason Brownlee 2016年10月21日 at 8:34 am #

      我很高兴你喜欢,Jonathan。

      你认为你会遵循这种方法吗?

  9. David Fumo 2016年10月22日 at 6:41 am #

    很棒的指南,我喜欢这种方法,我会马上付诸行动。我想听听你的意见,什么时候是开始参加kaggle竞赛的合适时机?

    • Jason Brownlee 2016年10月22日 at 7:03 am #

      听到这个消息太好了,David!

      我建议在你对UCI机器学习库中的小型数据集有信心之后,再开始接触Kaggle。

  10. Lau 2016年11月29日 at 4:51 am #

    很棒的网站和很棒的资源。我购买了《Machine Learning Mastery with R》,它确实对理解概念有帮助。尤其是在最后,当我从头到尾做项目时,一切才真正融会贯通。

    不过我想问一下:对于下一个逻辑步骤,即将数据解读给一个商务人士(比如你的老板,他不是机器学习专家),你有什么建议吗?

    假设我完成了整个流程,找到了一个在我的测试数据上表现良好的好算法,并用它来处理一个“真正实时的”未知数据,下一步是什么?我的结果或每个变量是否有概率分配,或者只是“根据我的算法,‘最有可能’会发生这种情况”?

    不太确定如何组织新学到的知识。

    也许你可以在下一版书中加入这方面的内容?

  11. Madhav Bhattarai 2017年3月30日 at 8:44 pm #

    你的教程信息量很大。像我这样的初学者在学术资源的丛林中迷失了方向,尤其是在机器学习方面,不知道该学什么。感谢你提供正确的指导。

  12. Elissandro Mendes 2018年2月14日 at 11:54 pm #

    哦天啊,多么棒的资源!!!

    谢谢Jason!!!

  13. Dina 2018年2月18日 at 2:39 am #

    感谢Jason提供这篇内容丰富的文章 ????

    在你看来,一旦你在Jupyter notebook中完成了一个注释良好、结构清晰的作品集项目,编写一个包含在notebook中的readme文件的最佳方式是什么?这个文件中应该包含什么内容?

    • Jason Brownlee 2018年2月18日 at 6:47 am #

      描述这个项目是关于什么的,问题,解决方案,你的发现,扩展等。

  14. Ognyan 2018年2月18日 at 8:47 am #

    谢谢Jason!这是一个杰出的例子,展示了如何将多年的工作和研究总结成短短几页,非常适合初学者。构思得非常周到。

  15. Benson Dube 2018年2月19日 at 1:42 am #

    绝对的黄金标准指南。非常感谢Jason

  16. Mamun 2019年1月12日 at 5:57 pm #

    这简直是天才之作!我从未发现任何博客或网站如此有帮助。在完成GRE和托福后,我对于找到自己的兴趣领域感到困惑。现在感觉机器学习是一个我至少应该尝试的领域。

    谢谢你,Jason!
    愿上帝与你同在,让你能继续做这样精彩的事情。

  17. Subtain Malik 2020年8月4日 at 2:43 pm #

    嗨 Jason,毫无疑问,你在互联网上拥有与机器学习领域相关的最佳内容。然而,我找不到关于“如何在这个领域找到工作”的建议。你是否也能详细说明一些关于这个行业的企业信息?比如,对于一个初学者来说,我们是应该申请小型初创公司还是大型科技巨头。提前感谢。

  18. awadelrahman 2021年5月23日 at 8:00 am #

    谢谢!!

  19. Suresh Jeevanandam 2023年8月30日 at 4:43 pm #

    谢谢,对于想在机器学习世界开启旅程的人来说,这是很棒的内容

发表评论

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