不管是数据分析师还是数据挖掘工程师,我们的目标都是认识数据,从数据中发现需要的信息。
数据挖掘的技术过程:
数据清理(消除噪音或不一致数据)
数据集成(多种数据源可以组合在一起)
数据选择(从数据库中提取与分析任务相关的数据)
数据变换(数据变换或统一成适合挖掘的形式;如,通过汇总或聚集操作)
数据挖掘(基本步骤,使用智能方法提取数据模式)
模式评估(根据某种兴趣度度量,识别提供知识的真正有趣的模式)
知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)
所需要的技能
对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解
想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家
并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。
做数据分析,统计的知识肯定是需要的,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,等两三年之后相关的工具技术你都会了,这个时候你跟其他同事的区别就在于业务能力。
很多做技术的一开始会觉得技术就是特别牛特别厉害,但是光有技术并不能让你成为公司的核心成员,必须要提高自己的业务能力。如果你做的技术出的结果跟业务不相关,对公司无法产生效益,领导是不会要这个结果的,除非你是研究人员。
但无论是机器学习,还是数据挖掘,你一定听说过很多很多,名字叼炸天的传说中的,“算法”,比如:SVM,神经网络,Logistic回归,决策树、EM、HMM、贝叶斯网络、随机森林、LDA... ....其实还是很多很多!无论你排十大算法还是二十大算法,总感觉只触及到了冰山一角!真是学海无涯啊- -!!
当然,学习机器学习看书是必备的,总不能靠冥想吧。。。
学习书籍推荐
有的书介绍机器学习,会是这样一种思路:就是单独的一个一个的算法介绍,介绍个十几个,一本书的篇幅差不多也就完了。
李航博士的那本《统计学习方法》基本属于这种套路。当然,该书在国内是备受推崇的一本。客观上讲,国人写这方面的书很少,而李博士的著作也不像其他那种大学教材一样东拼西凑,可谓良心之作。但就本书的思路来说,我认为:如果读者就单独的某一个算法想有所了解,参考该书应该会有收获。但系统化上还是优化空间的,比如从一个算法到另外一个算法,之间的联系是什么,推动算法更新和升级的需求又在哪里?
另外一种该类型的书,会把算法按照它们的实现的功能和目的,分成比如 Regression、Classification、Clustering等等等等的几类,然后各种讲可以实现聚类的算法有A、B、C,可以实现回归的有D、E、F。。。而且我们也知道,机器学习又可分为有监督、无监督以及半监督的,或者又可分为贝叶斯派和概率派两大阵营,所以按类别来介绍其中的算法也是一种很常见的思路。
这样的书代表作是Pang-Ning Tan, Michael Steinbach 和Vipin Kumar的那本《数据挖掘导论》,这样的书基本上对于构建一个大概的机器学习体系还是有裨益的。但是就初学者而言,其实这个体系还可以再优化。这也是我根据个人的一些经验想向各位介绍的一个基本的学习路线图,在我看来知识应该是有联系的,而不是孤立的, 找到这种内部隐藏的线索就如同获得了阿里巴巴的口诀,才能开启更大的宝藏。
当然,正式学习之前,你所需要的预备知识(主要是数学)应该包括:微积分(偏导数、梯度等等)、概率论与数理统计(例如极大似然估计、中央极限定理、大数法则等等)、最优化方法(比如梯度下降、牛顿-拉普什方法、变分法(欧拉-拉格朗日方程)、凸优化等等)——如果你对其中的某些名词感到陌生,那么就说明你尚不具备深入开展数据挖掘算法学习的能力。你会发现到处都是门槛,很难继续进行下去。
学习路径
第一条线路:
(基于普通最小二乘法的)简单线性回归 -> 线性回归中的新进展(岭回归和LASSO回归)->(此处可以插入Bagging和AdaBoost的内容)-> Logistic回归 ->支持向量机(SVM)->感知机学习 -> 神经网络(初学者可先主要关注BP算法)-> 深度学习
之所以把它们归为一条线路,因为所有这些算法都是围绕着 y = Σxiβi,这样一条简单的公式展开的,如果你抓住这条线索,不断探索下去,就算是抓住它们之间的绳索了。其中蓝色部分主要是回归,绿色部分主要是有监督的分类学习法。
基于普通最小二乘的线性回归是统计中一种有着非常悠久历史的方法,它的使用甚至可以追溯到高斯的时代。但是它对数据有诸多要求,例如特征之间不能有多重共线性,而且岭回归和LASSO就是对这些问题的修正。
当沿着第一条路线学完的时候,其实你已经攻克机器学习的半壁江山了!当然,在这个过程中,你一定时刻问问自己后一个算法与前一个的联系在哪里?最初,人们从哪里出发,才会如此设计出它们的。
第二条路线:
K-means -> EM -> 朴素贝叶斯 -> 贝叶斯网络 -> 隐马尔科夫模型(基本模型,前向算法,维特比算法,前向-后向算法) (->卡尔曼滤波)
这条线路所涉及的基本都是那些各种画来画去的图模型,一个学术名词是 PGM 。这条线的思路和第一条是截然不同的!贝叶斯网络、HMM(隐马尔科夫模型),也就是绿色字体的部分是这个线路中的核心内容。而蓝色部分是为绿色内容做准备的部分。K-means 和 EM 具有与生俱来的联系,认识到这一点才能说明你真正读懂了它们。而EM算法要在HMM的模型训练中用到,所以你要先学EM才能深入学习HMM。所以尽管在EM中看不到那种画来画去的图模型,但我还把它放在了这条线路中,这也就是原因所在。朴素贝叶斯里面的很多内容在,贝叶斯网络和HMM里都会用到,类似贝叶斯定理,先验和后验概率,边缘分布等等(主要是概念性的)。最后,卡尔曼滤波可以作为HMM的一直深入或者后续扩展。尽管很多machine learning的书里没把它看做是一种机器学习算法(或许那些作者认为它应该是信号处理中的内容),但是它也确实可以被看成是一种机器学习技术。而且参考文献[4]中,作者也深刻地揭示了它与HMM之间的紧密联系,所以红色的部分可以作为HMM的后续扩展延伸内容。
几个小tips
学历重要吗?
校招渠道比较看重学历,但是随着工作经验的增加,你的技术达到了一定的水平,你是二本三本实际上和985毕业的人并没有太大区别。当然,对于应届毕业生来说,学历高学校好更有优势,这是大厂的敲门砖。
也有人会问需不需要考研。考研要跟你以后的工作道路结合起来,如果想做数据挖掘,就可以选择考数学类专业的研究生,可以提高自己的竞争力。
以我的经历来说,我本科是在湖北一个很普通的学校,研究生报考武汉大学的计算数学专业。但因为两分之差,调剂到了基础数学。当时家人劝我服从调剂,好歹研究生是武大出来的。不过我的兴趣不在基础数学,这个专业也并不能给我想要从事的数据挖掘加分,还不如先在工作中积累一些实践经验,所以就放弃了读研。如果我工作几年之后需要提升能力,可以再去考个研究生,不一定非要现在就考。
转行可不可以学?
现在这个行业越来越火,很多人想要转行做数据分析。转行学数据分析师是可以的,但最好先去看一下招聘单位的工作内容,如果招聘要求懂PPT、Excel之类的就可以不要考虑了,因为这种通常招的是统计员,不是分析师,对你的职业道路不会有太大的帮助。如果要求会Python、R或者建模,你可以去尝试一下。可能别人不一定会要你,但如果你表现出足够的诚意和自学能力的话,依然有被录用的机会。
我大学读数学专业时只学了MATLAB,学了不到一年,当时在学校参加MATLAB建模比赛得了一等奖,觉得自己挺牛。但是在找工作时发现很多公司不用MATLAB或者SAS,因为比较贵,很多都会用开源的R。面试的时候,我说我不知道R是什么,领导说,给你两个星期,学。后来在工作里一点点看书,也就入门了。
跳到第四个问题,选数据分析还是数据挖掘?
很多人觉得数据挖掘很厉害,但是一转行就跳到数据挖掘是不太可能的。数据挖掘要求比较深的代码功底。
一开始我也不会写代码,毕业之后我去了一家公司,Title是中级数据分析师,但干的是数据挖掘的事儿。刚入职的一个月内,老板让我用Python出结果。之前没学过Python,我边学边做,这样把Python也学会了。后来在这家公司做过一个垃圾文本分类的项目,这个方面以前也没有接触过,就一边查资料一边自己做。一开始用公式套,但是准确率只有80%左右,我就开始看公式的推导,看懂公式原理之后就知道某些地方是可以挑优的,自己可以对算法做一些改进。不要只套公式,也要弄明白其中的公式推导,搞懂源代码,慢慢提高自己的代码能力。
怎么选公司
大公司当然是最好的。大公司一般走校招,如果你通过校招进了大公司,但是非核心的岗位,比如百度搜索方面的挖掘,当然是最好的,如果进入不了这样的岗位,不如去一些新发展起来的公司,比如美团、滴滴,这样的公司有一定的数据量,也会有一些比较强的人。
第三类公司是创业公司。如果是刚毕业最好不要选创业公司,风险比较大。你比较难以从表面上判断这家公司能不能存活下来,有没有牛人值得跟。而一些二线公司的业务骨干大多是从BAT过来的,具有比较丰富经验,跟着他们学习能让自己快速成长。
怎么面试
一定要诚实。不要造假工作经验和年限,没有必要,对自己也没有好处。毕业生求职时可以表现得真诚一点,不能说一上手就能做很多工作,但是可以展示自己的学习能力。
我也不是一开始就做数据挖掘,也是在工作中慢慢转。如果你真的想做这一行,就要有决心,不能着急。
附数据挖掘脑图
对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解
想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家
并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。