随着数据分析相关领域变得火爆,最近越来越多的被问到:数据分析如何从头学起?其中很多提问者都是商科背景,之前没有相关经验和基础。
我在读Buisness Analytics硕士之前是商科背景,由于个人兴趣爱好,从大三开始到现在即将硕士毕业,始终没有停下自学的脚步。Coursera和EDX等平台上大概上过20多门网课,Datacamp上100多门课里,刷过70多门。这篇文章是想谈一谈个人的数据分析学习经验,希望对想要入门这个领域的各位有帮助。
1. 基本工具
学习数据分析的第一步,是了解相关工具
Excel
excel至是最基础的数据分析工具,至今还是非常有效的,原因是它便于使用,受众范围极广,且分析结果清晰可见。
相信大多数人都有使用excel的基本经验,不需要根据教材去学习了。重点掌握:基本操作的快捷键;函数:计算函数、if类、字符串函数、查找类(vlookup和match),一定要熟悉函数功能的绝对和相对引用; 数据透视表功能等。另外,excel可以导入一些模块来使用,典型的包括数据分析模块,作假设检验常用;规划求解,作线性规划和决策等问题非常有效。利用这些模块可以获得很不错的分析报告,简单且高效。
SQL
数据分析的绝对核心!大部分数据分析工作都是对数据框进行的,在这个过程中,需要不断的根据已有变量生成新变量、过滤掉一些样本还有转换level。SQL的设计就是为了解决这些问题。其他常用的数据操作工具,包括R语言的数据框、Python里的pandas,基本都是借鉴了SQL的思想,一通百通。
SQL入门容易,它的语法极其简单,基本可以说上过一门相关的课或看过一本相关的书就可以了解大概,但融会贯通并能够进行各种逻辑复杂的操作,就需要长时间的锤炼了。
SQL的学习建议,随便找一本书或者网课就好,因为主流的课程基本都是一个思路:先讲SELECT、WHERE、GROUP BY(配合简单的聚合函数)、ORDER BY这类单表操作,之后讲JOIN进行多表连接。除此之外,必会的基本技能还应该包括WINDOW FUNCTION和CASE WHEN等等。学了基本的内容之后,就是找项目多练,不断提升。
R/Python
熟练SQL之后,对数据操作方面的内容就得心应手了。接下来更复杂的问题,如搜索和建模,则需要使用编程语言。
R vs Python
目前最主流的数据分析编程语言就是R和Python,网上遍是关于这两者的争论,有兴趣的可以简单看一下,但不用陷入过度的纠结。我个人的经验来看,熟练两者其中的任何一个都可以胜任数据分析中的大部分工作,不存在某一个语言有明显缺陷的情况。
这里不想大篇幅的比较两者,但是想简单的说一下两者的侧重点:
R语言是为了解决统计问题而设计的,因此它有一个很人性化的地方:最大程度的简化语言,从而让分析人员忽略编程内容,直面数据分析。也因为是统计语言,很多基本的统计分析内容在R里都是内置函数,调用十分便捷。此外,R的报告能力很强,大部分模型库在训练模型后都会提供很多细节,也比较容易通过rmd转换成优美的doc/pdf/html。
Python先是一门general的编程语言,之后才是数据分析工具。初学python,语法肯定是不如R容易理解的。但使用到后来,当越来越多的需要自己定义时,Python的优势就显现出来了。另外,Python在数据量大时速度会比较快。
至于先学哪一个,需要结合自己的规划来看:如果最终两个都要学,那我毫不犹豫的建议从R开始;如果两个选一个学的话,我目前倾向于Python,不过如果你确定自己以后只做业务方面的内容,那R可能更好一些。另外,如果有专注的领域的话,那么要结合自己的领域来定,比如搞投资分析的可以看一看R语言的PortfolioAnalytics库,大概就明白,说R语言把编程简化专注结果所言非虚。
R语言学习
当然无论入门哪种语言,学习路径都很重要。R语言的学习建议从基础数据结构开始,了解R中的vector、dataframe和list等结构,对语法有基本的理解。之后建议学习dplyr和ggplot2这两个库,两者分别是数据操纵和可视化库,学过之后可以做一些基本的数据项目了。学习平台首推datacamp,是付费的但绝对物有所值,没有比边学边练更好的学习方式了。此外推荐一本R语言实战(R in Action),可以当作学习手册。
Python学习
包括我在内的很多同学都把Coursera上的Python for everyone当作启蒙教材,这是一门很好的课程,但对于专注数据分析的Python使用者而言,课程没有提供最完美的学习路径。学习Python也应该从数据结构开始,list、dictionary、tuple这些数据结构要了解。之后建议学习numpy、pandas和matplotlib,分别是矩阵库、数据框库和可视化库,基本就算是入门了。学习Python,Datacamp依然是个很不错的平台,但是资源不如R丰富。首推一本叫《利用python进行数据分析》(Python for data analysis)的教材,直接传授数据分析最需要的编程技能,熟悉书中的知识基本就可以说学会Python数据分析的基本操作了。
2. 描述性分析和统计基础
了解基本工具之后,还要拥有相关的知识才能正式开始数据分析。分析的基础是统计知识,相信大部分人都学过概率和统计相关的课程,自己基础是否够扎实,可以考一考自己:均值/标准差/相关性等指标,各种探索性分析场景用哪种可视化方法比较好,抽样分布/置信区间/假设检验,贝叶斯理论等。在这些相关内容没有彻底熟练之前,建议不要认为自己基础已经足够扎实了,这些内容都是值得反复学习的。另外,可以结合数据分析工具来学习,比如用R或Python进行双均值假设检验(当然这里是手写而不是调用函数),对理解编程和理解统计都有帮助。
这里推荐《深入浅出统计学》和《深入浅出数据分析》两本书,可以作为入门,也可以作为复习,当然如果统计背景比较深,没必要看了,太基础了。也推荐Coursera杜克大学的Statistics with R,前三门课质量都比较高,需要有R的基本知识,可以边学统计边练R。
描述性分析真的很重要,这里需要再强调一下。如果真的想做数据分析,尤其是业务导向的数据分析,建议一定要重视这部分。平时做项目也是一样的,拿到数据后先彻底的理解数据,不要急着往模型里放。
3. 机器学习
终于到了机器学习,我猜对于很多数据分析学习者,机器学习是本质目的。机器学习是有不同种学法的:对于业务数据分析者,了解各类模型的使用场景、优劣势,基本就足够了;对于偏数据科学和挖掘的人员来说,要深入理解每一种模型,至少得写出推导步骤;更深入的算法导向人员,还要有从头实现算法的能力。这篇文章的目标读者主要是第一类和第二类。
学习机器学习模型可以从理解模型和实现两个方向入手,目前主流的实现工具还是R和Python。Datacamp上有很多用R和Python进行机器学习的课程,看了之后基本可以了解机器学习模型在做什么,平时的应用场景大概怎样。流行的模型一定要理解,像逻辑回、支持向量机(核函数)、k邻近、朴素贝叶斯、集成学习模型(随机森林和各类boosting)都是很常用的模型;bias-variance tradeoff、标准化、正则化、交叉检验、重采样,这些概念也要了解。
如果想进一步深入的去理解模型细节,那么微积分和线性代数是必要的先修课,否则无法继续进行了。当然如果决定进一步学习细节,需要看更多的教材,上一些相关课程。
网上的相关课有很多,目前最火爆的肯定是Coursera Andrew Ng的机器学习。这门课也是我的入门课,确切的说我第一次学这门课的时候,甚至还不会调包,也不太会编程,就跟着一步一步做,很艰难的完成了作业。做到神经网络那部分,当时实在写不出来,去网上找答案看。到现在,这门课我应该看过有五遍了,基本上每隔几个月重新看一下都有新的收获。
Coursera还有另一系列的机器学习课来自华盛顿大学,质量也很高,课程用Python(缺陷是使用的库不是pandas和sklearn,而是授课者自己开发的库),很大一部分内容是手写模型,很有助于打好基础。此外,因为这是一系列课,所以覆盖范围要比Andrew Ng的课广一些,回归问题、分类问题、非监督问题,都单独成为一门课程。
很多机器学习的教材写的也不错,比如An Introduction to Statistical Learning(ISL)和Machine Learning with R,两者都是讲模型的数学推导,并用R语言实现。
机器学习确实是很深奥的东西,如果时间允许建议经典的课程和教材都看一看,有的课甚至可以多看几遍。
4. 更进一步
如果以上内容都比较扎实的完成,可以说能够进行大部分项目了,也对数据分析有着很成体系的理解。之后可以结合自己的需求,深入学习更多的内容,或者结合实际项目练习。尝试着找一些完整的项目去做,比如说kaggle就是很不错的平台,会提供数据集进行使用。kaggle的入门赛也做的很好,简单易懂,让新人不会太迷茫。
如果有额外兴趣的话,还是有很多更深奥的东西值得学习的,比如深度学习范围的内容或者大数据的相关技术等。
5. 结尾的话
很多人在入门数据分析时候都会问:我从零开始,多久能学会机器学习?其实取决于你怎么理解会,如果从头学python,到能使用sklearn调出机器学习模型,大概一个月就完成了。但深入的去理解以上内容,确实不是一年半载能完成的。
我见过很多人追求速成,也确实速成了。遇到项目基本就是把数据导进来,不做特征处理,然后调出各种模型(其中不乏像神经网络和boosting这种比较高级的模型),每个用默认参数试一次,看看效果。然而数据分析没那么简单,也没那么fancy。做一个项目,80%的时间都在准备,涉及到许多数据清理和操作,其中的一些东西是任何教材和课程都无法传授的。
还是更建议一步一个脚印的去学习,边学边做、边学边想,记好学习笔记,并定期总结学习心得。打好基础不可急于求成,才是学习的最好途径。
如果觉得这篇文章对你有帮助,请把文章推荐给你身边的朋友!我还是要推荐下我自己创建的大数据资料分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习大数据资料和入门教程。