在15分钟内选出适合你的机器学习和数据科学课程

   
动机

比尔·盖茨最近在一次毕业典礼上宣称,对当今年轻学子的未来职业生涯而言,人工智能(AI)、能源以及生物科学是三大最有潜力,也最容易获得成就的领域。

我本人简直无法更赞同!

一直以来我都坚信,对我们这一代人来说,诸如与可持续性、能源的产生和分配、交通运输、基本生活设施的完善等有关的重要问题,能否成功解决的关键在于我们能否妥善、智能地将盖茨先生提到的前两个科技分支有机融合在一起。

换句话说,物理电子学世界(以半导体行业为中心的世界)必须承担更多责任才能全面发挥信息技术以及 AI 或数据科学领域的所有潜力。

我想学,但从何处着手?

我是一位在半导体行业有着超过 8 年从业经验的博士后,就职于顶尖技术公司。我对于自己在物理电子学领域的跨领域研究和这些成果对能源行业做出的直接贡献倍感自豪。我曾开发了功率半导体装置,这种装置可以更高效可靠地输送电力,从你智能手机中的微型传感器到生产食品和服装等日用品的大型工业马达驱动器,都是通过这类装置驱动的。

因此,我自然而然地希望学习并应用现代数据科学和机器学习技术来完善此类装置和系统的设计、可靠性以及运作。

但我并不是计算机专业的,我说不出链表和堆的区别,而支持向量机在(几个月前的)我听来更像是一种针对残障人士开发的特殊辅助设备。对于 AI,我(通过早年选修课)唯一熟悉的关键字是“一阶谓词微积分”,一种古老的所谓“老款 AI”,主要采用基于知识工程的方法,与当今大热的机器学习方法截然不同。

我需要设法学着入门然后深入学习下去。首选学习方法当然是 MOOC(大规模在线开放课堂)了。目前我依然还在学习过程中,但感觉在针对学习计划选择适合的 MOOC 方面,我已经获得了一些不错的经验,于是想要把这些经验分享给大家。

知“己”知“彼”

抱歉举了一个糟糕的类比 🙂 这句话来自 Netlfix 最新上线的超级英雄剧集 捍卫者联盟(The Defenders)。

不过你确实有必要充分了解自己的优势、劣势和技术倾向,随后才能开始通过 MOOC 课程学习这些技术。

不得不承认,每个人的时间和精力都是有限的,谁也不愿意将宝贵的资源浪费在自己目前和以后工作中几乎用不到的技术上。而这也有一个前提,你打算选择这种(几乎)免费的学习方式,例如只学习 MOOC 课程而不付费购买证书。我“几乎”已经做到这一点了,同时在本文结尾处我会列出几门感觉有必要付费并获得书的 MOOC 课程。我本人已经购买了几门 Udemy 课程,毕竟知识从来不是免费的,而只要碰到促销,只需要一顿午餐三明治的花费就可以得到。

在15分钟内选出适合你的机器学习和数据科学课程

通过 MOOC 可以和不能获得的内容

我想通过上图展示通过这个过程可以和不可以获得的成果,例如你希望通过自学获得怎样的成果和实践,哪些东西必须从实际工作中学习,或者无论职业如何你必须抱有怎样的心态。话虽如此,这些收获已经广泛包含了非计算机专业学生可以在数据科学 / 机器学习领域获得的所有核心技能。然而要注意,就算 IT 从业者,一开始你可能也会面临陡峭的学习曲线,因为传统 IT 正在被这些新兴技术颠覆,核心技能与良好的实践往往也有所差异。

我本人认为,数据科学比很多其他专业领域(例如我从事的半导体技术)更“民主”,入门的门槛更低,只要付出足够努力和热情,任何人都可以获得相应技能。我本人并没有在这个领域“大展拳脚”的迫切欲望,我只想将这个领域的成果应用在自己的本职工作中。然而这样的最终目标并不会对任何人的学习曲线产生任何影响。因此你可以选择以数据工程师、业务分析师、机器学习科学家,甚至数据可视化专家作为自己的目标,毕竟这个领域以及可行的选择本身就极为广泛。如果你的目标和我类似,只是想将学到的新技术应用在自己的本质领域,其实也是没问题的。

