选自towardsdatascience
作者:DanielBourke
机器之心编译
参与:韩放、一鸣
「我想学习机器学习和人工智能,该从哪开始呢?」
从这里开始。

两年前,我开始在网上自学机器学习,并且通过YouTube和博客分享了我的学习过程。我并不知道我在做什么,在决定开始学习机器学习之前我从没写过代码。
当人们发现我的作品,他们通常会私信并提问。我不一定知道所有的答案,但我会尽量回复。人们最常问的问题是:「该从哪开始?」,其次是:「我需要多少数学基础?」今天早上我就回答了一堆这样的问题。
有人告诉我他已经开始学习Python并打算学习机器学习了,但不知道下一步该做什么。
「我已经学习了Python,下一步该做什么?」
我回复了一系列学习的步骤,并且复制到了这里。如果你想成为一个机器学习从业者,却不知道怎么写代码的话,可以把本文当作一个大纲。我的学习风格是代码优先:先把代码运行起来,再根据需要学习理论、数学、统计以及概率等方面的东西,而不是一开始就学理论。
记住,开始学习机器学习你会面临很多阻碍。别急,慢慢来。把这篇文章添加到收藏夹,以便随时参考。
我倾向于使用Python,因为我是从Python开始的,并且一直在持续使用它。你也可以用其他语言,但本文的所有步骤都是基于Python的。
学习Python、数据科学工具和机器学习概念
问我问题的那些邮件作者们说他们已经学了一些Python。但这一步也同样适用于新手。花几个月的时间学习Python编程和不同的机器学习概念。这两部分知识你都会需要。
在学习Python编程的同时,练习使用Jupyter和Anaconda等数据科学工具。花几个小时来研究一下,它们是用来做什么的以及为什么要使用它们。
学习资源
人工智能要素()—人工智能和机器学习主要概念概述。
Coursera上的Python教程—()从头学习Python。
Dataquest的新手JupyterNotebook教程()—一篇文章学会启动和运行JupyterNotebook。
学习通过Pandas、Numpy和Matplotlib进行数据分析、操作和可视化
一旦你已经掌握了一些Python技巧,就会开始想要学习如何处理和操作数据,为了实现这一目的,你需要熟悉Pandas、Numpy和Matplotlib。
Pandas可以帮助你处理二维数据,类似Excel文件里的信息表,包含行和列。这类数据被称为结构化数据。
Numpy可以帮助你进行数值计算。机器学习把你能想到的所有东西都转化成数字,进而在这些数字中寻找模式。
Matplotlib可以帮助你绘制图形和可视化数据。理解表格中的一堆数字对人类来说可能很困难。我们更喜欢看到有一条线穿过的图。可视化可以更好得传达你的发现。
学习资源
Cousera上的Python应用数据科学()—开始打磨数据科学方向的Python技能。
10分钟入门pandas()—快速概览pandas库及其部分最有用的函数。
Codebasics的Pythonpandas教程()—该YouTube系列介绍了pandas的所有主要功能。
Sentdex的Matplotlib教程(;list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF)—YouTube系列助你学会Matplotlib所有最有用的功能。
借助scikit-learn学习机器学习
现在你已经掌握了操作和可视化数据的技能,是时候学习在数据中寻找模式了。scikit-learn是一个Python库,它内置了许多有用的机器学习算法供你使用,它还提供了许多其他有用的函数来探究学习算法的学习效果。
重点在于学习都有什么样的机器学习问题,比如分类和回归,什么样的算法最适合解决这些问题。现在还不需要从头开始理解每个算法,先学习如何应用它们。
学习资源
DataSchool的基于scikit-learn的Python机器学习(;list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A)—一个YouTube播放列表教你scikit-learn的所有主要函数。
DanielFormosso的基于scikit-learn的探索性数据分析笔记()—以上资源的更深入版本,附带了一个实践上述内容的端到端项目。
学习深度学习神经网络
小贴士:在大多数情况下,你会想对结构化数据使用一组决策树(随机森林或XGBoost之类的算法),而对于非结构化数据,你会想使用深度学习或迁移学习(使用预先训练的神经网络并将其用于你的问题)。
你可以开始把这样的小贴士用一张便条记录,然后边学习边收集这些信息。
学习资源
Cousera上AndrewNg的()()—商业上最成功的从业者之一讲授的深度学习课程。
JeremyHoward的深度学习课程()()—工业界最好的实践者之一讲授的深度学习实际操作方法。
其他课程和书籍
在学习过程中,最理想的情况是你可以用自己的小项目来练习所学的东西。这不必是复杂的,需要改变世界的事情,但你可以说「我用X做了这个」。然后通过github或博客分享你的工作。github用于展示你的代码,博客文章用于展示你如何表达自己所做的工作。你应该为每个项目都发布一下这些内容。申请一份工作的最好方法是你已经做完了工作要求做的事情。分享你的工作是向未来的潜在雇主展示你能力的好方法。
在你熟悉了如何使用不同的机器学习和深度学习框架之后,你可以尝试通过从头开始构建它们来巩固你的知识。你不必总是在生产或从事机器学习时这样做,但是从内部了解事情是如何工作的将有助于你建立自己的工作。
学习资源
DanielBourke的如何开始你自己的机器学习工程()—开始你自己的工程可能会很难,这篇文章可以给你一些指引。
JeremyHoward的深度学习基础()—自上而下学习后,本课程将帮助你从下往上填补空白。
AndrewTrask的GrokkingDeepLearning()—这本书将教你如何从头开始构建神经网络,以及为什么你应该知道如何构建。
答疑
每一步需要多长时间?
你可能会花6个月或更长的时间。别着急,学习新事物需要时间。作为一名数据科学家或机器学习工程师,你正在培养的主要技能是如何针对数据提出好的问题,然后使用你的工具来尝试寻找答案。
有时候你会觉得自己什么都没学到。甚至倒退。忽略它。不要以天为单位来衡量,看看你一年后有什么样的进步。
我在哪里可以学到这些技能?
我在上面列出了一些资源,它们都是在线的,而且大部分都是免费的,类似的资源还有很多。
DataCamp()是一个很好学习网站。另外,我的MachineLearningandArtificialIntelligenceresourcesdatabase()整理了免费和付费的学习资料。
记住,作为数据科学家或机器学习工程师,很大一部分工作是要解决问题。通过你的第一个作业探索这里的每一个步骤,并创建你自己的课程来帮助学习。
如果你想知道一个自我引导的机器学习课程的例子是什么样子的,看看我的Self-CreatedAIMastersDegree()。这是我在过去9个月内从零编码变成机器学习工程师的过程。它不是完美的,但是我的真实经历,因此你可以试试。
统计怎么办?数学怎么办?概率呢?
实践过程中你会学到这些东西的。先从代码开始。把代码运行起来。在运行代码之前,尝试学习所有的统计、数学、概率知识,就像是在试图煮沸大海。它会让你退缩。如果代码不运行,统计、数学和概率都不重要。先运行起来,然后用你的研究技巧来验证它是否正确。
证书?
证书很好,但你不是为了证书而学习,而是为了提高技能。不要和我犯同样的错误,不要认为证书越多代表技能越多,并不是这样的。通过上述课程和资源建立知识基础,然后通过自己的项目完善专业知识(这些是课程无法传授的知识)。