题型:
选择题10个×2分
填空题10空×2分
简答题6个×5分
大题1个(20分+10分)
第一章 数据仓库的概念与体系结构
1.1 数据仓库的基本概念
1、元数据
元数据(Metadata)是描述数据仓库中数据的数据结构和构建方法的数据。
元数据的分类与作用
按照应用场合可以分为:数据元数据和过程元数据两种。
数据元数据:又可以称为信息系统元数据,信息系统使用元数据对信息源进行描述,以按照用户的需求检索、存取和理解源信息,数据元数据保证了数据的正常使用,它支撑着系统信息结构的演进。
过程元数据:又可以称为软件结构元数据,它是关于应用系统的描述信息,可以帮助用户查找、评估、存取和管理其数据,系统软件结构中关于各个组件接口、功能和依赖关系的元数据保证了软件组件的灵活动态配置。
按照用途可以分为:技术元数据和业务元数据两类。
技术元数据:是关于数据仓库系统各项技术实现细节的数据,被用于开发和管理数据仓库的数据,保证了数据仓库的正常运行。
业务元数据:从业务角度出发,提供了介于用户和实际系统之间的语义层描述,以辅助数据仓库用户能够“读懂”数据仓库中的数据。
2、数据粒度
数据仓库所存在的不同数据综合级别,一般就称之为“粒度”。一般粒度越大,数据的细节程度越低,综合程度越高。
3、数据模型
数据模型是对现实世界的抽象表达,根据抽象程度的不同,衍生了不同抽象层级的数据模型。
数据模型主要包括:概念数据模型、逻辑数据模型以及物理数据模型。
- 概念数据模型(现实世界—信息世界):概念数据模型对应着信息世界中的某一个具体的信息结构,常用的概念数据模型有星形模型、雪花模型以及星系模型三种。
- 逻辑数据模型(信息世界—数据世界):逻辑数据模型是对数据仓库中主题的逻辑实现,定义了每一个主题所有关系表之间的关系模式。
- 物理数据模型(数据世界—计算机世界):物理数据模型是逻辑数据模型在数据仓库中的具体实现,例如数据组织结构、数据存储位置以及存储设备的分配等。
数据仓库与数据库的数据模型的区别
虽然数据仓库是基于数据库建设的,但它们的数据模型还是有些区别,主要体现在以下三个方面:
- 增加了时间属性以区分不同时期的历史数据。
- 不含有纯操作型数据。
- 增加了一些额外的综合数据。
星形模型
星形模型由事实表和维表两部分组成。
事实表是星形模型的中心,包含有大量的历史数据,冗余度一般比较小。一般情况下,事实表中的数据只添加不修改。
维表是事实表的辅助,一个事实表往往和一组维表有联系,每个维表与事实表通过主键相互关联,维表之间则通过事实表的中介建立联系。
雪花模型
雪花模型是对星形模型的扩展,除了事实表和维表之外,新加了“详细信息表”对维表进行描述。通过引入“详细信息表”对维表数据进行分解,以提高维表的规范度。
星系模型
星系模型往往用于数据关系更加复杂的场景。多个事实表共享维表,可以看作是星型模型的集合。
4、ETL
原始数据源的数据经过抽取、转换、并加载到数据仓库中的数据库的过程称为ETL(Extract,Transform and Load)过程。
数据抽取
主要包括数据提取、数据清洁、数据转换以及生成衍生数据四个主要功能。
- 数据提取:确定要新导入到数据仓库的数据有哪些。
- 数据清洁:检查数据源中是否存在脏数据,并按照规则对数据进行修改。
- 数据转换:将数据源中的数据转换成数据仓库统一的格式。
- 衍生数据:为保证数据查询的效率,需要对用户经常进行的查询通过预处理操作来提高查询效率,生成衍生数据。
数据转换
数据转换是将抽取到的数据进行更进一步的转换为数据仓库创建更有效的数据。
常用的转换规则包括:
- 字段级的转换:主要是指转换数据类型;添加辅助数据,如给数据添加时间戳;将一种数据表达方式转换为数据仓库所需的数据表达方式,例如将数值型的性别编码转换为汉字型的性别。
- 清洁和净化:保留具有特定值和特定取值范围的数据,去掉重复数据等。
- 数据派生:例如可以通过身份证号码可以派生出出生年、月、日、年龄等;将多源系统中相同数据结构的数据合并。
- 数据聚合和汇总:业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。
数据加载
数据加载是指通过数据加载工具将经过数据转换后的数据装载到数据仓库中。常用的数据加载工具有SQL语言、SQL Loader以及最基本的Import。
5、数据集市
数据集市在某种程度上来说就是一个小型的数据仓库。
数据集市中的数据往往是关于少数几个主题的,它的数据量远远不如数据仓库,但数据集市所使用到的技术和数据仓库是同样的,它们都是面向分析决策型应用的。
建设数据集市的方法
建设数据集市一般有自上而下、自下而上两种方式。
1.2 数据仓库的特点与组成
1、数据仓库的4个基本特征
面向主题、数据集成、数据非易失、数据随时间变化。
- 面向主题:是建立数据仓库所必须遵守的基本原则,数据仓库中的所有数据都是围绕某一主题组织、展开的。
- 数据集成:在原始数据进入数据仓库前,需要采取相应的手段来消除许多的不一致性。
- 数据非易失:数据仓库中的数据并不随着数据源中的数据的变更而实时更新,即数据仓库中的数据一般不再修改。
- 数据随时间变化:随着时间的推移数据仓库不断增加新的数据内容,旧数据被不断删除。
2、数据仓库系统应该具备以下几种功能:
- 数据抽取与数据加载。
- 数据清洗。
- 数据备份与备存。
- 查询导向,即将所有查询导向适当的数据源。
3、数据仓库主要由三大管理器
加载管理器、仓库管理器以及查询管理器。
1.3 数据仓库与数据库的区别
数据仓库作为一种新的数据管理技术,它由数据库发展而来,并不能取代数据库,可以认为数据仓库就是一个数据库应用系统。二者之间的区别和联系如下表:
数据仓库 | 数据库系统 |
历史数据 | 当前数据 |
决策人员、提供决策分析支持 | 业务操作人员、提供业务处理支持 |
静态历史数据,只能定期的添加、刷新 | 数据会随着业务的变化而动态变化 |
数据访问频率低 | 数据访问频率高 |
响应时间比较长 | 响应时间短 |
1.4 传统数据仓库所面临的挑战
-
挑战1:架构问题:
- 数据移动代价高
- 无法快速适应变化
- 海量数据与系统处理能力之间的鸿沟
-
- 系统开放性不够
-
挑战2:扩展性问题
- CAP理论,在分布式系统中,数据一致性、可用性和分区容错性不可兼得,最多可以同时满足两项。
-
挑战3:数据组织方式问题
- 关系模型描述能力有限
- 关系模型的扩展性支撑能力有限
-
挑战4:容错性问题
第二章 数据
1、大数据
大数据(又称海量数据):是指以不同形式存在于数据库、网络等媒介上蕴含有丰富价值的大规模数据。
1、大数据5V特征:
- Volume:数据规模很大,可以是TB级别,也可以是PB级别。
- Variety:数据种类和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为音频、视频、图片、各种文档等等。
- Value:数据的价值密度相对较低。以监控视频为例,其中可用的数据也就仅仅几秒钟的时间。
- Velocity:数据增长速度快,处理速度也快,时效性要求高。
- Veracity:数据的准确性和可信度要求高,即数据的质量要求高。
简而言之,大数据的特点是规模大、多样性、价值密度低、速度快、数据质量要求高。
2、原始数据主要存在以下几个方面的问题:
- 不一致数据,缺乏统一的分类标准和编码方案。
- 重复数据,存在相同的记录,相同的信息存储在多个数据源中。
- 残缺数据,空值
- 噪声数据,错误值或孤立点
- 高维数据,存在无用属性
3、数据预处理的意义
- 改进数据质量,提高其后的挖掘过程的精度和性能。
- 数据预处理是知识发现过程的重要步骤。
- 检测数据异常、尽早调整数据,并归约待分析数据,将得到较高决策回报。
4、数据预处理的基本方法
数据清洗:除去噪声,纠正不一致性。填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性。
数据集成:将多种数据源合并成一致的数据存储。集成多个数据库、数据立方体或文件。
数据变换:即规范化,可以改进距离度量的挖掘算法的精度和有效性。规范化和聚集。
数据归约:通过聚集、删除冗余特性或聚类方法来压缩数据。通过一些技术(概念分层等)得到数据集的压缩表示,它小得多,但可以得到相同或相近的结果。
数据清洗
数据清洗(Data cleaning),就是按照一定的规则把“脏数据”“洗掉”,即填充空缺的值,识别孤立点、消除噪声,并纠正数据中的不一致。
数据清洗任务
1)空缺值处理
- 忽略元组
- 人工填写空缺值
- 使用一个全局常量填充空缺值
- 使用属性的平均值填充空缺值
- 使用与给定元组属同一类的所有样本的平均值
- 预测最可能值填充空缺值
决策树算法、关联规则算法、神经网络算法等。
考虑数据库系统和挖掘算法的特点。
2)属性选择与处理
属性的选择与处理包括统一属性编码、去除重复属性和不相关属性、合理选择关键字段等工作。
- 赋予属性值明确的含义。对名称和取值含义模糊的属性,赋予每个属性确切的、便于理解的属性名称。
- 统一属性值编码。保证在各个数据源中对同一事物特征的描述是统一的。
例如:在不同数据源中用“M”、“F”或者“0”、“1”分别表示“男”、“女”,多个数据源合并的时候,就需要把这些属性值统一起来。
- 处理唯一属性。需要建立挖掘结果和原始数据的对应关系则保留,若不形成规则,则去除。
- 去除重复属性。原始数据中会出现意义相同或者可以用于表示同一信息的多个属性,则选择性去除重复属性。比如:年龄和出生日期,只需年龄段时,出生日期属性则冗余。
- 去除可忽略字段。若某属性值缺失非常严重,该属性已经不能成为有用知识时,则去除该属性。
- 合理选择关联字段。如果属性X可以由另一个或多个属性推导或者计算出来,则认为这些字段之间的关联度高,属性X和它的关联属性对数据挖掘的作用是相同的,所以只选择其中之一,或者属性X,或者它的关联属性。
如商品价格、数量和总价格之间有高度关联关系。
3)噪声数据处理
噪声数据的基本处理方法:通常采用数据平滑技术去除噪声,。
分箱(binning)
分箱方法:统一权重、统一区间、最小熵法、自定义区间等。
例:一组学生开支的排序后数据(单位:元):
800,1000,1200,1500,1500,1800,2000,2300,
2500,2800,3000,,3500,4000,4500,4800,5000
统一权重法(等深分箱法)
将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。
设定权重(箱子深度)为4:
箱1:800,1000,1200,1500
箱2:1500,1800,2000,2300
箱3:2500,2800,3000,3500
箱4:4000,4500,4800,5000
统一区间法(等宽分箱法):使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。
确定箱子数目,如4,数据集范围[800,5000],每个箱子宽度为(5000-800)/4=1050,则子区间为[800,1850]、[1850,2900]、[2900,3950]、[3950,5000]
箱1:800,1000,1200,1500,1500,1800
箱2:2000,2300,2500,2800
箱3:3000,3500
箱4:4000,4500,4800,5000
自定义区间:
如将收入划分为1000元以下、1000-2000、2000-3000、3000-4000和4000以上
箱1:800
箱2:1000,1200,1500,1500,1800,2000
箱3:2300,2500,2800,3000
箱4:3500,4500
箱5:4500,4800,5000
完成了分箱之后,就需要采用一种方法对数据进行平滑,使得箱中的数据更接近。目前通常使用的平滑方法有按平均值平滑、按边界值平滑和按中值平滑。
按平均值平滑
用平均值代替箱子中所有数据
箱1:1300,1300,1300,1300,1300,1300
箱2:2400,2400,2400,2400
箱3:3250,3250
箱4:4575,4575,4575,4575
按边界值平滑
用距离较小的边界值替代数据
箱1:800,800,800,1800,1800,1800
箱2:2000,2000,2800,2800
箱3:3000,3500
箱4:4000,4000,5000,5000
按中值平滑
用中值代替箱子中所有数据
箱1:1350,1350,1350,1350,1350,1350
箱2:2400,2400,2400,2400
箱3:3250,3250
箱4:4650,4650,4650,4650
聚类(clustering)
聚类:通过聚类分析检测离群点,消除噪声。
回归(regression)
回归:通过让数据适合一个函数(回归函数)来平滑数据。
计算机检查和人工检查相结合
5、数据变换
数据变换是将数据转换成适合挖掘的形式(原始数据表并不适合直接用于数据挖掘,需变换之后才能使用),主要有:
平滑:除去数据中的噪声,如分箱、聚类和回归。
聚集:对数据进行汇总和聚集。
数据泛化:使用概念分层,用高层概念替换低层“原始”数据。
规范化:为了帮助避免对度量单位选择的依赖性,将属性数据按比例缩放,使之落入一个小的特定区间。
主要的数据规范化方法
最小-最大规范化(MIN-MAX)
零-均值规范化(z-score)
小数定标规范化
6、数据规约
数据归约的本质就是缩小数据的范围,是指在不破坏数据完整性的前提下,获得比原始数据小得多的挖掘数据集,该数据集可以得到和原始数据集相同的挖掘结果,进而减少数据挖掘所需要的时间。
常用的数据归约方法
数据立方体聚集
减少数据的维度。
维归约
删除不相关、弱相关或冗余属性。
属性子集选择方法
逐步向前选择
原属性集S,空子集S`,做循环操作:从剩下原属性集中一次选择最好(最相关)的属性加入到S`中,直到满足条件。
逐步向后删除
在原属性集S上做循环操作:从剩余属性集中选择最坏(最不相关)属性β,删除该属性,直到满足条件。
向前选择和向后删除相结合
同时使用两种方法,每次选择一个最好的属性,并删除一个最坏的。
说明:以上三种方法可以使用一个阈值来确定是否停止属性选择。
判定树归纳
判定树归纳构造一个类似流程图的结构,其每个内部节点表示一个属性上的测试,每个分枝(非树叶)对应于测试的一个输出;每个外部节点(树叶)表示一个判定类。在每个节点,算法选择“最好”的属性,将数据划分成类。
说明:该过程可以使用一个度量阈值来决定何时停止属性选择过程。
数据压缩
使用正确的编码压缩数据集。
无损数据压缩技术
原数据可以由压缩数据重新构造而不丢失任何信息,所采用的压缩技术,是基于熵的编码方法。无损压缩:哈夫曼编码、香农编码。
有损数据压缩技术
只能重新构造原数据的近似表示,所采用的数据压缩技术。两种流行的有效的有损数据压缩方法:小波变换、主要成分分析。
数值规约
用较小的数值表示数据,或采用较短的单位,或使用模型来表示数据。
主要包括:直方图、聚类、抽样、线性回归/非线性回归。
离散化和概念分层
离散化是用确定的有限个区段值代替原始值;概念分层是指用较高层次的概念替换低层次的概念。
典型方法(所有方法均可递归应用) :分箱、直方图分析、基于熵的离散化、聚类分析、根据直观划分离散化。
第三章 数据存储
1、数据存储
数据存储是数据仓库的核心层。数据仓库主要存储三个层次的数据。
- 源数据层:从外部数据源中得到的数据
- 基础数据层:从源表数据中通过数据预处理技术
- 数据集市层:为了满足用户的需求按主题保存的数据
2、数据模型
数据模型(Data Model)是对现实世界数据特征的抽象表达,是用来描述数据的一组概念和定义。在信息管理中需要将现实世界的事物转换为信息世界的数据才能对信息进行处理与管理,这就需要依靠数据模型作为这种转换的桥梁。
概念模型
概念模型描述的是从客观世界到主观认识的映射,它是用于我们为一定的目标设计系统、收集信息而服务的一个概念性工具。
数据仓库的概念模型设计可以采用两种方法: E-R模型和面向对象的分析方法。
进行逻辑模型设计所要完成的主要工作有:
- 分析主题域,定义逻辑模型
- 数据粒度的层次划分
- 确定数据分割策略
- 增加导出字段
2、元数据(Metadata)就是描述数据的数据,用于建立、管理、维护和使用数据仓库。
例:每张数码照片都包含EXIF信息,就是用来描述数码图片的元数据。按照Exif 2.1标准,其中主要包含这样一些信息
Image Description 图像描述、来源 指设备名
Artist 作者 有些相机可以输入使用者的名字
Make 生产者 指产品生产厂家
Model 型号 指设备型号
Orientation方向 有的相机支持,有的不支持
Software软件 显示固件Firmware版本
DateTime日期和时间
……
元数据分类
按元数据的类型分类
基础元数据:基础数据是指数据仓库系统中所有的数据源、数据集市、数据仓库和应用中的数据。
数据处理元数据:数据处理元数据是数据仓库系统中与数据处理过程紧密相关的元数据,它包括数据加载、清理、更新、分析和管理信息。
按抽象层次分类
概念元数据:应用系统、预定义查询和分析应用相关的信息
逻辑元数据:应用数学语言的描述,它从某种程度是概念元数据的更深层次的描述
物理元数据:关于数据仓库实现的最底层信息,包括事务规则、SQL编码、关系索引文件和分析应用代码等
按用户角度分类
技术元数据:是存储关于数据仓库系统技术细节的数据,用于开发和管理数据仓库。包括:
数据仓库结构的描述、汇总用的算法、有操作环境到数据仓库环境的映射。
用户元数据:从最终用户角度描述数据仓库包括:如何连接数据仓库、可以访问数据仓库的哪些数据、数据来自哪一个源系统
元数据来源分类
工具元数据:指由ETL(数据抽取、数据转换、数据装载)组件、数据仓库设计工具等产生的元数据
资源元数据:指由操作系统、数据集市、数据库和数据字典生成的元数据
外部元数据:指的是从本地数据仓库系统以外的其他系统输入的元数据。如业务系统数据库中的数据。
元数据的作用
元数据是进行数据集成所必需的
元数据定义的语义层可以帮助最终用户理解数据仓库中的数据。
元数据是保证数据质量的关键。
元数据可以支持需求变化。
4、数据集市
数据集市的定义
数据集市是一种小型的部门级的数据仓库,主要面向部门级业务,并且只面向某个特定的主题,是为满足特定用户(一般是部门级别的)的需求而建立的一种分析型环境。
投资规模比较小,更关注在数据中构建复杂的业务规则来支持功能强大的分析
常称为“小数据仓库”或“部门级数据仓库”
数据集市的误区
单纯用数据量大小来区分数据集市和数据仓库(×)
数据集市容易建立(×)
数据集市容易升级到数据仓库(×)
数据集市的特点
特定用户群体所需的信息通常是一个部门或一个特定组织的数据。
支持访问非易变的业务信息。
协调组织多个运行系统的信息。
为即席分析和预定义报表提供合理的查询响应时间。
数据集市与数据仓库的区别
数据集市建立方法
自上而下的方法:从属型的数据集市采用的是自上而下的方法。首先建立企业的数据仓库,然后从企业级的数据仓库中为各个部门抽取必要的数据建立部门级的数据集市。
自下而上的方法:自下而上的开发方法是先从数据集市入手,就某一个特定的主题,先构建独立的数据集市,当数据集市达到一定的规模,再从各个数据集市进行数据的再次抽取建立企业级的数据仓库。
第四章 OLAP与数据立方体
1、OLAP
基本思想
联机分析处理(OLAP),又称为多维分析处理。通过对多维信息以很多种可能的观察方式进行快速、稳定、一致和交互性的访问和存取,允许管理决策人员对数据进行深入的观察。
基本目标
满足决策支持或多维环境特定的查询和报表需求,它的技术核心是“维度”这个概念,因此OLAP也可以说是多维数据分析工具的集合。
2、OLTP(联机事务处理)和OLAP(联机分析处理)的对比
3、联机分析处理是共享多维信息的快速分析,它体现了四个特征:
- 快速性(fast)
用户对OLAP的响应速度有着很高的要求,这正是联机分析处理“在线”特征的体现。
- 可分析性(analysis)
不同的用户会存在不同的需求、不同的分析请求,面对众多种类的分析请求,需要OLAP 系统应能处理用户的任何逻辑分析请求和统计分析请求。
- 多维性(multidimensional)
要求系统在完成多维数据分析之后,同时也能够将分析结果以多维视图的形式提供给用户。
- 信息性(information)
OLAP 应具备管理大容量信息的能力。
4、多维分析操作
OLAP的基本多维分析操作有切片(slice)、切块(dice)和钻取(drill-up和drill-down)以及旋转(pivot)。
-
切片
在给定数据立方体的一个维上进行选择一个维度成员的操作就是切片,切片的结果是得到一个二维平面数据。
例如,对下图所示数据立方体,使用条件:商品=“电子产品”进行选择,就相当于在原来的立方体中切出一片,结果如图所见。
-
切块
在给定数据立方体的一个维上进行选择两个或多个维成员的操作就是切块,切块的结果得到一个子立方体。
例如,对下图所示数据立方体,使用条件:时间=“2010一季度”OR“2010二季度” 进行选择,就相当于在原立方体中切除一小块,结果如图所示。
-
钻取
改变维的层次,变换分析的粒度。它包括向下钻取(drill-down)和向上钻取(drill-up)。
向上钻取:向上钻取是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数。
例如,用“江浙沪”表示三个地区的汇总信息。
向下钻取:向下钻取是在某一维上,它从汇总数据深入到细节数据进行观察,或者增加新维。
例如,查看2010二季度4、5、6月的消费数据。
-
旋转
旋转就是将维的位置进行互换。旋转操作的本质就是改变观察数据立方体的视角,通过交换行和列得到不同视角的数据。
例如,从俯视的角度来观察下图的数据立方体,得到右图的数据立方体。
5、OLPA的数据模型
建立OLAP的基础是多维数据模型,多维数据模型的存储可以有多种不同的形式。MOLAP和ROLAP是OLAP的两种主要形式。
MOLAP(Multi-dimension OLAP)是基于多维数据库的OLAP,简称为多维OLAP。
数据以多维方式存储,每一个数据单元都可以通过维度的定位直接访问。
ROLAP(Relation OLAP)是基于关系数据库的OLAP,简称关系OLAP。
数据存放于关系型数据库中,用户的多维查询请求由ROLAP引擎处理为SQL查询,结果以多维方式呈现。
MOLAP和ROLAP的比较 | |||
数据存储 | 技术 | 特征 | |
MOLAP | 详细数据用关系表存储在数据仓库中; 各种汇总数据保存在多维数据库中; | 由MOLAP引擎创建; 预先建立数据立方体; | 询问响应速度快; 能轻松适应多维分析; |
ROLAP | 全部数据以关系表存储在数据仓库中; 有非常大的数据容量; | 使用复杂SQL从数据仓库中获取数据; ROLAP引擎在分析中创建数据立方体; | 在复杂分析功能上有局限性,需要采用优化的OLAP; |
第五章 数据挖掘基础
1、数据挖掘定义
从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取人们所感兴趣的、事先不知道的、隐含在数据中的潜在有用的信息和知识的过程。这些信息的表现形式为:规则、概念、规律及模式。
数据挖掘的定义包括以下几种含义
数据源必须是真实的、大量的、含噪声的。
发现的是用户感兴趣的知识。
发现的知识要可接受、可理解、可运用、有价值。
知识的形式可以是概念、规则、模式、规律等
2、数据挖掘的任务
关联规则
关联的定义
如果两个或多个变量的值之间存在着某种规律性,则称之为关联。
关联分析利用关联规则进行数据挖掘,发现隐藏在大型数据集中的令人感兴趣的联系。
典型的关联规则算法:Apriori算法、FP-Growth算法、Uspan算法、HusMaR算法…
聚类分析
聚类的定义
聚类是按照某个特定标准把一个数据集分割成不同的类,使得类内相似性尽可能地大,同时类间的区别性也尽可能地大。直观地看,最终形成的每个聚类,在空间上应该是一个相对稠密的区域。
聚类是对记录分组,把相似的记录放在一个聚类里。
聚类分析解决的是事物分组的问题,目的是将类似的事物放在一起。
聚类方法主要包括划分聚类、层次聚类、基于密度的聚类等
划分聚类最为常见,一般用距离来度量对象之间的相似性,典型的是欧氏距离;距离越大,则相似性越小,反之亦然;
聚类通常作为数据挖掘的第一步。
-
分类分析
分类的定义
分类就是指基于一个可以预测的属性把数据分成多个类别。每个类别都有一组属性,该属性与其他任何类别的属性都不相同
典型的分类算法:决策树算法、ID3算法、C4.5算法…
分类与聚类的比较
聚类分析是研究如何在没有训练的条件下把样本划分为若干类。
在分类中,对于目标数据库中存在哪些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来。
聚类需要解决的问题是将已给定的若干无标记的模式聚集起来使之成为有意义的聚类,聚类是在预先不知道目标数据库到底有多少类的情况下,希望将所有的记录组成不同的类或者说聚类,并且使得在这种分类情况下,以某种度量(例如:距离)为标准的相似性,在同一聚类之间最小化,而在不同聚类之间最大化。
与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据样本有类别标记。
-
回归分析
回归分析的定义
回归分析是研究一个变量与其他变量之间的依存关系,并用数学模型进行模拟,目的在于根据已知的变量的值,估计、预测因变量的总体平均值。它是根据试验观测的数据,寻找变量之间被随机性掩盖了的相互依存的关系,然后用确定的函数关系去近似代替比较复杂的相关关系。
典型的回归分析方法:线性回归、逻辑回归…
-
相关分析
变量之间的相关关系有两种:确定型关系和不确定型关系。
确定型关系就是函数关系,不确定型关系就是无法用具体的公式进行表达的关系。
如,人的身高与体重之间的关系。
相关分析的定义
相关分析就是研究变量之间不确定型关系的统计方法。
典型的相关分析方法:图表相关分析(折线图及散点图)、协方差分析…
-
异常检测
异常检测就是寻找与大部分对象都不相同的对象,该对象的存在偏离常理。异常检测有时也称偏差检测,因为异常对象的属性值与期望的属性值之间存在较大的偏差。
异常检测的目标是发现与大部分其他对象不同的对象。通常,异常对象被称作离群点,因为在数据的散布图中,它们远离其他数据点。
典型的异常检测方法:基于模型的技术、基于邻近度的技术、基于密度的技术
3、数据挖掘对象
结构化数据:关系数据库、数据仓库
非结构化数据:文本数据、图像和视频数据、web数据
4、数据挖掘可分为以下几类:
根据数据库类型分类
根据数据挖掘对象分类
根据数据挖掘任务分类
根据数据挖掘方法和技术分类
5、知识发现
知识发现是数据挖掘的一种更广义说法,该过程可以简单地定义为从数据集中识别出有效的、新颖的、潜在有用的,以及最终可理解的模式的高级处理过程。数据挖掘仅仅是知识发现过程的一个步骤。
知识发现过程可以细分为七个部分
问题的理解和定义
相关数据的收集和提取
数据探索和清理
数据转换
算法选择
数据挖掘
结果的解释和评价
第六章 关联挖掘
1、关联规则
人们通过发现关联规则,可以从一件事情的发生,来推测另外一件事情的发生,从而更好地了解和掌握事物的发展规律等等,这就是寻找关联规则的基本意义。
关联规则就是有关联的规则,形式是这样定义的:两个不相交的非空集合X、Y,如果有X→Y,就说X→Y是一条关联规则。
项与项集
设I={i1,i2 ,…,im}是由m个不同项目构成的集合,每个ik(k=1,2,…,m)被称为一个项目(Item)。
项集
项目的集合被称为项目集合(Itemset),简称项集。
项集中元素的个数称为项集的长度。长度为k的项集被称为k-项集(k-Itemset)。
交易
每笔交易T(Transaction)是项集I上的一个子集,即:T⊆ I,但通常T ⊂ I。
每一个交易有一个唯一的标识—交易号,记作TID。
交易的全体被称为交易数据集或事务数据集,记作D,简称交易集。
交易集D中交易的个数记为|D|。
规则的支持度
支持度描述了A和B这两个物品集在所有的事务中同时出现的次数或者出现的概率有多大。
规则A→B在数据库D中具有支持度S,即概率P(AB),即:
support(A→B)=P(AB)= |AB||D|
其中|D|表示事务数据库中事务的总个数,|AB|表示A、B两个项(物品)集同时发生的事务个数。
规则的可信度
可信度就是指在出现了物品集A的事务T中,物品集B也同时出现的概率。
规则A→B具有可信度Confidence,是条件概率P(B|A),即:
confidence(A→B)=P(B|A)= |AB||A|
其中|A|表示数据库中包含项集A的事务个数。
可信度是对关联规则的准确度的衡量,支持度是对关联规则重要性的衡量。支持度说明了这条规则在所有事务中有多大的代表性。
关联规则的最小支持度(Minimum Support):表示关联规则需要满足的最低支持度,记为min_support。
关联规则的最小可信度(Minimum Confidence):表示关联规则需要满足的最低可信度,记为min_confidence。
频繁项集
在数据集中出现频率相当高的那些项集。如果项集满足最小支持度,则它称之为频繁项集(Frequent Itemset)。
强关联规则
support(A→B)≥min_support且confidence(A→B) ≥min_confidence,则称关联规则A→B为强关联规则,反则称A→B为弱关联规则。通常所说的关联规则一般是指强关联规则。
关联规则挖掘就是按用户指定最小支持度min_support和最小可信度min_confidence,从给定的事务数据库T中寻找出所有强关联规则的过程。
2、关联规则分类
基于规则中处理的变量的类别:布尔型和数值型
布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;
数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。
例如:性别=“男”=>职业=“老师” ,是布尔型关联规则;性别=“男”=>avg(收入)=5000,涉及的收入是数值类型,所以是一个数值型关联规则。
基于规则中数据的抽象层次:单层和多层关联规则
在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;
在多层的关联规则中,对数据的多层性已经进行了充分的考虑。
例如:Adidas篮球=>Nike篮球服,是一个细节数据上的单层关联规则;篮球=>Nike篮球服,是一个较高层次和细节层次之间的多层关联规则。
基于规则中涉及到数据的维数:单维的和多维的
在单维的关联规则中,我们只涉及到数据的一个维,如用户购买的物品
在多维的关联规则中,要处理的数据将会涉及多个维。换成另一句话,单维关联规则是处理单个属性中的一些关系;多维关联规则是处理各个属性之间的某些关系。
例如:尿布=>啤酒,这条规则只涉及到用户的购买的物品,是单维的关联规则;性别=“男”=>职业=“老师”,这条规则就涉及到两个字段的信息,是两个维上的一条关联规则。
3、Apriori算法
是最常用的关联规则挖掘算法。 Apriori算法的扩展性较好,可用于并行计算等领域。
Apriori算法的思想
使用频繁项集性质的先验知识。使用逐层搜索的迭代方法产生频繁项集。
Apriori定律
Apriori定律1:
如果一个集合是频繁项集,则它的所有子集都是频繁项集。
举例:假设一个集合{A,B}是频繁项集,即A、B同时出现在一条记录的次数大于等于最小支持度min_support,则它的子集{A},{B}出现次数必定大于等于min_support,即它的子集都是频繁项集。
Apriori定律2:
如果一个集合不是频繁项集,则它的所有超集都不是频繁项。
举例:假设集合{A}不是频繁项集,即A出现的次数小于min_support,则它的任何超集如{A,B}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。
利用这两条定律,我们抛掉很多的候选项集,Apriori算法就是利用这两个定理来实现快速挖掘频繁项集的。
Apriori算法步骤
1、扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。
2、挖掘频繁k项集
a) 扫描数据计算候选频繁k项集的支持度;
b) 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束;
c) 基于频繁k项集,连接生成候选频繁k+1项集。
3、令k=k+1,转入步骤2。
Apriori算法实例
以下是某商场的交易记录,共有9个事务
交易ID
count
T100
啤酒,牛奶,炸鸡
T200
牛奶,面包
T300
牛奶,尿布
T400
啤酒,牛奶,面包
T500
啤酒,尿布
T600
牛奶,尿布
T700
啤酒,尿布
T800
啤酒,牛奶,尿布,炸鸡
T900
啤酒,牛奶,尿布
假设最少支持度为2或者2/9
其中,
连接:三级候选集=L2⋈L2
={{啤酒,牛奶},{啤酒,尿布},{啤酒,炸鸡},{牛奶,尿布},{牛奶,面包},{牛奶,炸鸡}}⋈{{啤酒,牛奶},{啤酒,尿布},{啤酒,炸鸡},{牛奶,尿布},{牛奶,面包},{牛奶,炸鸡}}
={{啤酒,牛奶,尿布},{啤酒,牛奶,炸鸡},{啤酒、牛奶、面包},{啤酒,尿布,炸鸡},{牛奶,尿布,面包},{牛奶,尿布,炸鸡},{牛奶,面包,炸鸡}}
剪枝:{啤酒,牛奶,尿布}的2-项子集是={啤酒,牛奶},{啤酒,尿布}和{牛奶,尿布}。
{啤酒,牛奶,尿布}的所有2-项子集都是L2的元素。因此,保留{啤酒,牛奶,尿布}在三级候选集中。
{牛奶,尿布,炸鸡}的所有2-项子集是{牛奶,尿布},{牛奶,炸鸡},{尿布,炸鸡}}。{尿布,炸鸡}不是L2的元素,因而不是频繁的。因此,从三项候选集中删除{牛奶,尿布,炸鸡}。
剪枝后三项频繁集为{啤酒,牛奶,尿布},{啤酒,牛奶,尿布}。
可以产生哪些规则?
假设最小可信度为30%
Apriori算法的缺点
在每一次产生候选集时都要扫描一次数据库,生成大量备选项集,导致计数工作量太大,影响了算法的效率。
4、FP-growth算法
FP-Tree
就是上面的那棵树,是把事务数据表中的各个事务数据项按照支持度排序后,把每个事务中的数据项按降序依次插入到一棵NULL为根节点的树中,同时在每个结点处记录该结点出现的支持度。
条件模式基
包含FP-Tree中与后缀模式一起出现的前缀路径的集合。也就是同一个频繁项在FP树中的所有节点的祖先路径的集合。
条件树
将条件模式基按照FP-Tree中的构造原则形成一个新的FP-Tree。
FP-growth算法步骤
1、扫描整个数据集,得到所有出现过的数据,并得到它们的支持度计数作为候选频繁1项集,记为L。
2、构造FP-Tree树
a) 创建树的根节点,用“null”标记。
b)第二次扫描数据库。每个事务中的项都按L的次序处理(即按递减支持度计数排序),并对每个事务创建一个分支。
c) 当为一个事务考虑增加分枝时,沿共同的前缀的每个结点的计数增加1,为前缀之后的项创建节点和连接。
3、对FP-Tree树进行挖掘频繁项集。
举例
根据条件FP树,我们可以全排列组合,得到挖掘出来的频繁模式
项
条件模式基
条件FP树分支
产生的频繁模式
炸鸡
{牛奶,啤酒:1}
{牛奶,啤酒,尿布:1}
{牛奶:2,啤酒:2}
{牛奶,炸鸡:2}
{啤酒,炸鸡:2}
{牛奶,啤酒,炸鸡:2}
面包
{牛奶,啤酒:1}
{牛奶:1}
{牛奶:2}
{牛奶,面包:2}
尿布
{牛奶,啤酒:2}
{牛奶:2}
{啤酒:2}
{牛奶:4,啤酒:2}
{啤酒:2}
{牛奶,尿布:4}
{啤酒,尿布:4}
{牛奶,啤酒,尿布:2}
啤酒
{牛奶:4}
{牛奶:4}
{牛奶,啤酒:4}
5、Apriori算法与FP-growth区别
Apriori算法在每一次产生候选集时都要扫描一次数据库,而FP-growth则利用树形结构,无需产生候选项集而是直接得到频繁项集,大大减少了扫描交易数据库的次数。
第七章 聚类分析
聚类分析是指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。由聚类所生成的簇是一组数据对象的集合,被称为聚类集合。簇内的对象之间相似度较高,簇与簇之间对象差别较大。散落在聚类集合之外的点被称为孤立点。
基于对象间的距离来计算差异度
欧几里德距离:
加权欧几里德距离计算
对每个变量根据其重要性赋予一个权重,加权的欧几里德距离可以计算如下:
同理,加权也可以用于曼哈顿距离和明考斯基距离。
曼哈顿距离:
明考斯基距离:是欧几里德距离和曼哈顿距离的推广。
二元变量的差异度计算
一个二元变量只有0或1两个状态。0表示变量为空,1表示变量存在。评价两个对象i和j之间的差异度标准如下:
简单匹配函数(对称二元变量)
Jaccard系数(不对称二元变量)
q:i=1,j=1;r:i=1,j=0;s:i=0,j=1;t:i=0,j=0;p=q+r+s+t
标称型变量的差异度计算
标称变量是二元变量的推广,它可以具有多余两个状态的值。
假设一个标称变量的状态数目是M。这些状态可以用字母、符号,或者一组整数来表示。两个对象i和j之间的差异度可以用简单匹配方法来计算:
m是匹配的数目,即对i和j取值相同的变量的数目;p是全部变量的数目。可以通过赋权重来增加m的影响,或者赋给有较多状态的变量的匹配更大的权重。
k-means算法
k-means算法是将平均值作为类的“中心”的一种分割聚类的方法。该算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
k-means聚类算法的算法流程如下:
输入:包含n个对象的数据库和簇的数目k;
输出:k个簇。
(1) 任意选择k个对象作为初始的簇中心;
(2) 对剩余的数据对象,根据其与各个簇中心之间的距离,赋给最近的簇;
(3)更新簇的平均值,即计算每个簇中对象的平均值;
(4)根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
(5) 直到不再发生变化。
举例:
1、随机选择两个对象x3(6,6)、x6(8,4),分别作为将分成的两个类的“中心”。然后,根据距离“中心”最近的原则,将其他对象分配到各个相应的类中,形成两个类{x1,x2,x3,x5,x8,x9,x10}、{x4,x6,x7}。
2、通过计算可得第一个类的平均值f1(1)(4.43,5.29)和第二个类的平均值f2(1)(7.67,4),将它们分别作为这两个类的新的“中心”,根据距离“中心”最近的原则,进行对象的重新分配,形成两个新的类{x1,x3,x5,x8,x9,x10}、{x2,x4,x6,x7}
3、针对新类再计算平均值,得到f1(2)(4,5.17)和f2(2)(7.5,4.5)及新的类{x1,x8,x9,x10}、{x2,x3,x4,x5,x6,x7}
4、由于根据更新的平均值f1(3)(2.75,4.25)和f2(3)(7.17,5.33),对象的分配不再发生变化,所以{x1,x8,x9,x10}和{x2,x3,x4,x5,x6,x7}为最终的两个聚类
PAM算法
PAM算法实际为k中心点算法。中心选用的是具体的某一个点,而不是k均值的几何中心。是对k均值算法的改进,削弱了离群值的敏感度。但是其运算量较大,适合少量数据的分析。
PAM算法步骤:
(1)选取若干点作为初始簇心,并将剩余的点分配到最近的簇
(2)依次循环将非簇心的点假设为簇心,替换现有的一个,计算更改前后的耗费差距
(3)选择耗费差距最小的为新的簇心
(4)簇心的位置没有改变,停止
举例:
1、对列表中的10个数据聚类, 聚为两个簇,k=2。
2、随机挑选2个中心点:c1=(3,4),c2=(7,4)。将所有点到这两点的距离计算出来,可以看到黑体为到两个中心点距离较小的距离值。那么根据左图,我们可以对所有数据点进行归类:
Cluster1 = {X1, X2, X3, X4}
Cluster2 = {X5, X6, X7, X8 , X9, X10}
很容易算出此时的损失值cost为:20
3、挑选一个非中心点O′,让假定挑选的为X7,即O′=(7,3)。那么此时这两个中心点暂时变成了c1(3,4) and O′(7,3),要计算一下这一替换措施所带来的损失。
cost = 3+4+4+2+2+1+3+3 = 22 比之前的cost=20要大,所以这次替换的损失变大,最终不进行这次替换。这仅仅是尝试X7替代c2点,应该计算除了c1和c2点外的所有点分别替代c1和c2,将这些替换后的损失都计算出来,看看有没有比20小的损失,如果有就将这个最小损失对应的中心点对作为新的中心点对。至此才完成了一次迭代。重复迭代直至收敛。
第八章 分类
分类
分类是找出数据库中具有共同特点的一组数据对象,并按照分类模型将其划分成预先定义的不同类型。
银行贷款员通过数据分析,将贷款申请者划分为“安全”和“有风险”这两类;电子邮件服务商通过邮件内容来判别是正常邮件还是垃圾邮件。
2、决策树
构建决策树的流程如下:
(1)得到原始数据集;
(2)根据属性选择度量对数据集进行最优划分,由于特征值可能有多个,因此存在数据集的划分大于两个分支的情况;
(3)采用递归的原则对数据集进行处理,首次划分后,数据将会向下传递,到达树的分支的下一个节点,在该节点上,可对数据进行再次划分,不断重复该操作,直到达到递归结束条件,才结束递归;
(4)递归结束的条件是,算法遍历完所有划分好的数据集的属性,或每个分支下的所有实例都具有相同的分类。
ID3算法(Iterative Dischotomiser 3)
ID3算法依据“最大信息熵增益”原则,这里的熵描述的是数据集的混乱程度,数据越混乱,相应的熵就越大,算法每次都选择熵减少程度最大的特征,并用该特征对数据集进行划分,根据该原则,自顶向下遍历决策树空间。
ID3算法的基本思想是,随着决策树深度的增加,节点的熵迅速地降低,熵降低的速度越快越好。
熵:表示随机变量的不确定性。
条件熵:在一个条件下,随机变量的不确定性。
信息增益:熵 - 条件熵。表示在一个条件下,信息不确定性减少的程度。
一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。信息熵也可以说是系统有序化程度的一个度量。
处理信息就是为了把信息搞清楚,实质上就是要想办法让信息熵变小。
信息量大小的度量:信息熵
事件ai的信息量H(D)可如下度量:
其中p(i)表示事件ai发生的概率。
信息量大小的度量:条件熵
用信息增益度量熵的降低程度
假设属性D有n个可能的取值{a1,a2,…,an},使用属性A分割样例集合S 而导致的熵的降低程度
Gain (D, A)是属性D的信息增益。
举例:
假设我们有一个关于动物的数据集,其中包含7个样本,每个样本有4个属性:是否有翅膀、是否有爪子、是否会游泳和是否有鳞片,以及一个类别标签,表示该动物属于哪一类别(例如,鱼类、鸟类、哺乳类等)。数据集如下:
在本例中,是否有翅膀有两个取值,即是和否,因此 V=2 。我们可以根据数据集中是否有翅膀的取值,将数据集划分为两个子集:
子集1:是否有翅膀=是。该子集有3个样本,其中2个属于鸟类,1个属于哺乳类。
子集2:是否有翅膀=否。该子集有4个样本,其中2个属于哺乳类,2个属于鱼类。
可以发现,是否有爪子的信息增益最大,因此选择该属性作为划分属性。
ID3算法的不足:
1、ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。
2、在相同条件下,取值比较多的特征比取值少的特征信息增益大。比如一个变量有2个值,各为1/2,另一个变量为3个值,各为1/3,其实他们都是完全不确定的变量,但是取3个值的比取2个值的信息增益大。(信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大)
C4.5算法
C4.5算法属于经典的决策树算法之一,是基于ID3算法的改进,用于决策树的产生。该算法的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对类别未知的实体进行分类。
C4.5算法与ID3算法一样使用了信息熵的概念,但不同的是,ID3算法使用信息增益进行子树的属性选择,而C4.5算法使用的是信息增益率,并且该算法能够处理非离散数据和不完整数据。在使用该算法构造决策树的过程中,会进行基于误差的后剪枝操作,避免训练过度的情况产生。
C4.5比ID3的改进:
1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2) 在树构造过程中进行剪枝;
3) 能够完成对连续属性的离散化处理;
4) 能够对不完整数据进行处理。
C4.5算法优点:产生的分类规则易于理解,准确率较高。
C4.5算法缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
信息增益率等于信息增益对分割信息量的比值。
GainRatio(S,F)=Gain(S,F)/SplitI(S,F)
设样本集S按离散属性F的V个不同的取值划分为共V个子集
定义分割信息量SplitI(S, F):
那么信息增益率为: