[关闭]
@liuhui0803 2017-10-18T05:35:18.000000Z 字数 8953 阅读 2533

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

数据科学 机器学习 在线课程 编程


作者Tirthajyoti Sarkar英文原文15 minute guide to choose effective courses for machine learning and data science

本文介绍了作者从个人经验出发,为希望学习掌握数据科学/机器学习技术的非计算机专业年轻学生提供的建议。

动机

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

我本人简直无法更赞同!

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

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

我想学,但从何处着手?

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

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

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

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

知“己”知“彼”

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

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

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

1-n75mB19gx66fKInt3qLOYw.png-131.8kB
通过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正在日渐流行,并逐渐成为数据科学领域的既定语言标准,造成这种情况的最主要原因就在于,该语言有着大量高质量、已经过同行审阅,由专家撰写的库、类和方法,只需下载适合的软件包并解包,就可以无缝集成到我们自己的代码中。

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

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

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

随后我转为深入学习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文章:机器学习和数据科学需要具备哪些必不可少的数学知识

1-IsUVsviHa6Y9abJJm_21Vg.png-220.4kB
为了涉足数据科学/机器学习必须具备的数学知识

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

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

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

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

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

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

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

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

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

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

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

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

1-2N-VANgteb2_Vwbm1S7-Yg.png-233kB

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注