数据科学课程笔记4 --- 数据工程与技术

来源:互联网 发布:mac连不上校园网 编辑:程序博客网 时间:2024/05/01 03:54

---------------------------------------------------------------

从数据池塘到数据海洋,看似简单的技术演进,却产成了颠覆性的技术革命

从规模上来讲:数据池塘规模很小,DataBase的数据量为MB级;而数据海洋规模很大,BigData数据量达到TB甚至PB

从数据类型上来讲:数据池塘里面的“鱼”种类很少,DataBase主要以结构化为主;而数据海洋里面的“鱼”有上千种,BigData有结构化的、也有非结构化的

从模式上来讲:数据池塘属于“先挖池塘,后养鱼”,DataBase先定义好模式,然后再存储数据;而数据海洋里“鱼”的种类不断变化,因此BigData先有数据,再有模式

从处理对象上来讲:数据池塘里的“鱼”作为捕捞的对象,即DataBase的数据作为处理对象;而数据海洋里的“鱼”除了可捕捞之外,还可以用来判断其他“鱼”的存在,BigData的数据可以作为资源,用来解决其他领域的问题


从处理工具上来讲:“池塘捕鱼”使用的是“小船+渔网”,即RDBMS,关系数据库管理系统(Relational Database Management System);而“海洋捕鱼”则要使用“渔船+捕鱼机械”,即专门针对大数据的处理工具


(RDBMS,将数据组织为相关的行和列的系统,如Oracle、SQL Sever等。而DBMS,数据库管理系统,概念会更大一些。关系数据库强调relationship between tables,即表与表之间要有关系,而DBMS则可以不存在这一关系,也可以接受没有任何关系的数据,更加适用于小型的商业应用)


------------------------------------------------------------------------------------------

数据仓库

· 提出原因:1.异构数据源产生的问题;2.接口不同;3.数据表示不同;4.数据重复和数据不一致



数据仓库(Data Warehouse),定义很多,但是却很难有一种严格的定义。它是一个提供决策支持功能的数据库,与公司的操作数据库分开维护。它为统一的历史数据分析提供坚实的平台,对信息处理提供支持。是一个面向主题的、集成的、随时间而变化的、不易丢失的数据集合,支持管理部门的决策过程。

1. 面向主题:是数据仓库显著区别于关系数据库系统的一个特征。

· 围绕一些主题,如顾客、供应商、产品等。

· 关注决策者的数据建模与分析,而不是集中于组织结构的日常操作和事务处理。

· 排除对于决策无用的数据,提供特定主题的简明视图。

2.数据集成:一个数据仓库是通过集成多个异种数据源来构造的(而对于关系数据库和一般文件,数据源都是联机事务处理记录)。数据仓库使用数据清理和数据集成技术来确保命名约定、编码结构、属性度量等的一致性。当数据被移到数据仓库时,需要经过一系列转化。

3.随时间而变化:数据仓库是从历史的角度来提供信息的。

· 数据仓库的时间范围比操作数据库系统要长的多(操作数据库系统主要保存当前信息,而数据仓库则从历史的角度来提供信息,比如过去5-10年)

· 数据仓库的每一个关键结构都隐式或者显式的包含时间元素,而操作数据库中的关键结构可能就不包括时间元素。

4.数据不易丢失:尽管数据仓库中的数据来自于操作数据库,但他们却是在物理上分离保存的。

· 操纵数据库的更新操作不会出现在数据仓库环境下

· 不需要事务处理、恢复以及并发控制等机制

· 只需要两种数据访问:数据的初始转载和数据访问(读操作)


数据仓库的主要任务是联机分析处理OLAP(数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要)



---------------------------------------------------------------------------------------------------------------------

数据仓库中的数据模式




1. 星型模式:一个中心表、一组维表、每维一个表、每个表包含一组属性。

星型模式的每个维度都对应一个唯一的维表,维的层次关系全部通过维表中的字段实现,所有与某个事物有关的维,都通过该维度对应的维表直接与事实表关联,所有维表的关键字组合起来作为事实表的主键字。

星型模式的维表只与事实表发生关联,维表与维表之间没有任何关联



2. 雪花型模式:雪花型模式对维表规范化,使用多个事实表描述层次复杂的维,用不同维表之间的关联实现维的层次。



总结:星型模式结构简单,查询效率高,可是维表之间的数据共用性差,限制了事实表中关联维表的数量。雪花型模式通过维表的规范化,增加了维表的共用性,但是查询效率低。二者各有优缺点,却可以在一定程度上互补。


-----------------------------------------------------------------------------------------

数据预处理技术

1. “脏数据”: 存在缺失值、重复值、不一致、过期数据、异常数据

2. 为什么要预处理数据?

随着数据量的增大,会出现各种各样的问题;没有高质量的数据,就没有高质量的挖掘结果。

· 高质量的决策必须依赖高质量的数据

