不管是数据分析师还是数据挖掘工程师,我们的目标都是认识数据,从数据中发现需要的信息。
所需要的技能
做数据分析,统计的知识肯定是需要的,Excel、SPSS、R等是需要掌握的基本技能。
我是做数据挖掘的,所以重点讲一下数据挖掘方面的技能。我本身是学数学专业的,接触数学比较多。数据挖掘要从海量数据中发现规律,这就需要一定的数学知识,最基本的比如线性代数、高等代数、凸优化、概率论等。
举个栗子,比如朴素贝叶斯算法需要概率方面的知识,SKM算法需要高等代数或者区间论方面的知识。当然,你可以直接套模型,R、Python这些工具有现成的算法包,可以直接套用。但如果你想深入学习这些算法,最好去学习一些数学知识,也会让你以后的路走得更顺畅。
我们经常会用到的语言包括Python、Java、C或者C++,我自己用Python或者Java比较多。有时用MapReduce写程序,再用Hadoop或者Hyp来处理数据,如果用Python的话会和Spark相结合。
工作内容
数据分析更偏向统计分析,出图,作报告比较多,做一些展示。知乎上有一个叫团支书的答主,他就比较偏向于数据分析。
数据挖掘更偏向于建模型。比如,我们做一个百货的数据分析。万达电商的数据非常大,具体要做什么需要项目组自己来定。百货数据能给我们的业务什么样的推进,我们从这一点入手去思考。我们从中挑出一部分进行用户分群。
消费者在商场购物消费会有一个刷卡的数据记录,万达会员卡的卡号信息以及购物记录也会在数据中呈现,数据体量是很大的。我们用这些数据做一个聚类,分成几个用户群,比如偏向亲子的、时尚女装和奢侈品的、汽车配饰的,分群之后再去给他们做推荐就相对更加容易。
我们做用户分群会用到一些聚类模型,比如K-means、K-means++等,处理数据的维度特别大,是300w*142维,如果全部拿来聚类,效果不太好,因为有一些是没有含义的,所以我们会进行降维。
降维一般会用到主成分分析,我们用的是深度学习的一个算法——Auto Encoder。它有一个输入层,一个隐含层,一个输出层,数据从输入层进去时会进行编码,从输出层出来时解码,比如我们把142维数据灌进去,在隐含层降成50维数据,输出还是142维数据。也就是说把一开始的142维数据投射到50维数据之后,再还原成142维,这142维与之前的142维数据之间的映射关系是一样的,那么我们就可以用中间50维的数据做聚类分析。
最后我们得到了一个评价指标,你可以理解为这个指标数值越小越好,越小代表各个值离中心越近。如果不用深度学习算法,得出的评价指标是20万左右,而降维之后得出的指标是600多,效果是很显著的。
我讲这个例子也是想告诉大家,如果你不具备数学知识,只是去套模型也可以做,但永远只是停留在入门阶段。大家如果想做数据挖掘工程师的话,我建议编程语言至少要会一门,数学方面至少需要线性代数、概率论和凸优化的知识,了解一些机器学习算法的推导,以及深度学习的算法。这个学习起来并不是特别难,我从毕业到现在有一年的时间,一些基本的算法已经了解的差不多了。
发展的建议
每个人都有自己的偏好。有的人会说,数学太难了,我不想做挖掘,就想做一些数据分析,做一些酷炫的分析图,这个当然可以。如果想要自己的职业生涯有长足发展的话,不要贪多贪杂,在某一个领域深入进去。你可以结合自己的兴趣,在那一个领域成为专家。
提高自己的技术和业务能力。技术能力相对来说是比较好提高的,学R或者Python这类简单的语言是很快的,Java或者C++会比较慢。当技术能力提高到一定程度的时候,就很难跟别人有技术上的差别了。可能工作一年的时候你只会R,等两三年之后相关的工具技术你都会了,这个时候你跟其他同事的区别就在于业务能力。
很多做技术的一开始会觉得技术就是特别牛特别厉害,但是光有技术并不能让你成为公司的核心成员,必须要提高自己的业务能力。如果你做的技术出的结果跟业务不相关,对公司无法产生效益,领导是不会要这个结果的,除非你是研究人员。
几个小tips
◎学历重要吗?
校招渠道比较看重学历,但是随着工作经验的增加,你的技术达到了一定的水平,你是二本三本实际上和985毕业的人并没有太大区别。当然,对于应届毕业生来说,学历高学校好更有优势,这是大厂的敲门砖。
也有人会问需不需要考研。考研要跟你以后的工作道路结合起来,如果想做数据挖掘,就可以选择考数学类专业的研究生,可以提高自己的竞争力。
以我的经历来说,我本科是在湖北一个很普通的学校,研究生报考武汉大学的计算数学专业。但因为两分之差,调剂到了基础数学。当时家人劝我服从调剂,好歹研究生是武大出来的。不过我的兴趣不在基础数学,这个专业也并不能给我想要从事的数据挖掘加分,还不如先在工作中积累一些实践经验,所以就放弃了读研。如果我工作几年之后需要提升能力,可以再去考个研究生,不一定非要现在就考。
◎转行可不可以学?
现在这个行业越来越火,很多人想要转行做数据分析。转行学数据分析师是可以的,但最好先去看一下招聘单位的工作内容,如果招聘要求懂PPT、Excel之类的就可以不要考虑了,因为这种通常招的是统计员,不是分析师,对你的职业道路不会有太大的帮助。如果要求会Python、R或者建模,你可以去尝试一下。可能别人不一定会要你,但如果你表现出足够的诚意和自学能力的话,依然有被录用的机会。
我大学读数学专业时只学了MATLAB,学了不到一年,当时在学校参加MATLAB建模比赛得了一等奖,觉得自己挺牛。但是在找工作时发现很多公司不用MATLAB或者SAS,因为比较贵,很多都会用开源的R。面试的时候,我说我不知道R是什么,领导说,给你两个星期,学。后来在工作里一点点看书,也就入门了。
◎跳到第四个问题,选数据分析还是数据挖掘?
很多人觉得数据挖掘很厉害,但是一转行就跳到数据挖掘是不太可能的。数据挖掘要求比较深的代码功底。
一开始我也不会写代码,毕业之后我去了一家公司,Title是中级数据分析师,但干的是数据挖掘的事儿。刚入职的一个月内,老板让我用Python出结果。之前没学过Python,我边学边做,这样把Python也学会了。后来在这家公司做过一个垃圾文本分类的项目,这个方面以前也没有接触过,就一边查资料一边自己做。一开始用公式套,但是准确率只有80%左右,我就开始看公式的推导,看懂公式原理之后就知道某些地方是可以挑优的,自己可以对算法做一些改进。不要只套公式,也要弄明白其中的公式推导,搞懂源代码,慢慢提高自己的代码能力。
◎怎么选公司
大公司当然是最好的。大公司一般走校招,如果你通过校招进了大公司,但是非核心的岗位,比如百度搜索方面的挖掘,当然是最好的,如果进入不了这样的岗位,不如去一些新发展起来的公司,比如美团、滴滴,这样的公司有一定的数据量,也会有一些比较强的人。
第三类公司是创业公司。如果是刚毕业最好不要选创业公司,风险比较大。你比较难以从表面上判断这家公司能不能存活下来,有没有牛人值得跟。而一些二线公司的业务骨干大多是从BAT过来的,具有比较丰富经验,跟着他们学习能让自己快速成长。
◎怎么面试
一定要诚实。不要造假工作经验和年限,没有必要,对自己也没有好处。毕业生求职时可以表现得真诚一点,不能说一上手就能做很多工作,但是可以展示自己的学习能力。
我也不是一开始就做数据挖掘,也是在工作中慢慢转。如果你真的想做这一行,就要有决心,不能着急。
讲个小故事,当时想转数据挖掘的时候,我不知道是选择Java还是C++。当时我投了很多数据挖掘岗位,我知道面试通过的可能性不大,但我就跟面试官聊天,请教经验。我说自己是数学专业毕业的,想要转做数据挖掘工程师,需要掌握哪些能力。面试官就画了一个图说,一个圆代表数学,一个圆代表计算机,我们需要的就是两个圆交叉的部分,如果编程语言求快的话可以先学Java;我接着问他需要看哪些资料等等,我们聊了差不多一个小时。其实很多老人带新人是很乐于分享的,多看前人的经验,帮助自己成长,一定会在这个行业有所收获。