可以从最基础的知识着手,没什么丢人的 🙂

我就是从最基础的知识开始的:在 Codeacademy 学习 Python。几乎可以肯定,这算是基础中的基础了 :-)。不过效果还不错。我本人很不喜欢编程,但 Codeacademy 提供的免费课程有着简单有趣的界面和适当的节奏,足以支撑我继续学习下去。本来我也可以选择通过 Coursera、Datacamp 或 Udacity 学习 Java 或 C++ 课程,但经过简单了解和研究发现,从学习难度和效果(尤其是对数据科学家而言)取舍来看,Python 是最佳选择,我决定就选择 Python 了。

入门之后,你会渴望更深入地学习(但也要注意步调)

Codeacademy 的入门课程非常适合新手。我曾体验过很多在线 MOOC 平台,当然,一开始也同时注册了很多课程。但在简单学了几天 Coursera 的课程后,我意识到自己还不足以从一个专家的角度来学习 Python!于是转为挑选那些富有激情,愿意花时间讲授技术细节,能讲授诸如 Git 和 Jupyter notebook 系统等其他基础工具,并能在基本概念和高级话题之间进行适度取舍的讲师担纲的课程。幸运的是我找到了:Jose Marcial Portilla。他在 Udemy 平台提供了多门课程,是这个平台上最受欢迎,好评最多的讲师之一。我注册并学习了他的 Python Bootcamp 课程。这是一门很棒的入门课,授课节奏、深度和难度都很适当。强烈推荐初学者选择该课程,不过该课程需要付款 10 美元(Udemy 的课程通常都需要收费,一般价格为 190-200 美元左右,不过他们会定期促销,通常只要多等几天就可以用 10-15 美元的价格购买)。

重点在于将学习的重心放在数据科学方面

接下来的步骤对我非常重要。本来我有可能走入歧途学习有关 Python 的更多知识,尤其是很容易长时间卡在 Python 面向对象的概念以及有关类的定义中。但实际上 Python 本身并不需要那么深入地掌握,任何人都可以放心地将其应用在深度学习和数据科学领域,而不需要知道到底该怎样在 Python 中定义自己的类和方法。Python 正在日渐流行,并逐渐成为数据科学领域的既定语言标准,造成这种情况的最主要原因就在于,该语言有着大量高质量、已经过同行审阅,由专家撰写的库、类和方法,只需下载适合的软件包并解包,就可以无缝集成到我们自己的代码中。

因此对我来说,重点在于快速掌握被数据科学家们广泛使用的软件包和方法,例如 NumPy、Pandas 和 Matplotlib。

我是通过 edX 提供的一堂简明扼要的课程意识到这一点的。虽然 edX 的大部分课程来自各大高校,通常都很难(也很长),但也有一些由诸如微软等技术公司提供的,较为简短,更侧重于实际动手操作,不那么强调理论知识的课程,例如 Microsoft Professional Program in Data Science。这个项目提供的课程可随意注册并学习,但我只学了下面几门(不过以后计划在这里学更多内容):

 

  • Data Science Orientation:探讨一个典型数据科学家的日常生活,涉及这个角色所需具备的核心技能,并简要介绍了这些技能的涉及领域。

Link:https://courses.edx.org/courses/course-v1%3aMicrosoft+DAT101x+1T2017/course/

 

  • Introduction to Python for Data Science:讲授有关 Python 的基础知识:数据结构、循环、函数,随后介绍了 NumPy、Matplotlib 和 Pandas。

Link:https://courses.edx.org/courses/course-v1%3aMicrosoft+DAT208x+1T2017/course/

 

  • Introduction to Data Analysis using Excel:介绍了 Excel 包含的数据分析功能、图表,以及其他工具,以基础知识为主,但也涉及少量高级内容(例如数据透视表、Power Pivot 以及 Solver 插件)。

Link:https://courses.edx.org/courses/course-v1%3aMicrosoft+DAT205x+3T2016/course/

 

  • Introduction to R for Data Science:介绍了 R 语法、数据类型、向量和矩阵操作、因素、函数、数据帧以及 ggplot2 图形。

