数据仓库之数据及预处理


在写这之前,让我们先了解一下数据仓库以及数据预处理的概念。

- 数据仓库的定义:

数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。**
数据仓库实际上就是一个数据集,这里很多人对于数据仓库有所疑问,数据仓库好像听起来和数据库有点相似,仓库听起来比库大一些。
有这个想法的同学们,我只能告诉你们,你们太机智了,数据仓库确实在数据量上和数据库简直就是如同大巫见小巫,当然这只是数据仓库与数据库的一个不同点,下面一个表格你将看到他们的不同。

区别表 数据库 数据仓库
目的不同 事务处理 决策分析
面向不同 面向事务 面向主题
存储特点不同 存储量小,存取简单,存取数据结构简单 存储量大,存取要先处理,存取结构较复杂

当然,有些人会觉得,你丫的是不是又从哪抄了个表格,我还是听不懂到底差别在哪,我用简单的场景来叙述一下吧。
比如,某国际连锁超市老板对经理说,分析一下最近客户的消费特征,我们修改一下营销策略,这时候,经理需要用到数据仓库,大量的抽取近几个月的客户消费特征,例如消费金额,每个人消费了那些产品,每个人每月购买次数等等,这些数据都是浩浩荡荡又繁杂的,数据仓库就是将这些数据结构化存储,然后从中分析出一些决策,比如一个老掉牙的例子:尿布和啤酒共同购买的情况超过百分之七十,这就是分析比对出来的,表面谁也看不出二者联系。数据仓库显然是对一个主题的,而且用来分析决策。
再举个例子,老板又对后台数据库管理人员说,把今年的出货进货表调给我,那么数据库管理员就简单的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高太多的,就离群了,他们就是噪声对吧?(我一点都不羡慕他们真的,只是随便举个例子而已,绝没有出于嫉妒的报复心理)。


数据集成

数据集成将多个数据源中的数据整合到一个一致的存储中。
数据集成过程中会涉及到的一般是两个问题:
1)实体识别
比如小祁在附近的多家商店购买了东西,当你在做一个地区的人均商店消费的情况时候,你从多家商店采集数据,那么,去沃尔玛买了旺仔牛奶的小祁,和去万达买了哇哈哈的小祁,就要集成在一起,他们是一个人。

2)冗余
冗余是指一个属性能被另一个属性推断出来,则这个属性是冗余的,回到我上面说到的小祁,小祁喜欢喝旺仔牛奶,一个月买了100罐,旺仔牛奶单价5块,总价500块,那我们在研究消费情况下,我们只需要知道小祁买旺仔牛奶花了500就好,100就是可以推知的,而且没有什么意义。
冗余还有种情况就是属性命名的不一致。比如这边超时对顾客名字标注为id,另一家标注为consumer,一样的意思,在集成时就要消除这种冗余。


数据变换

数据变换是指将数据统一转换成适合于挖掘的形式。
数据变换一般有以前策略:
1)平滑:即去噪声,上文有提到过。
2)属性构造:由给定的属性构造新的属性并添加到属性集当中去,以帮助数据挖掘过程,例如:保险公司要分析他们未来客户的保险投资意向,应该去看一看他们在保险消费上所占个人收入百分比多少,而不是单纯分析他们花多少钱在保险上。那么新的属性就可以加一个保险消费占比。
3)聚集:对数据进行聚集或者汇总。
4)规范化:规范化实际的意思就是选择正确的度量单位,尽量把数据控制在一个相对小的区间,你比如,这个用户消费0元,另一个消费10元,你非要把十元表示成1000分,这个区间是不是太大了,规范化就是干这个的。
规范化一般有下面几种:
1.最小-最大规范化

v′=v−minAmaxA−minA∗(new.maxA−new.minA)+new.minA

v'= \dfrac{v - min_A}{max_A-min_A}*(new.max_A-new.min_A)+new.min_A
这里面的minA和maxA分别为A属性的最小值和最大值,new.minA和new.maxA则为你要将他映射进的区间。
比如:price:10,20,30,40,50(单位:美元)
我现在给他的最小值为0最大值为10,要将他的区间变换到0-10
那么元数据经过上面的运算变成:
0,2.5,5,7.5,10 明白了不?

2.z-score规范化
这个规范化一般用在最大最小未知,或者离群点影响较大的时候适用。

v′=v−meanAstandard.devA

v'= \dfrac{v - mean_A}{standard.dev_A}
这个公式很简单,上面的meanA表示的是这个属性的平均值,下面表示这个属性的标准差,或者均值绝对偏差。

3.小数定标规范化
这个是最简单的了,通过移动属性值的小数点完成,比如985,970,小数点移动三位,规范为0.985,0.970,他们都不大于1,区间在0-1之间,非常小吧!


数据归约

数据归约得到数据集的压缩表示,它小得多,但可以得到相同或相近的结果。
数据规约的策略:
1)维规约:减少所考虑属性或特征的个数。
2)数量规约:用替代的,较小的数据表示形式替换原数据。
数量规约分为有参方法无参方法有参方法使用一个参数模型来估计数据,最后只要存储参数即可,不用存储数据(当然,离群点除外)之前上文中有提到的线性回归方程,其实也是有参方法的一种。无参方法不使用模型方法存储数据,它使用直方图,聚类,抽样等方式来进行数量规约。
3)数据压缩:使用变换,以便得到原数据的归约或者压缩表示。
实际上,维归约和数量规约可以视为某种形式的数据压缩。
数据压缩分为有损压缩无损压缩
像字符串的压缩,一般都是使用精妙的算法进行压缩,这样的亚索在解压前对字符串的操作十分有限。
而视频音频的压缩通常为有损压缩,压缩的精度可以递进选择,并且在不解压全部的情况下,重构某个片段。


