数据挖掘 入门

以下是 郭鹏程在“小象学院微课”分享的“数据挖掘”初级内容,本人整理

如今数据行业正式火热的时候,不少公司纷纷设置数据岗位,也有很多创业公司从数据角度入手,同时,不少高校也成立了数据专业。
特别是大数据这个名词,已经被热炒了好几年
如果大家留意的话,会发现网上很多关于大数据的课题,往往是在研究大数据平台,比如Hadoop,spark

然而从时间角度来说,数据工作者有三个角度:
技术、统计、和业务

  • 这里技术主要指的就是IT技术,从简单的分析工具,如R、SPSS,数据库,到大数据平台,如storm,spark等等

  • 统计呢,是指建模、数学、概率统计,其中尤其以统计最为重要

  • 业务是指,数据工作者会始终以业务为导向。

从某个角度来说,数据应该是扮演辅助的角色。这个待会我们会重点讲
关于数据分析和数据挖掘,市面上有很多种教材,会讲各种各样的算法,比如回归,关联等等。。。然而如果真的深入到实际工作中时,会发现:教科书上的练习过于纸上谈兵,现实中很少有干干净净的数据摆在你面前让你用各种算法去做;实际上数据清洗会占到真正工作的60%以上(ETL http://www.cnblogs.com/elaron/archive/2012/04/09/2438372.html, Kettle 很常用)

这里顺带介绍一下我的经历,本科我修的是天文,但是主要的还是推导公式,跟现在我们很多大学里学的还是差不多(这点有些遗憾)
后来对学术现状表示很灰心,就决定去社会上实践一下,于是比价勉强的做了电子工程师;然而接着发现没有受过专门训练还是很难走远,就决定去深造
因为专业原因(为了好申请),我的博士方向选定了天文仪器
然后就是连续n年在实验室里做仪器,运到山上去观测,然后回来分析数据,期望能够发现点什么。。。。
结果数据质量很差,打个比方是什么呢?
我们期望在一张白纸上,会突然有个黑点,然后可以兴奋的指着说,我发现了一颗星
结果实际上呢,拿出纸来,发现一片雪花
就这样好多年,很难毕业。然后就换了个做理论的导师,导师的名言是:“we never use real data. real data sucks!”
我们只用模拟数据~
然后就毕业了。。。
做的事天文统计,用计算机模拟物理模型,然后反过来分析模拟的数据,做了一堆东西。。。
有了这些经历,我对数据的质量就特别敏感,总希望从一开始就把握好数据质量,不然我们浪费的不仅是金钱和时间,还有更重要的机会

《数据挖掘 入门》

我们现在说说第一个话题,拿数据做什么?
数据用来做什么?我大概总结了一下:记录、解释(理解)、预测、控制

  • 记录:一个是将我们感兴趣的活动记录下来,比如日志,交易记录等等

  • 解释:通过数据和数据之间发现的信息,帮助我们理解一些问题,比如,通过实验和分析数据,很多物理模型得以建立

  • 预测:通过分析和挖掘数据建立的模型,可以用来在已知情况下,去预测我们感兴趣的某些变量,帮助我们采取相应的措施

  • 控制:也是在模型的基础上,如果我们希望达到某种结果,改如何改变某些可以控制的变量。比如,我们通过调整利率可以达到管理经济的目的

数据分析和数据挖掘,就是用来从数据中获得信息、模型、知识的一系列方法
其中,根据我的理解,数据分析相对传统,一般是建立在假设检验的基础上,对已知的模型进行参数估计等
而数据挖掘,一般是指发现数据中隐含的模式,或者我们称之为知识、模型、都可以
常见的数据分析方法:如描述性统计、相关分析、回归分析等等;常见的数据挖掘方法:如分类、关联、聚类、回归等等
具体指代的是什么,有很多资料可以查,我在这里就不一一赘述了。
那么我们对这个话题总结一下的话,可以概括为
“数据-信息-知识-智慧”
这个是业内经常被拿来说的“数据金字塔”
1,3,8,15,20,25,26,30,31,20,8,4
比如这串数字,我们可以称之为数据
如果再加点内容,这个表示了某个地区一年12个月(不确定我是不是输错了)的气温,那么这个叫信息
当我们利用分析方法,发现平均气温的周期性,以及冬暖夏凉时,这个就称之为知识
至于如何应对这种周期性的气温变化,以及能对她做什么,那就是智慧了。
我个人认为,数据工作,也就到“知识”这个层面

《数据挖掘 入门》

继续下一个话题 : 2.数据建模
数据工作者就是能到达“知识”这个层面,尤其是现在,即使alpha狗这么厉害,它估计还是分不清善恶,也很难做出有创意的决策 
所以数据工作者要看清自己的位置,那就是辅助决策。
当然一边是数据工作者,一边又是CEO的人是另一回事,但是也要分不同的角色去扮演。。。
数据工作者实际工作中,是不会有人喂给你质量很好的数据的
书上那么多高大上的算法,在现实中也是难得一用的,一般是做了好几个月数据清洗,挖掘之后,啥模式也没有。。。。

那我们就要说,数据工作者最重要的一个任务,就是根据业务去进行数据建模
什么叫做数据建模?从我个人的理解,就是要把你所面对的业务转变成数学问题(或者说数据问题)
也可以用另一句话来代替:就是要定义变量
要做好变量定义,其实要涉及到好几个问题:1.对业务流程的理解 2. 对IT技术的理解 3. 对分析和挖掘方法的理解

  • 对业务流程的理解是指,如何定义变量,可以使得数据辅助主营业务增收或者降低成本,甚至有增值价值?

  • 对IT技术的理解是指,这些变量是否能够被有效的收集和存储?应该使用什么样的技术?

  • 数据积累下来了,可以用什么分析和挖掘的方法?(这个后面也会有讨论)

举一个例子:
之前我们为12301全媒体呼叫中心做数据分析,由于没有在一开始就介入到数据建模的工作,导致后面很多问题
12301是国家旅游局的客服中心,承担游客对涉旅企事业单位的投诉、咨询,协助国家旅游局对旅游秩序进行监管。大家可以想象,它的业务模式是什么?要考虑哪些方面的需求?
这里是强调,数据建模时,一定要以业务作为导向,才能定义到合适的变量
一个客服中心,考虑N方需求:用户,企业,客服人员,系统,监管单位
游客打电话进来,会投诉或者咨询,下一步这个中心就要把这个问题专项被投诉企业或监管部门,这是主营业务 , 然后还有对投诉工单进行追踪和反馈
同时,客服中心需要自我管理,也就是要提高工作效率,也就是希望能从数据里看到客服人员的接诉状况
再同时,由于客服中心经常会使用第三方的呼叫中心系统,往往这些系统价格不菲,所以还需要使用数据来评估系统的使用状况
数据工作者只有在了解了业务模式之后,占多多方的角度上考虑问题,从全局去找一个对所有方都优化的模型,那么工单系统中需要记载的变量就相对容易的浮出来了
所以,这里暂且不说什么复杂的模型,光是要把实际业务抽取为变量,就需要以业务导向。
当业务跑起来之后,数据以最好的姿势积累了下来之后,你的数据自然会变成价值连城的“大数据”
那么基本流程是这样的:定义变量–设计采集流程–参与系统开发–数据反馈–。。。
数据工作者先进行数据建模,然后设计和参与业务系统的开发,然后从数据角度对业务进行反馈。。。 这样迭代
这一步,我们可以用另外一句话来概括:“先业务数据化,后数据业务化”

《数据挖掘 入门》

前半句我们已经说了,后半句实际上就是将我们的数据进行分析和挖掘,体现其价值。
首先:变量的类型
先看看变量都有哪些类型

《数据挖掘 入门》

这个图不少人应该已经看过
变量大概分为两类:类别型,和数值型
这两类其中又会再各分为两类 见图片
为什么我们要说变量的类型,原因有两个,第一:变量类型会影响数据所携带的信息量;第二:变量类型会影响后续的分析方式
我再给大家找一个似曾相识的图

《数据挖掘 入门》

这幅图我不用多解释了,大家有问题可以后面再问
那么对于变量类型,我的原则是,能够用数值型的就用数值型
原因很简单,数值型的可以做离散化,转换成类别型;反之则不成
所以我倾向于用冗余的方式去做,能用数值型,就用数值型

第二条:变量的度量和粒度
举个栗子更容易说清楚,
比如描述地理位置的变量
按照粒度从大到小,可以是 洲-国家-省-市-县等等
但是如果有经纬度,那我一定要经纬度
这个粒度最细
后续数据清洗的时候,我可以轻易的把地理经纬度转换成为洲-国家-省-市-县,当然这步需要借助于一些数据辞典
这个原则呢,也就是要粒度最细,精度最高的方式来采集数据
定义变量
第三条,变量个数
这里我的原则是,取得的变量最好不相关,也就是都是独立测量的
比如说,如果有某类交易的总额和平均额,那么我取一个就好了
这点比较明显
但是有两个地方可能会有坑

  1. 举个例子

《数据挖掘 入门》
那天有工人来我家安马桶测量,需要确定污水口中心到墙面的距离
理论上 R+d=D
所以测量两个就够了
但是呢,由于污水口的中心点很难确定,通常他们都会把三个值都测量一下
如果发现等式不成立,他们会重新测量
这里就是因为有些变量的值的确定会有不确定因素,所以引入另一个相关的作为校准。
第二个坑:有时候会见到有些朋友会把一堆变量做很多计算后,衍生出很多新的变量,然后一起放到模型里去分析,这个就会出现变量之间的相关关系,也是我们希望避免的。

为什么要避免 变量之间的相关关系?
分析数据的时候,自变量太多的话,我们首先要做一下降维处理,不然分析的难度会很大,刚才的衍生变量,实际上认为的造成不必要人为的维度的增加。当然,有些衍生变量与原变量之间是相互独立的。

好,关于数据建模,大致讲这么多

《数据挖掘 入门》

假设数据已经到手,先要“清洗”,清洗主要是处理 缺失值,不一致的取值,以及明显错误的值,这点咱们也不说了。脏活累活。。。。
这是对不参与系统开发的数据者的报应。。
假设数据到手了。。
你有一堆变量,可能是来自数据库,也可能是文本文件,excel,。。。 这些也无所谓
我们能做什么分析
第一,数据分析的任务,就是想看一下这么多变量之间是否有关系?
如果你发现木有关系,。。。。那么好了,事情基本就结束了,所有的变量都是相互独立的。。。 不相关的。。。。
然而事情并不会这样子
一般都会有关系

通过相关分析,或者更多的,也是我更推荐的,是用可视化的探索性分析,你会发现很多有趣的关联性
可视化探索分析可以给数据分析人员很多指示性的方向,定性的。 这里也强力推荐,可视化
可视化不光是给领导看的,也不光是讲故事的,更多的是分析用的 当我们发现变量间存在相关性的时候,这时候回归基本上可以解决大部分问题
这里的回归,指的是广义的回归

《数据挖掘 入门》

见图,图来自《R语言实战》
跑完了回归分析,基本上解释、预测、控制,很多工作就可以做了
可以说,大部分情况下,回归都可以胜任了。
我把以回归为代表的模型,称作“统计模型”
很多时候,我们使用统计模型,注重关联性,但是不注重因果
然而统计模型对数据实际上有假设的
举个例子
异常值的判断: 通常一个方法,是用样本均值加减三倍的样本方差
在这之外的数据点,我们认为是异常值(<1%的概率会出现的值)
这里有个假设,那么就是你认为样本数据是正态分布的。
然而未必
另一个例子,比如说我们在做天文观测的时候,要计算落在CCD上的光子的个数
计数的变量,大多数情况下,并非正态分布,而是泊松分布,那么异常值就不可以用刚才说的方法来做
比如,网页的点击数,等等
当然,有泊松回归可以解决类似问题
在回归的过程中,会有对变量进行幂次变化的交互过程
最后会得到一个经验公式
比如 y=x^a
如果前辈有人已经产生了这样的模型,通常我们会拿来用,但是通过拟合的方式,来确定参数a
使用这种模型,我称之为“经验模型”
第三种模型,因为我是物理出身的,往往觉得会是究极一些,就是物理模型
虽然一般来说用不上吧
实际上在大数据行业的现阶段,重关联,不重因果,也就是往往会用统计模型去研究大数据中的价值
一方面是因为,统计模型够用了,还有很多价值没有被挖掘;
另一方面是,如此大量的数据,使用物理模型去研究,计算量过于昂贵
然后物理模型非常有用,可以帮我们来判断什么样的分析方式更合适
举个例子
价格
物价也好,股价也好,现在都有比较成熟的物理模型验证了,价格是对数正态分布;
比如人的满意度,也并非线性的,也是对数形式的
也就是说,你如果想让另一个人对你的满意度提高1倍,你对他的好大概要提高10倍,也就是一个量级。。。。
追妹子的同学注意了,物理模型教你控制成本。
当然了,实际上
物理模型在历史上的建立,也是从统计模型到经验模型,逐步建立的。。。
好,关于这个话题呢,我们总结一下,就是拿到数据之后分析和挖掘的方向

最主要的任务,就是要探究变量之间的关系
不管是数据分析也好,还是数据挖掘的各种算法也好

《数据挖掘 入门》

第5个话题 抽样和数据量
这点刚才有位同学提到过,如何检验数据质量
这里面就是抽样科学研究的问题
好的抽样,是指样本相对于总体,有代表性,样本足够大
有代表性,可以通过检查样本变量的分布,是否与总体分布一致来确认
样本是否够大,除了经验性的认为,“多一个变量,就多30条记录”以外,还有一个办法叫做功效分析
功效分析研究四个因素的关系,这是基于数据分析的思想(假设检验)
四个因素分别是:显著水平α,功效(1-第二类错误的概率),样本大小,和效应值
在抽样之前可以做一下这类分析,来确定这次分析是否值得。
具体内容呢,由于时间关系,大家可以参考有关资料

当然,现在大数据的一个思想,是说”我要全部“
所有的数据都因为采集成本低而都可以纳入囊中
那么就是另一个问题了,有了大数据平台的支持,与刚才我们说的小样本数据分析会有些不同。
但是数据工作者大多数时候,还是会遇到小样本问题

这些工作如何做,大家确实需要好好研读一下统计分析建模、概率论等书籍
综合起来呢,数据工作者如果想获得高质量的数据,数据建模是最重要的,而好的建模是建立在对业务的理解和抽象基础上的。

PS:大数据的挖掘分析,现在有比较成熟的变现方式吗?或者您看好哪些方向更容易出商业价值? 计算广告
用大数据去降低成本,也算是变现吧。。。

PS2:有没什么数理统计一块可以走的?理论上的数理统计你如何评判它的准确性?行为心理学里,我现在用现实调查的数据很难做出什么结果,有没有什么研究理论一块的路子可以介绍着走一走呢?
有本书,叫做 市场调查 基于R语言 周庭锐老师写的,调查问卷也是有很多坑的,如果是市场调查的话,好像不太适合用模拟仿真之类

    原文作者:aprildove
    原文地址: https://segmentfault.com/a/1190000004700204
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