Link:https://courses.edx.org/courses/course-v1%3aMicrosoft+DAT204x+2T2017/course/

虽然这些课程的内容都比较基础,并且只提供了一些最基本的示例,但足以起到抛砖引玉的作用!至少我已经深深地着迷其中!

随后我转为深入学习 R 了——至少学了一段时间

最后一门课程让我意识到几个重要问题:

(a) 统计学和线性代数是数据科学的核心,

(b) 但我的了解很浅显 / 并且也忘得差不多了,

同时 (c) R 从本质上就很适合我的目标。

毕竟我使用的数据集通常只有几 MB 大小,主要在受控的晶圆实验室实验或 TCAD 仿真中生成,通常只需要进行非常基础的推理分析。

因此我决定找找有关 R 语言的入门课程,同样,这方面又有谁能比 Jose Portilla 更擅长呢!于是我注册了他的“Data Science and Machine Learning Bootcamp with R”课程。这门课有点“买一赠一”的意思,上半部分主要涉及 R 语言基础知识,下半部分重点介绍了有关机器学习的基础概念(都是入门课程必不可少的重要概念,讲得非常透彻)。与微软在 edX 提供的课程不同,微软课程使用了基于服务器的动手实验环境,Jose 的课程甚至介绍了 R Studio 以及其他必要软件包的安装与配置,例如会介绍如何安装 kaggle 并会鼓励用户从被动学习(即仅仅只观看 MOOC 视频)的角色转变为敢于操作数据进行各种尝试的探索者。本教程还逐章介绍了 Gareth James、Daniela Witten、Trevor Hastie 和 Robert Tibshirani 撰写的“Introduction to Statistical Learning in R”(ISLR)一书。

如果你这一辈子只能通过阅读一本书来学习机器学习,那么务必选择这本书,每章都要仔细阅读。另外这本书并不涉及神经网络或深度学习的题材,就是这样……

在阅读过课程教材 ISLR 一书,并使用通过 kaggle 下载的随机数据集以及我自己通过 PG&E 得到的电量使用情况数据进行过实验后,我已经可以顺利地自行编写一些代码来创建各种有趣实用的模型了。我分析过美国的全国犯罪数据,为何大型实验设计可能导致伪相关,甚至过去三个月来我家公寓的用电量情况。我还曾针对工作中获得的现实数据成功使用 R 构建了预测模型。R 语言统计学 / 函数化的本质以及通过各种模型(回归或分类模型)提供了现成的置信区间估算(p 值或 z 分数)切实帮助我这样的新手向着统计建模领域踏出了坚实的一步。

顺便尽可能多地学习数学基础知识

这部分的学习怎么强调都不为过,尤其是对非计算机专业的毕业生,以及多年职业生涯里从未涉足过严密数学的 IT 工程师更是如此。我甚至发布过一篇 Medium 文章:机器学习和数据科学需要具备哪些必不可少的数学知识。

Link:https://medium.com/towards-data-science/how-much-maths-does-an-it-engineer-need-to-learn-to-get-into-data-science-machine-learning-7d6a42f79516

在15分钟内选出适合你的机器学习和数据科学课程

为了涉足数据科学 / 机器学习必须具备的数学知识

这方面我推荐下列几门来自 Cousera 和 edX 的课程,其中几门有一定的深度和难度:

 

  • Statistical Thinking for Data Science and Analytics(哥伦比亚大学):哥伦比亚大学 Data Science Executive 项目通过 edX 提供的统计学基础课程,虽然有些难,但通过非常条理的方式细致介绍了所有相关概念。

Link:https://courses.edx.org/courses/course-v1%3aColumbiaX+DS101X+1T2016/course/

 

  • Computational Probability and Inference(MIT):这是 MIT 提供的一门比较难的课程,要当心啦!课程涵盖诸如贝叶斯模型(Bayesian model)、图解模型(Graphical model)等高级话题,并且讲得极为深入。