· 数据仓库需要对高质量的数据进行一致的集成


3. 数据质量的多维度量:精确度、完整度、一致性、合乎时机、可信度、附加价值、可访问性


4. 数据预处理的主要任务: 1. 数据清理;2. 数据集成;3. 数据变换;4. 数据规约;5. 数据离散化

· 数据清理:填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性

· 数据集成:集成多个数据库、数据立方体或文件

· 数据变换:规范化和聚集

· 数据规约:得到数据集的压缩表示,它小得多,但可以得到相同或者相近的结果

· 数据离散化:数据规约的一部分,通过概念分层和数据的离散化来规约数据,对数字型数据特别重要


1. 数据处理----如何处理空缺值

· 忽略元组:当类标号缺少时通常这么做(假设挖掘任务涉及分类或者描述),当每个属性缺少值的百分比变化很大时,这样做的效果非常差

· 人工填写空缺值:工作量大,可行性低

· 使用一个全局变量填充空缺值:如使用Unknown或者-∞

· 使用属性的平均值填充空缺值

· 使用与给定元组属于同一类的所有样本的平均值

· 使用最可能的值填充空缺值:使用像Bayesian公式或者判定树这样的基于推断的方法


数据处理----如何处理噪声数据

1.  分箱(binning):首先排序数据,并将他们分到等深的箱中;然后可以按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等等

· 箱的深度:表示不同的箱里有相同个数的数据;

· 箱的宽度:每个箱值的取值区间是个常数

· 平滑方法:箱平均值、箱中值、箱边界值

2. 聚类:检测并去除孤立点

· 每个簇中的数据用其中心值代替

· 忽略孤立点

· 先通过聚类等方法找出孤立点(但这些孤立点可能包含有用的信息)

· 人工再审查这些孤立点

3. 计算机和人工检查相结合:计算机检测可疑数据,然后对它们进行人工判断

4. 回归:通过让数据适应回归函数来平滑数据

· 通过构造函数来符合数据变化的趋势,这样可以用一个变量预测另一个变量

· 如线性回归和多线性回归


2. 数据集成

· Data Warehouse的数据是集成的

· Data Warehouse的数据是从原有的分散的Data Base中抽取来的


数据集成面对的问题:1. 异构型问题;2. 语义冲突;3. 跨组织信息集成问题



3. 数据变换

如何实现数据变换:

· 平滑:去除数据中的噪声(分箱、聚类、回归)

· 聚集:汇总、数据立方体的构建

· 数据概化:沿概念分层向上概化

(数据概化:1.对目标类的数据集进行汇总,并对目标类的特性进行描述;2.与挖掘任务相关的数据集从较低的概念层抽象到较高的概念层的处理过程,是一种有效的数据压缩方法)

· 规范化:将数据按比例缩放,使之落入一个小的特定区间(最小 -- 最大规范化;z-score规范化;小数定标规范化)

· 属性构造:通过现有属性构造新的属性,并添加到属性集中;以增加对高维数据的结构的理解和精确度


规范化方法:

· 最小 -- 最大规范化


· z-score规范化


· 小数定标规范化

,其中,j是使 Max(|    |)<1的最小整数



4. 数据规约

策略:数据压缩

· 分为有损压缩和无损压缩

· 字符串压缩

    1. 有广泛的理论基础和精妙的算法

    2. 通常是无损压缩

    3. 在解压缩前对字符串的操作非常有限

· 音频/视频压缩

    1. 通常是有损压缩,压缩精度可以递进选择

    2. 有时可以在不解压整体数据的情况下,重构某个片段

· 小波变换(有损数据压缩)

· 主要成分分析(有损压缩)

· 通过选择替代的、较小的数据表示形式来减少数据量

· 有参方法:使用一个参数模型估计数据,最后只要存储参数即可

    1. 线性回归方法: Y = α + βx

    2. 多元回归:线性回归的扩充

    3. 对数线性模型:近似离散的多维数据概率分布

· 无参方法:

    1. 直方图

    2. 聚类

    3. 选样


数据规约 --- 直方图

· 一种流行的数据规约技术

· 将某属性的数据划分为不相交的子集或桶,在桶中放置该值的出现频率

· 桶和属性值的划分规则:等深 / 等宽 / V最优 / MaxDiff


数据规约 --- 聚类

· 将数据集划分为聚类,然后通过聚类表示数据集

· 如果数据可以组成各种不同的聚类,则该技术非常有效;反之如果数据界限模糊,则方法无效

· 数据可以分层聚类,并被存储在多层索引树中

· 聚类的定义和算法有很多种选择


数据规约 --- 选样

· 允许用数据的较小随机样本(子集)表示大的数据集