数据离散化和概念分层

数据离散化和概念分层旨在简化原数据,使得挖掘更加有效,挖掘的结果一般更容易理解。
离散化:
如数值属性年龄,将原始值用区间来表示,0~10,10~20……
离散化可以在一个数值属性上递归进行,得到数值属性的概念分层,也就是一遍遍的划分区间,最后分层。
概念分层:*重点内容*
上面所提到的年龄,从原始值变成0-10,10-20….再进行递归划分,可以分层为,老年人(60-100)中年人(30-60)…..等等。
分层和离散化同样可以递归。

好了·····以上就是我对于数据预处理的愚见了,这也是我的第一篇博客···········如果有什么地方见解有失偏颇,欢迎各位大牛批评指正!

数据仓库之数据及预处理相关推荐

  1. 数据仓库、数据湖、流批一体,终于有大神讲清楚了!

    摘要 数据仓库,数据湖,包括Flink社区提的流批一体,它们到底能解决什么问题?今天将由阿里云研究员从解决业务问题出发,将问题抽丝剥茧,从技术维度娓娓道来:为什么你需要数据湖或者数据仓库解决方案?它的 ...

  2. 数据仓库、数据湖、流批一体

    作者: 蒋晓伟(量仔) 阿里云研究员 金晓军(仙隐) 阿里云高级技术专家 摘要:数据仓库,数据湖,包括Flink社区提的流批一体,它们到底能解决什么问题?今天将由阿里云研究员从解决业务问题出发,将问题 ...

  3. 数据仓库建设---数据建模

    首先我们先查看三个问题:①什么是数据模型:②为什么需要数据模型:③如何创建数据模型: 一.什么是数据模型 数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世 ...

  4. 浅谈数据库,数据仓库,数据中台

    数据库,数据仓库,数据中台这些关于数据的概念性的东西,对于初学者来讲,非常容易混淆. 在使用计算机的过程中,我们经常会遇见需要进行数据存储的场景,比如,通讯录数据,进销存数据.在数据量不是特别大的时候 ...

  5. 政府信息化与电子政务、企业信息化与电子商务、数据库和数据仓库的区别、商业智能系统处理过程、数据仓库结构图、数据挖掘、数据仓库和数据湖的对比

    政府信息化与电子政务.企业信息化与电子商务.数据库和数据仓库的区别.商业智能系统处理过程.数据仓库结构图.数据挖掘.数据仓库和数据湖的对比 政府信息化与电子政务 企业信息化与电子商务 1.企业资源计划 ...

  6. 数据仓库amp;数据指标amp;数据治理体系搭建方法论

    数据仓库的基本概念 数据仓库概念 英文名称为Data Warehouse,可简写为DW或DWH.数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support).它 ...

  7. 时间序列数据的预处理

    来源:Deephub Imba 本文约2600字,建议阅读5分钟 在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题. 时间序列数据随处可见,要 ...

  8. 【DBMS 数据库管理系统】数据仓库中 数据追加 ( 时标方法 | DELTA 文件法 | 前后映像文件法 | 日志文件法 )

    文章目录 一.数据追加 概念 和 方法 二.时标方法 三.DELTA 文件法 四.前后映像文件法 五.日志文件法 一.数据追加 概念 和 方法 数据仓库 数据追加 : "数据追加" ...

  9. [转]对数据仓库进行数据建模

    OLTP 与数据仓库--有何差异? 在日常生活中,我们要使用大量的应用程序来生成新的数据.变更数据.删除数据,当然在大多数的情况下我们还要查阅和分析数据.就来想象一个 收发 email 的简单应用程序 ...

最新文章

  1. OC指示符assign、atomic、nonatomic、copy、retain、strong、week的解释
  2. 关于学习Python的一点学习总结(18->序列解包)
  3. TensorFlowSharp入门使用C#编写TensorFlow人工智能应用
  4. MapString, Object map 集合转 json数组, json数组转list ,按条输出到es
  5. zookeeper3.4.5自动清理日志
  6. toncat 如何部署 java_tomcat中部署java项目
  7. 使用MyBatis Generator自动生成实体、mapper和dao层
  8. Ubuntu 屏幕亮度调整
  9. php csv转excel 双引号,PHP高效导出Excel(CSV)
  10. Linux tee的花式用法和pee
  11. Mysql命令行下实现数据的导入
  12. opensource项目_Opensource.com生日快乐:开源7年
  13. UVALive - 6442
  14. bzoj 3519: [Zjoi2014] 消棋子 题解
  15. 在 Mac 上修复 Touch ID 问题的 6 种方法
  16. 每天一道机器学习算法面试题目
  17. mathematica 如何在数组中等间隔插入元素
  18. AutoCAD 2019 for Mac 汉化安装手册
  19. win10 x64+VS2017社区版+OpenCV3.2.0安装
  20. 电池SOC仿真系列-基于Simscape搭建的锂电池模型

热门文章

  1. RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6 (IPv6)
  2. 德语语法笔记——动词的变位
  3. 决策树算法的总结归纳
  4. matlab如何进行批量计算,什么是matlab中逐列相关的快速计算方法
  5. macos U盘引导安装
  6. 【MATLAB教程案例47】基于双目相机拍摄图像的三维重建matlab仿真
  7. 手把手教你实现一个抽奖系统(Java版)
  8. ubuntu安装chrome浏览器64位
  9. 数据分析——DAU下降问题(转)
  10. mongo update批量更新