数据科学家 (Data Scientist) 自我养成计划
豆列:R & Python: from zero to hero
算法: 零基础小白自学算法指南
这个帖子已经经过数次迭代,面貌和最初发表时可能已经有了很大的不同。今后也会随着我的学习进程不断修正。
背景
数据科学家 (Data Scientist) 据称是本世纪最为性感的工作。主要原因是随着互联网的兴起积累了海量的数据,人工智能也由此经历了量变到质变的突破。数据几乎每个公司和机构都有,而且越来越多的公司和组织开始意识到数据中潜藏的巨大财富和机遇。在这样的背景下,尽管有无数人中途转行从事了与数据相关的工作,众多高校和MOOC也针对这一现状开设了Data Science及相关领域的专业(或专项证据),相关的人才仍是供不应求。具有丰富经验和高超技能的成手数据科学家更是可以拿到非常丰厚的薪资。
统计及编程软件背景
作为一个待毕业的半文科生,美国较为严峻的就业形势使我在一段时间的思考之后,打算转型做商业数据分析师或者数据科学家了。 我的数理统计知识不是很扎实,主要来自于为了统计的Minor所上的一些课程。不过我也算掌握了不少社会行为科学方面的比较高级的统计分析模型,比如结构方程模型,潜变量增长曲线模型,多水平分析模型,以及混合变量增长模型等。至于数据分析经验,过去几年我除了学术性的数据分析之外,还一直以研究助理的身份为州政府的Child Support机构做数据分析,有几个持续时间比较长的大项目,有几个也都用到了预测分析的模型,使用的分析软件则主要是SPSS和SAS。
我此前的编程经验只限于一些统计软件,比如SPSS,Mplus,SAS等。R和STATA只懂一点。此外,准备SAS 证书的时候也学习了一些SQL的知识和比较初级的Macro编程。
R or Python
R 和Python是数据科学家最常用的两种编程语言。关于哪个最好最适合做数据挖掘和机器学习也有不少争论,以至于这个问题号称是价值百万的问题。从我目前看到的回应来说,如果你目前已经有很好的使用R进行数据分析,可视化,以及机器学习的基础,那么继续用R就是一个最佳选择。如果你没有用R或者Python进行编程的经验,或者你对于R只有非常初级和概略性的了解,那么Python一般被认为是更佳的选择。我个人非常喜欢Python这门语言,因为它非常的简洁,优雅,易学。而且,Python除了在数据科学中的应用,还可以用于编写一些小程序使得你的某些日常工作变得自动化。甚至你中途发现对数据分析没什么兴趣或天赋,也可以转行做网页开发什么的,Python仍可成为你得心应手的工具。
计划
虽然我去年就动了学习Python的心思,也搜集了一些学习材料,但当时只是粗粗翻了翻那些书,大致了解一下Python到底是什么。直到上个月底才开始真正学习Python。下面列出那两本书前面讲Python语法的部分我快速阅读学习了一遍,也适当的做了一下书中的练习。目前在跟着Udemy上的一套视频教程 Complete Python Bootcamp: Go from zero to hero in Python 3 继续加深对Python常用的语法结构的理解。语法入门之后,我要做的就是掌握用Python进行数据分析和绘图时最常用到的几个库,比如numpy,pandas,以及matplotlib,目标是熟练掌握基本而常用的语法进行数据的清理,制图,以及建模验证。关于机器学习的部分打算先过一遍书,然后跟着相应的视频教程走一遍,我当前的基础也无法对更底层的东西加以掌握。我是配合着刷Datacamp上的课程来加深对这些知识点的掌握的。
入门(Python的基本语法知识)
用到的书籍: 《Python编程快速上手:让繁琐工作自动化》(很好) 《Python编程:从入门到实践》(非常好) 两本都是图灵社区出的,英文原版在美亚的口碑特高,适合零基础的人直接学起来,能试着实现一些自动化操作,都是基于Python 3。两本都很好,强烈推荐两本都看,互相补充,加深理解,但因为各种原因如果你只看一本,我推荐《从入门到实践》那本。 视频教程: Complete Python Bootcamp: Go from zero to hero in Python 3 视频种子很容易搜到。这套视频我学下来觉得挺好,不是那种带你过家家当时觉得懂了些什么事后什么也做不了的课程。配合着作者精心准备的Jupyter notebook上的笔记和练习,可以对Python的语法和一般功能有着很好的掌握。
用Python进行数据分析
打算用到的两本书: 1. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (作者 Wes McKinney 也是Pandas这个著名Python数据分析库的作者,本书英文版去年刚出的第二版,第一版有中译本,名字叫《利用Python进行数据分析》,第二版有网友译本,译者是简书上的一个小哥,不过我大概看了一下,一些简单的文字部分都有不少错误,所以读起来要小心,最好等第二版的正式中译本出版,或者结合英文原版来学习。这类技术书籍中的英文一般都不是很难) 2. 《Python数据科学手册》 这本书也是这两年刚出的一本书,英文版 Python Data Science Handbook: Essential Tools for Working with Data 在美亚上的口碑也非常不错。我还没有细看,不过粗翻之下觉得体系和上面那本也比较相近,先介绍了IPython和Jupyter,然后着重介绍了用Python进行数据清理分析和数据可视化常用到的库。这本的好处是有中文版,学起来更快一些。
视频打算快速学一下以下几套,都是Udemy上的 Data Analysis with Pandas and Python (我比较喜欢这个老师的课,不过他这个课不是项目导向的,用于演示的例子都比较简单,主要是用于介绍如何用Pandas这个包来进行data wrangling。) Data Visualization with Python and Matplotlib (不是很喜欢这个老师的风格,觉得他说话的风格有些招人烦,所以目前没有深入地看这个视频教程) Python for Data Science and Machine Learning Bootcamp (这个老师和他的团队在Udemy上开了不少课了,都挺受欢迎的,我大致看了一下,觉得知识点覆盖的不是很细致,还是得结合着其他学习资源一同学习才行)
机器学习
这方面打算学习下面这本书,Udemy的视频,并打算修两到三个Coursera上的专项证书。
书:
Introduction to Statistical Learning (机器学习/统计学习必读书目。作者中有两位也是The Elements of Statistical Learning (ESL)这本奠基性的著作的作者。相比ESL而言,本书面向的读者群较广,对于没有很高的数理基础的读者也非常友好。) Hands-On Machine Learning with Scikit-Learn and TensorFlow (这本书也负有盛名,美国亚马逊上交口称赞,大多反映此书清楚易学。) Udemy 视频: Python for Data Science and Machine Learning Bootcamp Machine Learning A-Z™ Hands-On Python & R In Data Science
Coursera 课程
Machine Learning from Stanford University (Andrew Ng) 必修课程。这门课有众多优点,名校,业内最顶级的学者讲授,对初学者友好,知识点的讲授非常的清晰,还能从中学到最佳的编码规范。因此也无怪乎这门课会收到无数赞誉。这门课当然也有小缺点,比如课程中用的Octave 和Matlab在现实工作中几乎没有人会用他们进行机器学习的实践,但是瑕不掩瑜,非常推荐从这门课开始入门。YouTube上斯坦福大学官方账号也上传了吴恩达在斯坦福校园授课时的全部录像。
機器學習基石上 (Machine Learning Foundations)---Mathematical Foundations + 機器學習基石下 (Machine Learning Foundations)---Algorithmic Foundations 这两门是台湾大学林轩田教授在Coursera上开设的,口碑非常不错,相比吴恩达大神的课,这门课对于数学(主要是微积分和线性代数)的要求就高多了。而且大家普遍表示这门课的作业难度不小(“难到想报警”),不过通过后收获会很大。
Machine Learning with TensorFlow on Google Cloud Platform Specialization. TesorFlow 和Scikit-learn是用python做maching learning最著名的两个包。因此TensorFlow还是非常值得学习的。这里列出的这门课是Google Cloud官方推出的,一共五门课,全部修完可以拿到专项证书。
练习
我目前在datacamp上学习Data Scientist with Python这个career track的课程,一共20门课(最近又新增了两门,变成了22门),网站上给的估时是67小时(我实际学习下来,觉得完成的时间要比这个多出不少),不过如果基础还行也足够勤奋的话,还是有希望能够在一个月到一个半月内完成这个track的全部课程。
从我目前学习的课程来看,大部分的课程的设置还是不错的,我最喜欢的是无数个穿插在课程中的小练习,可以有效地帮助我掌握新的知识点或者发现单独通过看视频很难察觉到的学习盲区。而且Datacamp还有APP可以下载,方便随时随地练习。
不过,我不是很喜欢datacamp的视频课程,主要原因在于个别讲师说英语时口音有些重,而且还给人一种总踮起脚尖动来动去的感觉,萌是很萌,就是有些让人分心。不过每个课程都有配套的PDF讲义可以下载,所以我要么完全掠过课程(我已经从Udemy等处的相关课程中学到了相应的知识),要么1.5-2倍速快速地扫过。
目前,Datacamp上Python Programmer这个Career Track的十门课我已经全部完成,Data Scientist with Python这个career track的课程我已经完成了63%。
实战
Kaggle
如同前面所说,我平时的RA工作其实就是在做数据分析,因此,有很多机会把学到的知识应用的平时的项目中。不过我也在考虑通过Kaggle参与一些与我现在的领域不同但是我很感兴趣的领域的项目。
Datacamp Projects
Datacamp上目前有15个Python projects, 我打算刷完Data Scientist with Python这个career track后抽空把这些projects实践一下。听一个在波士顿读书的小哥说,他就有同学通过datacamp上的这些项目的经验找到了BA的工作。
他山之玉
这个小标题下我会列出一些我看过并觉得有收获的帖子。
一路披荆斩棘,我是如何成功拿到四大Data Scientist offer的?
【求职转行】想往数据分析,偏statistic方向转行,有什么推荐的MOOC课程和平台呢?
How can I become a data scientist? (重点推荐一下 William Chen 的回答,里面提到不少有用的资源。)