此文为转载,原文地址:http://www.rcasts.com/2012/12/software-engineers-guide-to-getting.html,另外,需要说明的是,学习方法是因人而异的,仁者见仁,智者见智,取精去糟。
很多软件攻城狮朋友问我如何学习数据科学。其实已经有不少有名的数据科学家写过这方面的文章,比如Dataspora, Gigaom, Quora和Hilary Mason。 本文讲述的是我作为一名软件工程师学习统计和数据可视化的历程。
我是半路出家的,花了5年时间成为数据科学领域的熟练工(proficient),在我的学习过程中包括自学 (书籍, 博客, 简单实例)、工作中做项目、课堂培训(Stanford)、教学/演讲、会议(UseR, Strata)。 下面来讲讲到目前为止我做了哪些准备,其中哪些有用,哪些没用。
1. 入门
a) 自学(2 - 4 个月)
考察一下数据科学是否适合自己
入门很关键。两年前,我和几个同事组成了学习小组,一起学习Stats 202的课件。 这让我很兴趣,并且从那开始接触数据分析。 学习小组的5名成员中只有2名选择在这一领域研究的更深入(数据科学并不适合所有人)。
- 学习基础的统计学:Stats 202的课件非常适合入门
- 学习统计工具: 作为一只菜鸟,我花了3个月的时间潜心学习。请看R ,并获得了不少乐趣 为什么学R?
- 解决问题:好奇心是数据科学的关键。如果你对国家经济、犯罪率统计以及体育比赛结果有疑问,那就找找数据自己解答你的疑问吧。
- 学习Unix工具:我选择阅读 O'Reilly's Data Analysis with Open Source Tools (A hands-on guide for programmers and data scientists)
- 学习SQL和脚本语言: 我会Java, Ruby和SQL。Python is on my list.
网上有很多学习资料
- Stats 202
- Caltech Data Science course
- Coursera: Introduction to Data Science, Machine learning, Data Analysis, Computing for Data Analysis
- University of California Berkeley - Introduction to Data Science
- Knight Center for Journalism's course on Introduction to Infographics and Data Visualization
- Stats 101: Udacity (Intro to Stats), Khan academy, Carnegie Mellon's stats course
- Learn R
b) 课堂培训 (9 - 12个月)
如果你真的想学好,就参加一门正式的课程
如果你很认真地想学这门技术,那么最好参加课程学习。课程的艰难程度要保证我不会松懈。斯坦福提供了很棒的入门课程,比我参加的其他为期一周的培训课程要好很多。
- Data Mining and Analysis STATS202
- Linear and Nonlinear Optimization MS&E211
- Mining Massive Data Sets CS246
- Modern Applied Statistics: Learning STATS315A
- Statistical Methods in Finance STATS240P
- Modern Applied Statistics: Data Mining STATS315B
2. 专注
a) 在数据科学方面花100%的时间
- 当我沉迷于数据科学时,我发现想用20%的时间来构建专业知识是很困难的。 必须花100%的时间在上面, 所以我寻找跟数据科学有关的问题 (大数据分析、医疗、市场营销以及零售分析、 最优化等问题)来解决
b) 研究有趣的问题
- 我的学习目标总是跟我感兴趣的事物联系起来。当我学习新的技术时,我发现用所学的知识解决有趣的问题是很另人兴趣和着迷的事。我对零售、医疗和体育 (板球)方面的数据分析很感兴趣
c) 加速学习
- 教学:我给同事和朋友培训R和数据挖掘的入门课程。这使我所学的知识得到巩固,而且让其他人对这一领域感兴趣。 这是我回馈开源社区的最好方式,写博客也是将我所学知识贡献出来的好办法。
- 关注数据科学领域的领导者:DJ Patil,Hillary Mason,Jeff Hammerbacher,Carla Gentry,Monica Rogati,Cathy O'Neil。还有其他这方面的领导者。
- 关注有趣的博客:http://datascience101.wordpress.com,http://columbiadatascience.com/blog,http://www.r-bloggers.com,http://www.datawrangling.com,http://flowingdata.com(Quora的最佳博客列表)
- 定期参加会议和聚会:本地的数据科学/R语言方面的聚会,O'Reilly Strata非常棒! 由于这个领域更新很快,所以我至少每隔一年去一次这个会议。UseR会议 也很精彩,可以看看R语言世界发生了什么有趣的事。
- 学习大数据技术:MapReduce/Hadoop,Cloud computing. 我避免选择商业软件 。现在看来,这是正确的决定。
d) 学习行业知识
我很幸运,能够接触到数据科学内外的专家, 他们帮我理解他们处理数据科学问题的方法 (他们如何思考、 假设以及 test/access/reject解决方案)。我从他那里学到, “Hypothesis-driven data analysis”比”blind/brute-force data analysis”更加重要。这强调的重点是,对业务的理解要先于试图从数据中获取有意义的结论。 这引导我了解运筹、营销、零售、 旅行和物流(利润管理)以及医疗行业。 纽约时报最近发表了一篇文章强调直觉的必要性。
3. 数据科学方面有用的图书
- Introduction to Data Mining by Tan, Steinback and Kumar 这本教材被很多入门级数据科学课程采用,比如Stanford的Stats 202
- R in a nutshell
- Data Analysis by using Open Source tools
- Beautiful visualization
- 其他数据科学领域的图书:O'Reilly, Manning
4. 对我无效的事
- 学习多种统计工具:一年以前,我接手的工作需要用到SAS编程,所以我想学SAS。我尝试了一个月,不过最终还是放弃了。主要原因是学习的惰性,以及我对另一种统计工具R的热爱。我实在不需要其他统计软件。我可以用R和其他我了解的软件解决数据科学里几乎所有的问题 。所以我的建议是如果你已经对SAS,Stata,Matlab,SPSS,Statistica很熟悉,那就继续使用。如果你要学习新的统计工具,那就选R。 R 是开源软件,而其他软件是商业软件(昂贵且复杂)
- Auditing courses:I tried to follow self-paced coursework from Coursera and other MOOCs but it wasn't effective for me. I needed the routine, the pressure of a formal course with proper grading to go through the rigor
- 增加学术方面的工作量:Manage work-life balance and work-commitments well. Earlier this year, I tried to take multiple difficult courses at the same time and quickly realized that I wasn't enjoying and learning as I should.
- 只阅读课程教材:很多课程的教材对我这样的软件工程师来说过于艰深了。所以我用其他资料来理解概念。比如,用卡内基梅隆大学的笔记学习回归