开发者和IT人士成为数据科学家的学习路线

摘要:这篇指南旨在帮助WEB开发者、软件工程师以及其他的IT从业者转行到数据分析/数据科学行业


上周我做客一所印度的知名学府发表演讲,超过60%的学生已经是经验丰富的IT专业人士,这当然一点也不令我惊讶

他们中的绝大多数都面临同一个问题:我已经在IT、软件开发、WEB开发行业从业多年,然后想提高自己的数据分析能力;我学习了几门MOOC课程,试着使用过几个数据分析平台,那么接下来我该做些什么? 在去年我们组织的几个学习分享交流会上,也出现了类似的情景

为了能尽可能地帮助这群人开启数据分析之旅,我写下了这篇综合的职业规划指南

在阅读完之后,你们会对转行数据分析所需要做的准备有个清晰的认识

自我评估,总结自身的技能 IT从业者通常熟悉代码,经常和数据库打交道以及使用各种框架

在成为一名开发者的几年后,你会了解一些开发语言:Java、ASP.net、Javascript、C++、C、HTML、Python、PHP;同时你也会用到多种数据库:SQL, MongoDb, Oracle 等等

拥有这些技能的你,往往会被那些没有编程背景却想要转行IT的人羡慕,你可以问问他们对此有什么感受

让我来解释一组我最期望优秀IT从业者应该具备的技能(最终转化为优势): 编程经验:如果你熟悉编程,你可以专注于理解概念、解决问题

在你转行数据分析的起步阶段,这会是个巨大的优势

尽管你没有使用数据科学领域编程语言的经验,但是你在理解一些诸如指数、函数、对象、引用等概念上有很大的优势

逻辑思维:数据科学家是按逻辑思考的,他们基于数据做决策
所以你呢?码代码需要逻辑,这是编程逻辑
你的大脑适应了那样去思考,这当然是你的加分项
数学能力:数学是数据科学的核心
数学好是一个人能取得的最大成就
我看过太多编程优秀的人数学能力出众
数据库知识:众所周知,IT人士都对数据库有很深的理解
这项技能对数据科学家快速地从数据库获取数据有极大的帮助
然而,你可能曾经愚蠢地相信数据科学就是学习几个工具
就像编程一样,了解几种语言或者框架不会使你成为软件工程师
解决问题和结构化思维的技巧才是区分好坏数据分析师的关键
工具仅仅是实现思维的一种方式

所以我建议所有人只需要依据便利原则去选择一种工具,然后就专注于获取实战经验

这里是一些你需要深入学习的领域: 结构化思维:结构化思维是指将模糊的问题梳理出脉络清晰的结构的能力

还记得你曾经收到过的那些结构散漫内容模糊的用户需求文档吗?这在数据分析领域一定会时常发生的

你的客户和股东们会向你提出业务问题,期望你能够以结构化思维思考问题并且用数据科学解决问题

数学&统计学:在开始阶段你需要了解一些基础的统计学、代数学和数学知识,当然日后你也可以深入学习这些内容

领域知识:作为数据科学家,你需要深入地认识这个领域,理解为什么一个具体的过程要这样做而不是那样做?就像你在银行工作,你就需要理解为什么“风控”很重要以及知晓行业的共同条款

你需要花费一些时间去理解这些领域知识

演说技巧:作为开发者,只要你能够向其他开发人员解释清楚自己的代码就行了

并非所有的开发者都需要和客户协商以及直接向客户展示解决方案

然而数据科学家们需要以一种简洁明了而又吸引人的方式去向客户展示自己的成果

数据科学技术技巧:数据收集和清洗、优化预测模型、实现数据解决方案——你需要在接下来的日子里掌握这些技能

你该如何起步? 我们如今面临的问题就是资源多而繁杂,我想你肯定会认同这点

如果你在因特网上尝试搜索R、PYTHON、数据科学的资源,你会得到一长串的结果;和一些有经验的人交流后,你又会得到一些新资源,那些曾经对他们有所帮助的资源;如果你是位狂热的读者,你可以读一些书和一些知名博客;此外你还可以从一些网络平台上学习一些MOOC资源

遗憾的是尽管你有大量的学习资源,你仍然觉得要找到属于自己的学习之路很困难

