数据仓库之数据及预处理
在写这之前,让我们先了解一下数据仓库以及数据预处理的概念。
- 数据仓库的定义:
数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。**
数据仓库实际上就是一个数据集,这里很多人对于数据仓库有所疑问,数据仓库好像听起来和数据库有点相似,仓库听起来比库大一些。
有这个想法的同学们,我只能告诉你们,你们太机智了,数据仓库确实在数据量上和数据库简直就是如同大巫见小巫,当然这只是数据仓库与数据库的一个不同点,下面一个表格你将看到他们的不同。
区别表 | 数据库 | 数据仓库 |
---|---|---|
目的不同 | 事务处理 | 决策分析 |
面向不同 | 面向事务 | 面向主题 |
存储特点不同 | 存储量小,存取简单,存取数据结构简单 | 存储量大,存取要先处理,存取结构较复杂 |
当然,有些人会觉得,你丫的是不是又从哪抄了个表格,我还是听不懂到底差别在哪,我用简单的场景来叙述一下吧。
比如,某国际连锁超市老板对经理说,分析一下最近客户的消费特征,我们修改一下营销策略,这时候,经理需要用到数据仓库,大量的抽取近几个月的客户消费特征,例如消费金额,每个人消费了那些产品,每个人每月购买次数等等,这些数据都是浩浩荡荡又繁杂的,数据仓库就是将这些数据结构化存储,然后从中分析出一些决策,比如一个老掉牙的例子:尿布和啤酒共同购买的情况超过百分之七十,这就是分析比对出来的,表面谁也看不出二者联系。数据仓库显然是对一个主题的,而且用来分析决策。
再举个例子,老板又对后台数据库管理人员说,把今年的出货进货表调给我,那么数据库管理员就简单的select一下就好了,他只需对数据进行简单的查询操作,所以数据库是面向事务的,只是对数据操作,你面对一个数据库,很难看出他们之间的关联。
- 数据预处理的概念
数据预处理就是数据预先的。。。。处理?
好吧,我也说不出什么正儿八经的定义···总之,数据在进行存储前或者数据挖掘前,往往杂乱无章,数据预处理的两个目的就是:
1.消除数据噪声,不完整和不一致的情况。
2.为数据挖掘提供更好的条件。
数据预处理方式一般有:数据清理,数据集成,数据变换,数据归约,数据离散化和概念分层。接下来我将逐一介绍他们。
数据清理
包含填写空缺的值;平滑噪声数据,识别删除孤立点;纠正不一致性;解决数据集成造成的冗余。
1. 空缺值
由于设备的异常等各种原因,在数据库表中,很多条记录的对应字段没有相应值,这时候我们应该如何处理呢?
1)首先可以忽略元组,比如一百万个人的成绩有一个没有录入,那么他真的能影响我们的分析决策么?显然不会,我们就当没这个人好了,继续分析决策,当类标号少的时候我们可以这么做,但是如果每个属性缺少值的百分比很大时,就不能这么干了,十个人,统计分数,你还能这么干么,就不能了。
2}我们可以人工填写空缺(恕我直言,面对庞大的数据量时,这个方法就是瞎扯淡)
3)使用一个全局变量填充:例如用unknow等替换空缺。
4)使用属性的中心度量(如平均数或中位数)、给定元组属同一类所有样本的属性均值或者用一些判断方法来找出最可能的值来填充空缺值。比如小明的分数不见了,全班同学的分数中位数为60,平均分为70,小明一般成绩稳定90,这三个数字就是我上面所说的三钟填充方法,从这样看起来似乎第三种更为靠谱,其实在大数据中,相差情况真的不好说,前两种实现简单,第三种往往通过bayesian公式或判定树来实现。
2.噪声
噪声我们可以形象的理解,平常宁静的公园里的突然传来锯树的噪音,那么素来以宁静著称的公园,就会因为这偶尔的噪音影响它在人们心中的形象么,不能,对吧?
噪声就是被测量变量的随机错误或偏差,就像我在采集公园声音时,恰巧就听见了锯树的声音,那么和平常的测量偏差是十分大的,这个数据就会没有意义。
那么我们该如何处理噪声呢?
1)分箱首先排序数据,并将它们分到等深的箱中,然后可以按箱子的平均值平滑,按箱中值平滑,按箱的边界平滑等。举个例子:
price的排序后数据(单位:美元)
4,8,15,21,22,24,25,28,34我们可以分成三个箱子
箱子1:4,8,15
箱子2:21,22,24
箱子3:25,28,34用平均值平滑
箱子1:9,9,9
箱子2:22,22,22(这里举例数没选好,除不尽···只能取个近似了)
箱子3:29,29,29- 用箱边界值平滑
箱子1:4,4,15
箱子2:21,21,24
箱子3:25,25,34
2)回归
通过构造函数来符合数据变化的趋势,这样可以用一个变量来预测另一个变量。
其实就是回归函数,把周围的点,拟合成一个函数,这样你就通过x求y了啊,这不是我们高中天天学的么?比如吧人口增长拟合成y=1000000x+1000000,x表示年份,y表示人口数,(纯粹瞎扯淡的举例·····意思明白就好),那么对于2020年的人口,我们只要带进去算就能大概预测了。
回归方程拟合过程中,偏离太多的点都被舍弃了,所以是去除噪声不错的方法。
3)聚类
将类似的值聚成簇,那么落在集合外的值就被视为离群点,比如:身高160-170的站成一团,170-175的粘成一团,175-180的站成一团,那么,比180高太多的,就离群了,他们就是噪声对吧?(我一点都不羡慕他们真的,只是随便举个例子而已,绝没有出于嫉妒的报复心理)。