如果让我今天做一个数据科学的入门帖,一定和当时写的思路和内容完全不同。所以我也考虑是否要把这篇回答推翻重写。当时的数据科学和工程领域仍然属于一个快速生长和迭代的时期,深度学习的研究还固定在一个特定圈层,PyTorch、TensorFlow这些框架也都还在孕育之中。分布式和云计算也远远达不到今天的生态。相应地,学习资源事实上十分紧缺。我还记得当时的Coursea的课程数量不足一百门,Andrew Ng的Machie Learning还是用MATLAB教学,并且在课程里说过”掌握了这门课,你就已经比硅谷90%以上的人懂得更多机器学习“这样的话,这放到现在是完全无法想象的事情。
但我还是决定保留这些2014年写下的内容,因为经典的内容还没那么容易过时。ESL依然是机器学习领域的重要参考书目
- 工具
R/Python/MATLAB(必备):如果是做数据分析和模型开发,以我的观察来看,使用这三种工具的最多。R生来就是一个统计学家开发的软件,所做的事也自然围绕统计学展开。MATLAB虽然算不上是个专业的数据分析工具,但因为很多人不是专业做数据的,做数据还是为了自己的domain expertise(特别是科学计算、信号处理等),而MATLAB又是个强大无比的Domain expertise工具,所以很多人也就顺带让MATLAB也承担了数据处理的工作,虽然它有时候显得效率不高。Python虽然不是做数据分析的专业软件,但作为一个面向对象的高级动态语言,其开源的生态使Python拥有无比丰富的库,Numpy, Scipy 实现了矩阵运算/科学计算,相当于实现了MATLAB的功能,Pandas又使Python能够像R一样处理dataframe,scikit-learn又实现了机器学习。
SQL(必备):虽然现在人们都说传统的关系型数据库如Oracle、MySQL越来越无法适应大数据的发展,但对于很多人来说,他们每天都有处理数据的需要,但可能一辈子都没机会接触TB级的数据。不管怎么说,不论是用关系型还是非关系型数据库,SQL语言是必须要掌握的技能,用什么数据库视具体情况而定。
MongoDB(可选):目前最受欢迎的非关系型数据库NoSQL之一,不少人认为MongoDB完全可以取代mySQL。确实MongoDB方便易用,扩展性强,Web2.0时代的必需品。
Hadoop/Spark/Storm(可选): MapReduce是当前最著名也是运用最广泛的分布式计算框架,由Google建立。Hadoop是基于MapReduce的框架建立起来的分布式计算系统,Spark在Map Reduce的基础上利用有向无环图构建了RDD,目的就是为了减少Map和Reduce之间的数据交换次数,所以速度就快了。另一个区别就是,Hadoop用硬盘存储数据,Spark用内存存储数据,Storm只接受实时数据流而不存储数据。Hadoop因为“历史”最为悠久,有不少技术和产品都是基于Hadoop开发的,所以在较长的时间内Hadoop并不会不会被淘汰。而Spark是目前生态最好,最活跃的分布式框架。如果刚刚起步研究分布式计算,可从Spark入手。
OpenRefine(可选):Google开发的一个易于操作的数据清洗工具,可以实现一些基本的清洗功能。
Tableau(可选):一个可交互的数据可视化工具,操作简单,开箱即用。而且图表都设计得非常漂亮。专业版1999美刀,终身使用。媒体和公关方面用得比较多。
Gephi(可选):跟Tableau类似,都是那种可交互的可视化工具,不需要编程基础,生成的图表在美学和设计上也是花了心血的。更擅长复杂网络的可视化。