所以我制定了这条 学习路线 : 步骤1:配置好你的机器 硬件: 数据科学是计算密集型的(你应该不陌生)

所以你需要做的第一件事就是配置一台对你学习有所帮助的机器

最理想的情况下,为了应对数据科学工作需求,你的机器最低配置得有8 GB RAM和英特尔的i5/i7处理器芯片

当然你使用的硬件性能越高越好
如果你有空余资金,你还可以升级到SSD

操作系统: 遗憾的是,没有一个数据科学的专用操作系统,你可能需要一个windows、unix双系统机器

Unix系统在资源管理和数据运算方面有优势,而windows则是你使用ppt和excel的平台,这两个在数据科学流程中都是很重要的一环

此外还有一些可视化工具,这些在windows环境下使用更优

所以我推荐使用linux机器配置windows虚拟机,反过来也可以

当然,如果你习惯使用mac并且适应excel,那样也不错
软件: 这里你需要选择你喜欢的编程语言和开发工具

如果你有面向对象编程的经验,我推荐python,它简单易学,并且有一个充满活力的网络社区

如果你不熟悉面向对象编程,你也可以尝试使用R

如果你需要更多细节来决定使用哪个语言,你可以读读这篇比较文章SAS vs. R (vs. Python)

这里是我推荐的一系列软件: Office软件:创建表格,做演示和写文档 FileZilla:使用TFP传输文件 Git & GitHub:进行版本控制 VMWare / Oracle Virtual Box / Vagrant:运行虚拟 Cygwin / Putty:windows平台 Evernote:记笔记,如果你使用的是linux机器,则需要在浏览器中使用 Terminator (for Linux):在单一面板上运行多个terminal Sublime Text(或其他文本编辑器):你需要安装插件来进行相应语言编程 如果你选择使用python: l 安装7或者python3.4,并且安装numpy, scipy, matplotlib, scikit-learn, pandas扩展包 l 安装Jupyter notebooks l 此外Dato (Graphlab), vowpal-wabbit, import.io 是一些有趣的扩展包 如果你选择使用R: l RStudio是很好的开发环境 l 安装一些重要的包:dplyr, lubridate, ggplot, caret, randomForest 等等 现在的你的机器已经准备好处理数据了! 步骤2:习惯于解决模糊问题(训练结构化思维) 结构化思维在数据分析领域是一种心照不宣的要求,但它受到每个数据科学家的深深追捧

这里是一些提高你技能的资源: l Art of Structured Thinking l Tools for improving structured thinking l Train your mind for analytical thinking 作业 :解决这个案例分析:Call Center Optimization

这是个初级水平的作业

当你成功完成它,你可以去完成medium和advanced的作业

如果你准备好进入下个阶段,你可以尝试解决我们的实践问题Strategic thinking 步骤3:数学&统计学基础 数据科学中数学扮演一个很重要的角色

幸好你不需要学习所有数学知识,只有一部分主题是必要的

你可以先学习一些基础主题,然后在继续下面的主题: Udacity 的Inferential和Descriptive Statistics(基础) Probability by Khan Academy (基础) Algebra by Khan Academy(基础) Massively Multivariable Open Online Calculus Course at Coursera(进阶阶段学习) 你可以读一些书加深理解Must Read Books on Statistics and Math 作业 :进行实践数据分析Big Mart Practice Problem,在你完成这些任务后可以将其加入到你LinkedIn资料中的项目经历

步骤4:数据分析工具的使用基础(R&Python) 在步骤3之后,你应该进行编程训练

数据科学中的代码是简洁的,优秀的数据科学家往往摒弃冗余代码并且采取措施使代码执行更快

你学习编程的首要任务就是给自己使用R或者Python解决问题开个好头

通过以下课程来数学R、Python的编程基础: R Course on DataCamp Python course on DataCamp Data Science Certification from John Hopkins University on Coursera Python for Data Analysis – Harvard CS109 course 除了这两个工具以外,你还可以使用Julia, Go, Java来建立预测模型

然而使用其他编程语言可能会有缺少社区支持的劣势
目前为止,Python和R拥有最好的网络社区支持
这会对你解决问题和深入学习有所帮助