Link:https://courses.edx.org/courses/course-v1%3aMITx+6.008.1x+3T2016/course/

 

  • Statistics with R Specialization(杜克大学):由杜克大学专门提供的 5 科目系列课程(最后一个结业项目可以忽略),可以帮助大家增强统计学基础知识,同时提供了动手操作的编程练习。建议可以通过这门课程均衡难度等级和严格程度。

Link:http://statistics%20with%20r%20specialization/

 

  • LAFF: Linear Algebra—Foundations to Frontiers(德州大学奥斯丁分校):有关线性代数基础的优质课程(同时还探讨了线性代数相关的高性能计算),建议不要错过。该课程由德州大学奥斯丁分校通过 edX 平台提供。接下来我要说的绝对不要怀疑:听完这个课程后,你绝对不会想要继续通过矩阵转换来求解线性方程组,哪怕那样做更有吸引力也更好理解,而你更会想要通过 QR 因式分解或 Cholesky 分解降低计算难度。

Link:https://courses.edx.org/courses/course-v1%3aUTAustinX+UT.5.05x+2T2017/course/

 

  • Optimization Methods in Business Analytics(MIT):这是由 MIT 提供,主要为了优化 / 操作业务分析研究方法的课程。注册这个课程是因为,这是我在足够好的平台(edX)上能找到,评价足够高,有关线性和动态编程技术的仅有的课程。我认为学习这些技术会对自己非常有用,因为可用于优化几乎任何机器学习算法中出现的问题。

Link:https://courses.edx.org/courses/course-v1%3aMITx+15.053x+3T2016/course/

请注意,我并没有查找并注册任何微积分课程,因为我觉得自己(大学期间)在这方面学到的知识已经足够了,我更希望学习有关机器学习或数据科学的知识和实践。如果这方面你存在欠缺,可能需要自行寻找适合的课程。

机器学习——不同性格大放异彩

在所有这些需要附带学习的内容里,我恰好完成了一门被视作所有 MOOC 课程先驱的课程:吴恩达在 Coursera 发布的机器学习课程。我猜对于这门课,很多人已经写过不少文章了,因此就不浪费时间来介绍啦。立刻去听吧,并完成所有课后作业和编程练习,试着用向量化代码的方式看待你所知道的所有主要的机器学习算法,同时建议妥善保存所有课程笔记以供后续参考。

另外,如果你想重新复习或者从零开始学习 MATLAB(这门课需要用 MATLAB 写代码,不能用 R 或 Python),那么可以听这门课:Introduction to Programming with MATLAB。

Link:https://www.coursera.org/learn/matlab/home/welcome

随后我想谈谈有关性格的问题。

我已经听了很多有关机器学习的课程,最大的收获在于意识到:对于同一个基础课题的不同对待方式,竟然被全球不同讲师赋予了不同的性格 🙂 这样的经验让人着迷。

我注册并学习的,有关机器学习的 MOOC 课程如下:

 

  • Machine Learning(斯坦福大学):Andrew Ng 的知名课程,介绍见上文。

Link:https://www.coursera.org/learn/machine-learning/home/welcome

 

  • Machine Learning Specialization(华盛顿大学):与 Ng 的风格截然不同,Emily Fox 和 Carlos Guestrin 分别从统计学家和从业者的角度介绍了相关概念。我没能用 Carlos 公司提供的免费许可安装 Python 软件包,但这门课从理论教学方面来看就已经物超所值了。相比 Ng 教授的课程,本课程对诸如方差权衡、成本计算、分析比较和成本函数最小化的数值方法等基础概念的论证和讨论更直观,也更全面(当然,Ng 教授的课程质量就已经好到没话说了)。

Link:https://www.coursera.org/specializations/machine-learning

 

  • Machine Learning for Data Science and Analytics(哥伦比亚大学):作为一般意义上的机器学习课程,本课程的教学大纲有点“不走寻常路”,前半部分主要介绍常规算法,涉及最基础的排序、搜索、图遍历以及调度算法。课程并未大篇幅逐一介绍具体该如何使用这些算法解决机器学习问题,但通过学习这些算法我们可以掌握必要的传统计算机科学知识,进而融会贯通应用到大规模数据科学问题的解决过程中,例如 O(n^3) 可用于与矩阵相乘,或像 O(nlog(n)) 那样对列表排序。日常工作可能不会只使用这些知识,但了解有关计算过程的基础内容无疑有助于拓宽解决其他问题的思路。