· 对数据 D 的样本选择:

    1. 简单随机选择 n 个样本,不回放:由 D 的 N 个元组中抽取 n 个样本

    2. 简单随机选择 n 个样本,回放:过程同上,只是元组被抽取后,将被回放,可能会再次被抽取

    3. 聚类选样:D 中元组被分入 M 个互不相交的聚类中,可在其中的 m 个聚类上进行简单随机选择(m<M)

    4. 分层选样:D 被划分为互不相交的”层“,则可通过对每一层的简单随机选样得到 D 的分层选样


数据规约策略 ---- 离散化和概念分层

· 离散化:通过将属性域划分为区间,减少给定连续属性值的个数。区间的标号可以代替实际的数据值。

· 概念分层:通过使用高层的概念(如青年、中年、老年)来代替底层的属性值(如实际的年龄数据值)来规约数据

    概念分层后,数据的细节丢失了,但是概化后的数据更有意义,更容易解释,而且所需的存储空间更少,有效的减少了 I/O 支出


 1.数据数值的离散化和概念分层生成

· 分箱:分箱技术递归的结果用于结果划分,可以产生概念分层

· 直方图分析:直方图分析方法递归的应用于每一部分,可以自动产生多级概念分层

· 聚类分析:将数据划分成簇,每个簇形成同一个概念层上的一个节点,每个簇可再分成多个子簇,形成子节点

· 基于熵的离散化

· 通过自然划分分段


人工进行概念分层是一项乏味耗时的工作。实际数据挖掘操作中,我们发现很多分层蕴含在数据库的模式中,因此可以自动的产生概念分层。或者可以对数据的统计分析动态的加以提炼,产生概念分层。

数值属性的概念分层可以根据数值分布分析自动的构造,主要考查上述五种方法。


离散化和概念分层----自然划分分段

· 将数值区域划分为相对一致的、易于阅读的、看上去更直观或者更自然的区间(聚类分析产生概念分层可能会将一个工资区间划分为[4012.33 , 4998.87],而通常数据分析人员希望看到的划分是[4000 , 5000])

· 自然划分的 3-4-5 规则常被用来将数值数据划分为相对一致的、”更自然的“区间


3-4-5 规则的划分步骤:

· 如果一个区间最高有效位上包含3、6、7或者9个不同的值,就将该区间划分为 3 个等宽子区间

· 如果一个区间最高有效位上包含2、4或者8个不同的值,就将该区间划分为 4 个等宽子区间

· 如果一个区间最高有效位上包含1、5或10个不同的值,就将该区间划分为 5 个等宽子区间

· 将该规则递归的应用于每个子区间,产生给定数值属性的概念分层

· 对于数据集中出现的最大值和最小值的极端分布,为了避免上述方法出现的结果扭曲,可以在顶端分层时,选用一个大部分的概率空间(如5% - 95%)



2. 分类数据的概念分层生成

· 分类数据是指无序的离散数据,它有有限个值(可能很多)

· 分类数据的概念分层生成方法:

1. 由用户或专家在模式级显式的说明属性的部分序

2. 通过显示数据分组说明分层结构的一部分

3. 说明属性集,但不说明它们的偏序,然后系统根据算法自动产生属性的序,构造有意义的概念分层

4. 对只说明部分属性集的情况,则可根据数据库模式中的数据语义定义对属性的捆绑信息,来恢复相关的属性

(属性的序,代表的是属性间的一个包含关系,说明他们在概念分层上层次的高低)



根据在给定的属性集中,每个属性所包含的不同值的个数,可以自动的生成概念分层,不同值个数最多的属性将被放在概念分层的最底层。

系统往往可以根据数据的内在联系而产生一些自动算法来生成概念分层。比如我们知道一个事实:在一个有序地属性集中,越底层的属性集将有越多的不同值跟他相对应,而越高层的属性集将有约少的不同值与其对应。因为底层属性的值要通过汇总才可以生成高层属性的值,而汇总就意味着不同值的个数的减少。



---------------------------------------------------------------------------------------------------

内存计算


1. HANA(High - Performance Analytic Appliance)高性能分析设备,基于内存计算技术的高性能实时数据计算平台

2. 列存储,如SYBASE IQ、SQL SEVER

3. 分布式集群,分而治之的思想,如Hadoop

4. Spark,立足于内存计算,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和图计算等多种范式。是RDD的实现系统,运算逻辑就是有RDD(弹性分布式数据集 Resilient Distributed Dataset)构成DAG(有向非循环图 Directed Acyclic Graph)

· RDD具有高效的错误容忍,中间结果持久化到内存的并行数据结构,可控制数据分区来优化存储结构,丰富的操作方法



NoSQL(Not Only SQL,从最初的用非关系数据库取代关系数据库概念演变为,关系和非关系数据库各有优缺点,彼此都无法互相取代)

具有灵活的可扩展性,灵活的数据模型,以及与云计算紧密结合。

NoSQL数据库虽然众多,但是归结起来,典型的NoSQL数据库通常包括键值数据库、列族数据库、文档数据库和图形数据库


阅读全文
0 0
原创粉丝点击