作业 :前面已给出连接 步骤5:自己动手——你的第一个实战项目 是时候自己动手实践第一个项目了,和编程一样,学习数据科学的最好方法就是实战

所以让我们以解决问题开始吧

你可以选择Practice problems和 projects mentioned here中的任意问题,对这些问题中的数据进行探索性分析

这里是几个优秀的参考资料: Exploratory data analysis in R Exploratory data analysis in Python 作业 :对你选择的项目进行探索性分析

步骤6:在学习过程中遵循这些步骤 既然你已经了解了学习步骤,那就开始动手吧

检查一下我们关于R和Python的学习步骤,一步一步地执行
当然你可以跳过你十分熟悉的环节,但是你需要做尽可能多的练习

Learning Path on R Learning Path on Python 这里是一些其他机器学习的资源

记住彻底学会数据科学是进行数据分析实战的前提: Learning Path on Machine Learning Basics of Machine Learning Essential of Machine Learning Algorithms Machine Learning Course by Yaser Abu Mostafa Machine Learning Course by Andrew Ng Must Read Books on Machine Learning 作业 :使用下面的算法对Loan Prediction Problem建立预测模型 Logistic回归 决策树 随机森林 对决策树和随机森林你可以在Complete Guide on Tree Based Modeling.找到帮助

你需要弄清楚这些算法的原理
仅仅使用他们进行预测对你毫无帮助
真正的成功需要掌握这些算法的工作原理
步骤7:参加比赛 是时候开始参加数据比赛了

成为数据分析社区的一员的优势在于你可以通过众多途径来学习新知识,而不用像传统一样

比赛 :有很多全球范围的数据科学竞赛,你可以参加他们,如果成绩好的话还可以获奖

在你完成上述的学习步骤后,你得通过参加这些数据科学比赛来检验自己的学习成果

DataHack Kaggle 作业 :在6-12个月内,在这两个数据比赛网站的比赛中排到前100名

这会给你的简历带来极大的优势

学习过程中你需要避免的错误 在我们追求速成学习的过程中,我们倾向于犯一些错误

不用担心,我们都会这样

但是我们得谨慎点,我们需要分析学习进程,并且以此来规划后面的学习任务

下面几点是你在学习过程中需要注意避免的错误: 选择困难的问题:起始阶段尝试困难问题不会让你成为了不起的数据科学家,这只会折磨你

循序渐进,以解决上面作业中给出的简单问题作为起步,这会让你建立必要的自信

学习太多的概念:你可能会被网络上众多学习资源所淹没,不要被这些影响

你不必成为一个万事通,那样的话你不会精通任意一种技术
要成为大师,一次使用一种工具,学习某一种概念
当你充分掌握后再去考虑下一个学习任务
编程不得其法:过去几年你可能码了很多晦涩难懂的代码
但是数据科学有点不同
你不再开发软件,你只是在使用软件
不要浪费时间去写算法,你只需要使用扩展包
像R和Python这样的工具享有难以置信的扩展包支持

使用这些扩展包,在简短的代码中实现更多内容,这才是你需要考虑的

不耐烦:这是最重要的

我遇到很多人声称自己已经花了几个小时来学习数据科学,但是毫无进展

你需要保持耐心
毕竟好事多磨

你有很棒的社区支持@ Discuss,多和社区交流,分享你的问题,让人们知道你现在的境遇

记住你不是一个人,你和我们一起
最后,到达数据分析师生涯顶峰 这是给正在努力学习的你动力

结束语 我希望这篇指南能够帮助具有软件开发背景的IT人士成功转行数据分析或者机器学习

总结一下就是说:充分发挥自身优势;专注于培养结构化思维和问题解决能力;多加练习,尽可能多地尝试解决现实生活中的问题

如果你遇到困难,不要忘记向社区的小伙伴们寻求帮助

你可以通过Live Competitions and compete with best Data Scientists from all over the world来检验自己的技能和知识水平

原文:http://www.analyticsvidhya.com/blog/2016/05/learning-path-turning-web-developer-professional-data-scientist/ 本文由数据分析网 – 丁杨翻译!欢迎加入翻译组

丁杨:计算机科学与技术专业大三学生,熟悉一些数据分析与挖掘的算法


发表回复