如何成为一名数据科学家(Data Scientist)
R in Coursera
经常有人问我怎么才能成一个数据分析师。我以为,要想做数据分析工作,需要掌握的技能不外乎是以下三个:
- 扎实的理论功底(统计,数据挖掘的基础知识、模型)
- 一门脚本编程语言(R/Python/Julia..)
- 丰富的实战经验
对于学习的顺序问题,应当是:理论—编程—-实战的过程,一个循序渐进的安排会让自己效率大增。对于在校学生,最好的方式是课程中完成理论的学习,平时自学完成编程的学习,最后靠实践/实习来积累数据分析的实战经验。对于想将方向转向数据分析的同学,还是建议深入的看本统计的书,会让之后的路程事半功倍.
本文不再提理论部分的学习,随便从一个大学里面拉出来一位统计学的讲师都会比我讲的更深入浅出,我们主要把注意力放在R语言上面,给大家提供一个学习R语言的优秀渠道——————Coursera
何谓Coursera
Online Course
对于online课程大家应该不陌生了,现在做的比较好的应该就是果壳MOOC,
网易公开课,
Coursera,果壳和网易做的是Coursera社区,三个网站的资源差不多是相通的,不过,我还是建议去听原汁原味的Coursera~
Coursera
Coursera是免费大型公开在线课程项目,由美国斯坦福大学两名计算机科学教授吴恩达(Andrew Ng)和达芙妮·科勒(Daphne Koller)创办。旨在同世界顶尖大学合作,在线提供免费的网络公开课程。Coursera 的首批合作院校包括斯坦福大学、密歇根大学、普林斯顿大学、宾夕法尼亚大学等美国名校。
我想Coursera与以往网络课程有所不同之处,一是在于资源变成了全球最好大学的教学资源,另外一个是Coursera会布置一些网络提交的作业,使得真正把教学视频变成了网络课程。
Data Science
什么是数据科学,实际上就是对数据提取,分析,理解,描述,预测的一门学科,提出的时间是2008年,乍一看来数据科学其实很像统计学,实际上,数据科学应当是统计与计算机的交叉学科…wiki
Coursera上面,John Hopkins大学提供了一整套的数据科学的在线课程,一共九门课:
- 数据科学家的工具箱 Data scientist’s tool-box
- R语言编程 R programming
- 获取和清理是数据 Getting and cleaning data
- 探索性统计分析 Exploratory Data Analysis
- 可重复性研究 Reproducible Research
- 统计推断 Statistic Inference
- 回归模型 Rgression Model
- 实用机器学习 Practical machine learning
- 数据产品开发 developing data products
花了三个月把这九门课刷完了,9张证书容我先嘚瑟一下(证书是要付费的,免费上课是没有电子证书的),不过话说回来,交的学费是值得的。
数据科学家的工具箱Data scientist’s tool-box
https://www.coursera.org/course/datascitoolbox
Get an overview of the data, questions, and tools that data analysts and data scientists work with. This is the first course in the Johns Hopkins Data Science Specialization.
DST这门课主要讲的是这个专项课程中九门课都是在讲什么的,另外就是一些基础的背景知识的介绍,包括:
- R/Rstudio的安装使用
- 其他课程的介绍
- Git版本控制工具
这里有一个比较重要的技能,就是git和Github的使用。Git一款自由和开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Github是程序猿们的博客,简单的说,就是一个共享代码,或者管理项目代码的网站(博客),在后续的大部分课程中,作业是需要用Git来上传到Github中的,而在现实的工作中,如果涉及到程序,代码的问题,Git也是一项必备的技能。
课程作业4个quizzes,不是很难。
R语言编程(R programming)
https://www.coursera.org/course/rprog
Learn how to program in R and how to use R for effective data analysis. This is the second course in the Johns Hopkins Data Science Specialization.
Rprogramming开始就有些难度了,四周课程,4个quizzes,4个编程,一个project作业压力直线上升,这四周的目的是希望同学们能对R这门编程语言达到入门的水平,当然,建议是需要些编程基础的。
课程主要讲述一些基本的R语言编程方法:数据类型,导入数据,循环,向量化,debug,scroping Rule…
这门课算是一个入门课,之后课程的完成都需要R的编程能力,花四周完成这个课程,完成R的入门,这个过程是必要的。(^_^)
获取和清理是数据(Getting and cleaning data)
https://www.coursera.org/course/getdata
Learn how to gather and clean data from a variety of sources. This is the third course in the Johns Hopkins Data Science Specialization.
对于一个实际的项目,最重要的是什么?
目的>数据>模型
为了解决这个问题,我们需要导入数据,数据有问题,需要做清理以保证数据适用于下一步的建模
Getting and cleaning data这门课所教授的就是数据收集和清理的过程,
数据的收集包括:
- 本地数据(.xlx,.csv,.txt)
- 网络数据(html,xml,jason,API)
- 数据库的数据(MySQL,HDF5)
数据的清理包括:
- 处理异常值
- 特征子集的选取
- 正则化表达
这只是课程主要的一些项目,对于图像数据,音频数据的导入,数据的变形与整合等,都有提到,课程所包含的知识点很广,同时也相当实用,4个qizzes,一个project.
探索性统计分析 Exploratory Data Analysis
https://www.coursera.org/course/exdata
Learn the essential exploratory techniques for summarizing data. This is the fourth course in the Johns Hopkins Data Science Specialization.
Exploratory Data Analysis这门课主要讲怎么用R来画图,以完成探索性的分析过程,画图主要靠三个包:
- base包,最基础的
- lattice包画图,适用于大数据的
- ggplot2包,方法最全也是画出来最好看的
- 此外还会介绍一些经典的多元模型:层次聚类,Kmeans聚类,和主成分分析的方法
这门课要用git来传图片到Github什么的,而且对R的编程要求不低….
3个quizzes,两个projects(其中要画至少10张图)。
可重复性研究Reproducible Research
https://www.coursera.org/course/repdata
Learn the concepts and tools behind reporting modern data analyses in a reproducible manner. This is the fifth course in the Johns Hopkins Data Science Specialization.
对于一个研究,或者一个论文,别人检测你的结论是否正确等,应该怎么做呢?自己再手动编程一遍实在是复杂,一个比较现代的方法就是做一个可重复研究的文档,其中包含程序,结果,结论等….
这门课讲述了如何用RMarkdown做出一个网页以方便别人来对你的结果进行重现(这句话看起来简单,其中的…试了才知道)
其实客观的来说,如果你完全掌握了Yihui大大的knitr包,这门课剩下的部分是理工科中少见的文艺风了,各种对于研究的讨论,研究思路的发掘,讲述,相信对于培养一个数据科学的氛围来说,是相当的不错。
这门课3个quizzes,两个projects。
统计推断(Statistic Inference)
https://www.coursera.org/course/statinference
Learn how to draw conclusions about populations or scientific truths from data. This is the sixth course in the Johns Hopkins Data Science Course Track.
Statistic Inference我感觉其实是最简单的(基本上是没看视频直接答题就都满分了),当然很多人在讨论组里说这个好难,以至于最后老师把作业的deadline一推再推。
其实,统计推断就是概率论与数理统计,统计学出身的话这门课应该不难学。
Statistic Inference从概率和随机变量讲起,一直讲到统计的检验的势(我猜很多本科毕业的统计学生都不一定熟悉这个概念),只花了四周,当然一些高深的统计知识不需要证明或者计算,只要你可以在R里面实现就可以了…
但如果你是真心想学些东西的话,还是一点点死磕这门课吧。
回归模型 Rgression Model
https://www.coursera.org/course/regmods
Learn how to use regression models, the most important statistical analysis tool in the data scientist’s toolkit. This is the seventh course in the Johns Hopkins Data Science Specialization.
回归是统计历史上发展最完全,影响最深远,至今还有很大活力的一类模型,这也是John Hopkins为什么要用一整门课 Rgression Model,来叙述这一个模型了.最简单的回归就是用来描述变量之间的线性关系,或者可以看做量化相关性,之后一点点变复杂,从一元到多元,从iid的正态误差项到各种其他的情况。
所有的计算的过程都在R中完成,课程中包含了一些理论的证明过程,还是那句话:要想学好,建议死磕。
包含知识点:
- 线性回归(一元/多元)
- 模型解释(系数,残差)
- 模型诊断(异方差,多重共线性..)
- GLM(包括Logistic回归,Poission回归等)
课程包括3个quizzes,1个project
实用机器学习 Practical machine learning
https://www.coursera.org/course/predmachlearn
Learn the basic components of building and applying prediction functions with an emphasis on practical applications. This is the eighth course in the Johns Hopkins Data Science Specialization.
和回归模型的课程比起来,Practical machine learning这门课所包含的模型更多,回归模型的课程是为了告诉你对于一个模型应该怎样完整的学习它,而Practical machine learning 是为了尽可能多的为你介绍现代的一些数据挖掘模型,并深入浅出的传授整套机器学习的流程:
数据清洁—>划分训练集—>模型拟合—>模型评价,预测。
包含知识点:
- 模型的训练与检验
- 各种分类模型:分类树,随机森林,Bagging,GBM,正则化回归(lasso,Riddge)
- 模型诊断(异方差,多重共线性..)
- GLM(包括Logistic回归,Poission回归等)
课程包括3个quizzes,1个project
数据产品开发 developing data product
https://www.coursera.org/course/devdataprod
Learn the basics of creating data products using Shiny, R packages, and interactive graphics. This is the ninth course in the Johns Hopkins Data Science Specialization.
最后一门课应该是最炫的一门了,之前8门课说当做铺垫也不为过,最后的课程应该就是这3部分的内容:
- slidify
- shiny
- packages
slidify是Ramnathv写的一个基于markdown的包,不在R的镜像里面,需要用Devtool从github上安装,单纯的说,这个包就是用来做可重复实验的slide(ppt)而由于使用的是Markdown 语法,所以整个编写过程简化许多,是一个在R中很fashion的包
shiny是Rstudio开发的制作可交互网页的包,将R的函数转化为JS的代码,从而可以做出很多很酷的网页效果,细节请看(shiny.rstudio.com)
最后的packages是讲述了如何写一个自己的package,在学第一门课的时候应该是从未想到自己可以达到这样的水平吧,实际上package就是一些函数的合辑,如果你对自己的函数有信心,为什么不试试呢?
Summary
Coursera的Data Science专项课程几乎已经包括了R语言数据挖掘中大部分的基础知识,这九门课对于R的入门来说,含金量还是挺高的。
最终还是要提醒大家,师傅领进门,修行在个人。课程再好,也需要自己耐下心来学习。要想真正学好R,玩转数据分析,还是需要自己的努力。