Link:https://courses.edx.org/courses/course-v1%3aColumbiaX+DS102X+1T2017/course/

 

  • Data Science: Data to Insights(MIT xPro 为期六周的在线课程):我付费注册的课程很少,本课程就是其中之一(大部分 MOOC 课程我都是只观看)。该课程并未发布到公开的 edX 网站上,不过确实使用了 edX 平台来提供。这套为期六周的课程结构安排合理,满是各种有趣内容,可以帮助新手全面了解数据科学和机器学习。其中的案例研究也很有趣,但实际操作起来很难,需要花费很多时间。讲座本身也很有吸引力,并全面展示了案例研究内容。我尤其喜爱其中有关推荐系统的章节,以至于学完该课程后,为了体验相邻矩阵,我也开始用笔记本看 Netflix 节目了!

Link:https://mitxpro.mit.edu/courses/course-v1%3aMITProfessionalX+DSx+2016_T1/about?utm_source=idss&utm_medium=web&utm_content=rotator&utm_campaign=dp-2016-dsx

 

  • Neural Networks for Machine Learning(多伦多大学:尽管由神经网络领域先驱人物 Jeff Hinton 担纲,但在 Coursera 平台上,这算是一门被有些低估的课程。我觉得 Andrew Ng 新发布的深度学习专业课与本课程的内容存在直接竞争关系,因此就算以后 Coursera 将本课程下线也不会觉得吃惊。不过要我说,深度学习技术的“铁粉”不应错过这门课,哪怕仅仅只是为了了解深度网络的发展和演进历史。

Link:https://www.coursera.org/learn/neural-networks/home/info

 

  • Deep Learning Specialization(deeplearning.ai):本课程由该领域的“小鲜肉”提供,不过他们早已站在 Andrew Ng 的巨人肩膀之上,因此也值得一学 🙂 我已经学完了第二门课,目前正在学第三门。虽然学习效果最终如何尚不明确,但如果想要了解深度学习领域的最新进展,绝对不能错过他们的这一系列课程。该课程的课后编程作业看起来挺难,并且很多人往往希望避免以手工方式进行深度网络编程(你可以不认可这一观点,毕竟市面上还有很多不错的开源软件包,例如 TensorFlow、Keras、Theranos,都可以帮助我们解决写代码方面的问题),但深入理解诸如正则化、梯度爆炸、超参数调优、批量规范化等基本概念都是很有必要的,这样才能更高效地运用哪些高级深度学习框架。

Link:https://www.coursera.org/specializations/deep-learning

数据科学的两大基础:R 和 Python

随着这篇长文即将结尾,我想推荐两个与上文所涉及主题有关,并且有趣实用的多科目 MOOC 课程。

Data Science Specialization(约翰·霍普金斯大学):Coursera 平台发布,极为著名的 10 科目专业课程。其中并非所有科目都是循序渐进的,我个人只完成了这十门课中的五门。重点在于时机,例如何时开始学习这些专业课。当有人在网上搜索关于数据科学的 MOOC 公开课时,通常这门课会排在搜索结果首位,因此很多新人首先学习的就是这门课。如果我一开始也是这么做的,那么我个人应该也能从中获得更多价值。我早已借助微软和 Udemy 提供的有关 R 的介绍式课程,以及几门有关统计学和线性代数的课程学到了这一系列课程想要讲授的内容。考虑到该课程是由约翰·霍普金斯大学生物统计学教授担纲主讲,选择这门课将能很好地掌握很多有关数据科学的课程所欠缺的两方面内容:研究学习,以及实验的设计。

Data Science Micromasters certificate program(加州大学圣地亚哥分校):这一系列课程和认证项目共包含四门课,目前我已注册并在学习第一门。该课程在深度和目标方面与约翰·霍普金斯课程较为类似,这一点我很喜欢,不过本课程选择 Python 作为动手实验部分的编程语言。课程结构和内容安排看起来很合理,涵盖了从 Python、Git、Jupyter 等基础知识直到通过 Apache Spark 框架进行大数据处理的方方面面(中间还穿插着有关统计学和机器学习的课程)。案例研究和动手实验范例源自数据科学在现实世界中的运用,例如野火建模、霍乱疫情蔓延以及全球发展指标分析。这一系列课程主讲师之一的 Ilkay Altintas 创造了一个很棒的平台,对火灾动力学预测提供了巨大帮助,并充分运用了数据科学领域有关的研究成果。相信我在学习这一系列课程的过程中将获得丰硕的成果,当然也欢迎你也加入!

人人都可以学——一定要善加利用

随着 MOOC、开源编程平台、协作工具,以及几乎无穷无尽的免费云存储服务的出现,学习这件事已经比以往任何时候更“亲民”,更普遍,也更容易进行。如果你不是数据科学 / 机器学习领域的专家,但希望学习这个课题,想要编写代码提高工作生产力,希望扩展自己的职业生涯,或者仅仅是为了消磨时间,那么就开始学习吧。最后,附上几则寄语:

  • 你就是数据科学家:别被一些所谓专家口中“MOOC 是小孩子的玩意儿,靠那个是没法变成真正的数据科学家的”之类言论误导。通过学习 MOOC 公开课成为数据科学家,这件事有两个含义:(a) 你的工作中已经在处理各类数据,并且 (b) 你希望通过科学的、系统化的方法从数据中获得最大化价值,并围绕数据获得更深入的见解和答案。这意味着,朋友们,你已经是一名数据科学家了。如果依然不信,不妨读读 Brandon Rohrer 撰写的这篇博客文章,他可是我所知道的最受赞誉,最励志的数据科学家。

  • 这样的学习花不了太多钱:我知道上面列出的一些课程看起来貌似挺贵,但好在大部分(甚至全部)都可以免费注册。edX 课程始终可以免费注册,同时在课程内容方面没有任何限制,例如你可以查看、练习、提交所有评分作业(Coursera 则有所不同,他们允许你免费观看所有视频,但教材不免费)。如果你觉得某些认证值得放在自己的简历上,可以在完成某些课程后随时付费购买,随后还能对课程的价值和效果评头论足一番。

  • 通过不断的练习、写代码和开发巩固在线学习的成果:在机器学习领域真的有个名叫“在线学习”的算法。这种技术并不需要处理包含数百万数据点的完整矩阵,而是只处理最新的少量数据点并更新预测。你的学习也可以这样做。停机问题 / 停车问题永远那么令人着迷,学习过程中同样适用。我们总在实际出成果之前考虑自己该学习吸收多少东西,例如学到哪一阶段就需要暂停并开始实践。别犹豫了,但也不能迟疑。学会一个概念后,就用简单的代码亲自测试一下吧。充分利用视频中看到的最新技巧或技术,别等到彻底掌握了整个主题之后才想到实践。观看视频过程中学到的哪怕最复杂的概念,也可以通过简单的 20 行代码获得宝贵实践(让你自信满满),这种感觉你绝对不会想要错过。

在15分钟内选出适合你的机器学习和数据科学课程

  • 数据无穷尽:你还会吃惊于网络上竟然有那么多丰富多彩的免费数据。不用考虑 Kaggle,试着换个方向找点乐子吧。例如 data.gov、联合国数据门户以及 UCI 机器学习仓库。是否已经想更深入体验一下了?那不妨下载 CIA 提供的不同国家数据然后试试你在 Matplotlib 或 ggplot2 课程中学到的数据可视化技术。此外你也可以从供电局下载自己的电量使用数据,然后分析看看调整空调或洗碗机的使用时间能否省几块钱出来。

本文有关各类课程 / 讲师的观点全部为作者本人的看法。

原文链接

https://medium.com/towards-data-science/how-to-choose-effective-moocs-for-machine-learning-and-data-science-8681700ed83f


始发于微信公众号:AI前线