【数据挖掘】学习笔记

文章目录

第一章 引论

1.1 为什么进行数据挖掘

  • 迈向信息时代,数据爆炸式增长
  • 数据分析需求强烈

数据库和数据管理技术发展的几个阶段:数据收集和数据库创建、数据管理、高级数据分析

丰富的数据、对多种数据分析工具的需求,被称为”数据丰富但是信息量少“的环境

1.2 什么是数据挖掘?

数据挖掘从大量数据中挖掘有趣模式和知识的过程
数据源包括数据库、数据仓库、Web、其他信息存储或动态地流入系统的数据。

数据挖掘的步骤
1 数据清洗(去除噪声和不一致的数据)
2 数据聚合(多种数据源的融合)
3 数据选择(和分析任务相关的数据从数据库中检索出来)
4 数据转换(数据被使用摘要和聚合的方式转换和联合成合适用于挖掘的形式)
5 数据挖掘(最重要的步骤,智能的抽取数据模式的方法)
6 模式评估
7 知识表达

1.3 可以挖掘什么类型的数据

数据挖掘可以用于任何类型的数据,只要数据对目标应用是有意义的

数据的最基本形式是数据库数据、数据仓库数据和事务数据

  1. 数据库数据:关系数据库是表的汇集,每个表被赋予唯一的名字。每个表包含一组属性,并存放大量元组。。关系数据库可以通过数据库查询语句来检索记录。对关系数据库挖掘时,是想要发现趋势或者数据模式
  2. 数据仓库:是多种数据来源的信息仓库,以统一的模式存放,通常是在一个站点。数据仓库通过一系列的数据清洗、聚合、转换、加载和周期性的更新构建。数据仓库以重要的主题组织,从历史的视角提供信息,常常是概要型的。数据仓库模型是高维数据结构,每一维对应于相应的一个或者一组属性。称为数据立方。通过提供高维数据视角和概要数据,数据仓库为OLAP联机处理提供支持。高维数据挖掘以OLAP的方式在高维空间挖掘。
  3. 事务数据:事务数据库存放交易记录,例如顾客的一次购买,机票的预订,或者用户点击了一个web页面。交易数据被存放在表中,每条记录表示一次交易记录。假如我们想知道哪些商品放在一起出售更好,如果我们知道打印机通常会和电脑一起被购买,则可以对买电脑的顾客提供打印机购买折扣,或者完全免费,以期销售更多电脑。
    传统的数据库系统不能做这种商业分析。但是基于交易数据的数据挖掘能够发现这种频繁模式,即发现那些商品会被一起经常购买。

1.4 可以挖掘什么类型的模式

数据挖掘任务可以被归类为两种类别:

  • 描述性的
  • 预测性的

描述性的挖掘任务是描述目标数据集的数据属性。
预测性的挖掘任务是归纳现有数据以用来做预测。

1.4.1 类/概念描述:特征化和区分

• 对于一个电商企业,销售商品可分为计算机和打印机,客户可分为大客户和节约型客户。
• 对这些单个的类别和概念使用总结、概要或者精确的术语进行描述非常有用。这种对类别或者概念的描述称为类/概念描述
• 描述可以通过:

  1. 通过总结目标类别的一般术语进行数据特征化
  2. 把目标类别和一个或一组对比类别做比较的数据区分
  3. 同时使用上面2种方法。

数据特征化总结目标类别数据的一般特征

  • 数据一般通过查询来收集。例如,想研究上一年销售额增长了10%的软件产品,可以通过SQL查询语句来进行。
  • 有多种数据描述的方法。
    • 可以使用基于统计测量和散点图的简单数据总结。基于数据立方的OLAP操作可以使用在特定维度空间的用户控制的数据特征化。面向属性的归纳技术也可以用来描述数据。
  • 描述的结果可以通过多种图表展现,包括饼图、柱状图、曲线、高维数据立方体和多维表、交叉表等。也可以使用规则形式的广义关系来表示
    • 例如,总结每年在AllElectronics 花掉5000美元以上的客户特征。描述结果可能是这些客户的一般信息,如他们是40-50岁之间的,有工作的,有很高信用度的。

数据区分比较目标类别数据对象和一个或者一组对象的一般特征
(例如,用户想比较去年的销售额增长了10%的软件产品和销售额下降了30%的产品的一般特征。)

  • 数据区分的技术和结果展示和数据描述很相似。
      例如,客户关系经理想比较那些经常购买计算机产品和很少购买这类产品的客户特征。描述结果给出这些客户的一般对比信息,比如经常购买电脑产品的80%的客户是20到40岁之间的有大学文凭的,很少买这类产品的人中60%是老年人或者青少年,没有大学学历。

1.4.2 挖掘频繁模式、关联规则和相关性

  • 频繁模式(frequent pattern),含义是数据中经常发生的模式
    包括频繁项集,频繁序列,频繁子结构
    • 频繁项集指的是在交易数据集中经常同时发生的商品。
    • 频繁序列,比如顾客先买了笔记本电脑,再买了数码相机,接着买了内存卡,这是一个序列模式。
    • 频繁子结构指的是结合项集或者子序列的不同的结构形式(图、树、
      或者格)。
  • 挖掘频繁模式,会发现有趣的数据之间的关联和相关度。

1.4.3 用于预测分析的分类和回归

主要技术如:分类规则、决策树、神经网络等。

分类是找到模型可以描述和区分数据类别或者概念的方法。模型从一系列的训练数据中分析得,用于预测未知类别的数据标签。

回归是连续值模型,预测缺失的数值型数据而非分类标签。

相关性分析是在分类和回归之前的步骤,我们需要选择那些属性跟分类和回归的过程显著相关。不相关的属性不被包含在考虑之列。

1.4.4 聚类分析

聚类分析针对没有标签的数据进行。基于最大化类别内部的相似度,最小化类别之间的相似度的原则来分组。
  例如,从电商数据中识别同类型的顾客人群。

1.4.5 离群点分析

数据集可能包含不遵守一般行为和模型的数据。这些目标称为离群点(outlier)。
检测离群点可以使用统计检验方法、距离测量、或者基于密度的方法。
  例如,通过与常规的消费相比较发现大笔金额的异常消费,可以发现信用卡的盗刷问题。离群值可能跟消费的地点、支付类型或者频率有关。

1.4.6 所有的模式都很有趣吗?

一般来说,答案是否定的。只有一小部分模式在实际上对特定的用户是有用的。
一个模式是有趣的有如下几个条件:
1) 能很容易被人理解
2) 对于新的或者测试数据以一定的确信度也是合理的
3) 潜在有用的
4) 新奇的

一个有趣的模式能表达知识

客观测量方法
一些有关模式是否有趣的客观测量方法如:
• 关联规则挖掘的客观衡量是规则的支持度,表示给定的规则在交易数据库中所占的百分比。另一个是置信度,表示关联规则的确定程度。
• 一般来说,每一个有趣程度的测量方法都有一个用户能控制的阈值。
• 另一种客观的有趣度的衡量包括精确度覆盖率

主观兴趣度度量
主观兴趣度度量基于用户对数据的看法。
• 如果模式是没有预料的。提供了可以指导用户行为的策略
  比如,“大量地震之后会常常有一系列小震”是很可行性的如果基于这个信息能挽救生命。
• 如果模式是人们期待的,那么如果它验证了人们的假设,则被认为是有趣的。

数据挖掘能产生所有有趣的模式吗?
• 这是数据挖掘的完整性问题。数据挖掘系统产生所有可能的模式是不现实和不高效的。
• 对一些数据挖掘任务来说,比如关联规则挖掘,能充分保证算法的完整性。这是一个限制和有趣度测量能保证数据挖掘完整性的一个例子。

一个数据挖掘系统能只产生有趣的模式吗?
• 这是数据挖掘的优化问题。
• 只产生有趣的模式是会高度令人满意的。因为对于用户和挖掘系统来说,不需要从生成的模式中鉴别是否有趣,因此是很高效的。但是,虽然这方面研究有进展,但优化问题仍然是一个挑战性的问题。
• 模式兴趣度度量对于高效的模式挖掘是很关键的。
• 这些测量能够给予有趣度对于模式进行排序,过滤掉没有价值的模式。更重要的,这些测量能够对发现模式的过程起导向和限制作用。提高了搜索效率,剪掉一些不满足预先指定的兴趣度限制的子集。

1.5 使用什么技术

数据挖掘作为一种应用驱动程度很高的领域,很多技术被使用到,例如:统计学、机器学习、模式识别、数据库和数据仓库、信息检索、可视化、算法、高性能计算等等。

1.5.1 统计学

  • 统计学研究包括数据的收集、分析、解释和展示。
  • 统计学模型是依据随机变量和它们的分布来描述目标对象的行为的数学函数的集合。统计学模型被广泛应用于数据和数据类别的建模。
  • 比如,对于数据描述或者数据分类的数据挖掘任务,可以建立目标类别的统计模型。即数据挖掘的结果可以是统计模型。另外,数据挖掘模型也可以建立在统计学模型上。我们可以利用统计学来对噪声和缺失数据进行建模。统计学模型也可以用来验证数据挖掘的效果。

1.5.2 机器学习

机器学习是研究计算机如何从数据中学习。机器学习是发展很快的方法。这里,我们着重对分类问题的机器学习进行阐述,分为:

  1. **监督学习
  2. 非监督学习
  3. 半监督学习**
    (含标注数据和未标注数据。标注数据用来学习类别,非标注数据用来精化类别之间的边界。)
  4. 主动学习
    让用户在学习过程中起主动作用。比如,可以要求用户对一个样例进行标注,这个样例可能从一系列未标注的样本或者合成的数据中学习而来。目标是通过主动获取人类知识来优化模型,对要使用多少标注的数据提供限制。
    对于分类和聚类任务,机器学习算法主要专注模型的精确性以及延展到大数据上的可扩展性

1.5.3 数据库系统和数据仓库

  • 数据库系统的研究主要关注数据库的建立、保存和使用。
  • 许多数据挖掘任务需要处理大量的数据,或者实时,快速变化的流数据。因此,数据挖掘能够很好的利用可扩展的数据库技术来获得大数据上的高精确度和可扩展性。数据挖掘也能被用来扩展现有数据库系统的能力,满足高级用户的复杂数据分析的需求。

1.5.4 信息检索

信息检索(Information Retrieval, IR)是在文档中搜索文档或信息的科学。文档可以是web上的文本或者多媒体。
IR和传统数据库系统的区别是:

  1. 数据是非结构化
  2. 查询通常以关键字的方式,没有复杂的结构(不像sql查询)
    • 信息检索的主要技术是使用概率模型。文档的语言模型是生成文档的词袋的概率密度函数。文档之间的相似度可以通过相应的语言模型来衡量。
    • 文本文档的主题可以通过词语的概率分布来建模,即主题模型
    在线大量的文本和多媒体数据聚集并容易获得。比如数字图书馆,数字政府,医疗信息系统。这些数据的有效搜索和分析为数据挖掘提供了很多挑战。因此,文本挖掘和多媒体数据挖掘、信息检索技术融合就变的十分重要。

1.6 面向什么类型的应用

• Business Intelligence(商业智能)
• 网页分析:从网页分类、聚类
• 协同分析与推荐系统
• 购物篮数据分析与针对性营销
• 生物与医学数据分析:分类、聚类分析(微阵列数据分析)、生物序列分析

1.6.1 Business Intelligence(商业智能)

 对于商业机构来说,更好的了解组织的交易环境是非常重要的。比如他们的顾客、市场、供应、资源以及竞争者。商业智能技术提供历史的、现在的和预测性的商业操作。
 如果没有数据挖掘,企业无法做出有效的市场分析,比较客户对于相似产品的犯困,发现竞争者的优点和弱点,留住有价值的顾客,做出敏捷的商业决策。显然,数据挖掘是商业智能的核心。在线的过程分析工具依赖于数据仓库和高维数据挖掘技术。分类和预测技术是商业智能的预测分析的核心,因为有很多市场分析,供需和销售的应用。聚类在客户关系管理上发挥中心作用。顾客依据相似性被聚类。使用描述化的数据挖掘技术,我们可以更好的理解不同顾客群的特征,发展不同的客户定制程序。

1.6.2 web搜索引擎

 Web搜索引擎是在web上搜索信息的特殊的计算机服务器。搜索结果通常是一个列表,列表可能包含网页、图像或者其他类型的文件。
 Web搜索引擎是很大的数据挖掘应用。大量的数据挖掘技术被应用到搜索引擎的多个方面,从爬取(决定哪些页面被爬取和爬取频率)、索引(选取建立索引的页面并决定索引被建立时扩充的范围)到搜索(页面如何被排序,哪些广告被加载,搜索结果如何被个性化和上下文感知)。
 搜索引擎给数据挖掘带来巨大的挑战:

  1. 必须处理大量和不断增长的数据。搜索引擎通常使用计算机云来协同挖掘大数据。如何将数据挖掘技术扩展到云计算和大量分布数据集是今后的研究方向。
  2. web搜索引擎常常要处理在线的数据。它可以建立一个查询分类器,把每一个查询请求分配到预先定义的类别中(比如,“苹果”指的是水果还是电脑品牌?)不论模型是否是离线创建的,在线应用模型都必须实时快速的回复用户查询。
  3. 另外一个挑战是,维护和增量式更新一个快速增长的流数据模型。例如,查询分类器需要能动态连续的维护,因为新的查询请求不断涌现,事先定义的类别和数据分布可能会改变。现有的绝大部分模型都是离线的、静态的,不能被应用在这样的场景中。
  4. 搜索引擎常常需要处理只出现很少次数的查询请求。假定搜索引擎想提供上下文相关的查询推荐。即当一个用户提交一个查询时,搜索引擎尝试在几秒钟之内利用用户的个人资料和查询历史来返回一个更为定制的答案。即使查询总数可能非常大,但多数查询可能只会出现几次。对数据挖掘和机器学习技术来说,这种偏斜的数据是一种挑战。

1.7 数据挖掘的主要挑战

1.7.1 挖掘方法

  1. 挖掘多种新类型的知识
    数据挖掘覆盖了数据分析和知识发现任务的广泛范围。这些任务基于同一种数据库使用不同的挖掘方法。因为应用类型非常多样化,新的挖掘任务不断出现,使数据挖掘成为一个动态和快速增长的领域。例如,对于信息网络的有效知识发现,融合聚类和排序技术能在大型网络中发现高质量聚类和对目标进行排序。
  2. 从高维空间挖掘
    在很多种情况下,数据能被看成是一个高维数据方块。挖掘数据方块能从本质上提升数据挖掘的功能和灵活性。
  3. 多学科交叉的数据挖掘
    数据挖掘能通过融合多种学科知识来得到本质提升。例如,自然语言文本挖掘就是融合了数据挖掘技术到信息检索和自然语言处理技术。另外,在大型程序中挖掘软件错误,是结合了软件工程知识到数据挖掘过程中。
  4. 提升挖掘能力到网络环境
    很多数据对象是互相链接和内在关联的。比如web, 数据库关系,文件或者文档。多种数据对象的语义关联可以被用来提升数据挖掘技术。在一种数据对象挖掘的知识能被用来提升到关联或者语义关联的数据对象的知识发现上。
  5. 处理数据的不确定性、噪声和不完整性
    数据清洗、预处理、离群点发现和删除、不确定性的质疑都是需要被融合到数据挖掘过程中的技术。
  6. 模式评估和模式导向(或限制导向)的挖掘
    需要使用使用一些主观测量技术去评估模式是否有趣。基于给定的用户分类和基本信仰和期望,来对模式给出一个评分,以此对挖掘过程给出导向,产生更有趣的模式和减少搜索空间。

1.7.2 用户交互

用户在数据挖掘过程起重要的作用,如何和挖掘系统交互,如何在挖掘中结合用户的背景知识,如何可视化和理解挖掘结果。

  1. 交互挖掘
    数据挖掘过程应该是高度交互性的。意即需要建立灵活的用户界面和探索性的挖掘环境,来更加有利于用户的交互。
    用户可能在开始抽样一些数据,然后描述数据的一般特征,评估可能的挖掘效果。交互式挖掘需要能够让用户能动态的改变搜索焦点,基于结果精化挖掘请求,挖掘,切块,旋转,在挖掘时动态的对数据立方进行探索。
  2. 结合背景知识
    背景知识、限制、规则以及其他的领域相关的信息需要被融合到知识发现过程中。这些知识能被用于模式评估和为挖掘有趣模式作为向导。
  3. 特殊的数据挖掘和数据挖掘查询语言
    高层次的数据挖掘查询语言或者其他的高层次的灵活的用户界面能给用户定义特殊无组织的数据挖掘任务的自由。这将有利于数据相关性分析、领域知识、以及条件和限制被加入到模式发现中。对于这种灵活的挖掘请求的过程的优化是一个很有前景的研究方向。
  4. 数据挖掘结果的展示和可视化
    数据挖掘结果需要能生动灵活的展示,以便于发现的知识被更好的理解和直接应用。这需要系统能够采用更丰富的知识表达、更友好的用户界面和可视化技术。

1.7.3 效率和可扩展性

  1. 数据挖掘算法的效率和可扩展性
    数据挖掘算法的运行时间需要是可预测的、短的、可以被应用接受的。
  2. 并行的、分布式的和增量挖掘算法
    许多数据集的规模很大,分布式分布,很多数据挖掘算法的高复杂度催生了并行和分布式的数据集中式挖掘算法。
    云计算和计算机簇,促进了并行数据挖掘的问题。数据挖掘过程的高代价和不断增长的输入促使了增量式数据挖掘,即能够合并新数据的更新而不需要从头开始从整个数据集挖掘。

1.7.4 数据库类型的多样化

  1. 对于复杂数据类型的处理
    期望在多种数据类型和多种数据挖掘目标的情况下,使用一种数据挖掘系统能挖掘所有类型的数据是不现实的。可以建立基于领域的或基于应用的精细数据挖掘系统,对特定数据类型做深度挖掘。建立高效的和有效的针对各种应用的挖掘工具是一个有挑战性和活跃的研究领域。
  2. 挖掘动态、网络化的和全局的数据仓库
    • 网络把不同来源的数据连接在一起,形成了巨大的、分布式的、异质的全局信息系统。对多种数据来源的结构化、半结构化和非结构化并且内在连接的数据是对数据挖掘的巨大挑战。
    • 对这些数据的为挖掘将有助于发现比在小规模的孤立数据仓库中更多的异质网络中的模式和知识。Web挖掘、多数据源挖掘、信息网络挖掘将成为有挑战性和快速增长的数据挖掘领域。

1.7.5 数据挖掘和社会

  1. 数据挖掘的社会影响
    我们如何利用数据挖掘造福社会?如何保护不被错误使用?对用户数据的不合适暴露或者潜在的侵犯用户隐私以及数据隐私权是需要被考虑的问题。
  2. 隐私保护的数据挖掘
    隐私保护的数据发布和数据挖掘是正在进行的研究领域。原则是在成功的进行数据挖掘的同时察觉数据敏感性和保护个人隐私。
  3. 隐形数据挖掘
    • 我们不能期待社会中的每个人学习和掌握数据挖掘技术。很多数据挖掘系统让人们不需要理解数据挖掘算法,只是简单的点击鼠标就可以运行数据挖掘和使用挖掘结果。
    • 智能搜索引擎和基于网络的商家使用这种隐形挖掘技术来提升它们的功能和效果。比如,人们在线购物时,并不知道商家很可能在收集顾客的购买模式,这些将被用来在以后向其推荐其他商品。

第二章 认识数据

2.1 数据对象和属性类型

数据集的三种类型

  1. 记录
  • 关系数据
    在这里插入图片描述

  • 数据矩阵(Data Matrix):如果一个数据集中的所有数据对象都具有相同的数值属性集,则数据对象可以看做是多维空间中的点,其中每个位代表描述对象的一个不同属性。这样的数据集可以用一个mXn的矩阵表示在这里插入图片描述

  • 文本数据(Document Data ):每篇文档可以表示成一个文档-词矩阵

  • 事务数据(Transaction Data):典型的记录数据:事务数据或购物篮数据在这里插入图片描述

  1. 基于图形(Graph)的数据
  • World Wide Web:带有对象之间联系的数据 HTML Links
  • 分子结构(Molecular Structures):对象具有结构,即对象包含具有联系的子对象
  1. 有序(Ordered)数据
  • 空间数据(Spatial Data):具有空间属性,如位置或区域
  • 时间数据(Temporal Data):时间次序重要, 但具体时间不重要
  • 序列数据(Sequential Data ):个体项的序列

数据集是由数据对象构成的。一个数据对象表示一个实体
在销售数据库中,对象可以是顾客、商品或者销售记录。在医学数据库中,数据对象可以是病人。在大学数据库中,数据对象可以是学生、教授和课程。也称为样例、示例、实例、数据点、对象、元组

  • 数据对象用属性来描述。
  • 数据对象可以是一个抽样、举例、实例、数据点或者对象。如果数据对象存放在数据库中,它们是数据元组。即数据库中行对应数据对象,列对应于属性

2.1.1 什么是属性?

属性(attribute):一个数据字段,表示数据对象的一个特性或特征。

  • “属性”、“维度dimension”、“特征feature”和“变量variable”这些词在语义上是可交换的。“维度”通常被用在数据仓库中,机器学习中倾向于使用“特征”;统计学倾向使用“变量”,数据挖掘和数据库经常使用“属性”。
  • 属性描述一个顾客对象,如:顾客ID,姓名,地址。
  • 对给定的属性的可观察值被称为观察。刻画一个给定对象的属性集合被称为属性向量(或特征向量)。
  • 包含单个属性的数据分布被称为单变量的;包含2个属性的被称为双变量。

属性的类型

  1. 标称(Nominal),如:邮编、雇员ID
  2. 序数( Ordinal ),如:成绩、街道号码
  3. 区间(Interval),如:日期、温度
  4. 比率(Ratio),如:绝对温度、长度、年龄、计数

2.1.2 标称属性

标称属性的值是事物的标号或者名称。每一个值表示类别、编码或者状态。因此标称属性被称为是分类。值没有次序信息。在计算机领域,也可以称为枚举型。
• 头发颜色={赤褐色、黑色、金色、棕色、灰色、红色、白色}
• 婚姻状况{已婚、未婚}、职业、身份证号码、邮政编码
• 居住地址{北半球、南半球、空间站}
尽管标称属性是标号或者名称,但也可以是数值的表示形式。比如,发色,可以用0表示黑色,1表示棕色等。顾客ID可以是数字。但是,在这种情况,数字并不被当成数值来使用。因为标称属性不包含任何顺序信息也非数值型,所以不用中值或者平均数去衡量这类属性。可以使用属性最多出现的值,“众数”来做中心性测量。

2.1.3 二元属性

二元属性是只有两个类别或状态:0和1.
0一般表示属性缺失,1表示存在。二进制属性也即布尔型,两个状态表示真和假。

  • 举例。如,病人对象的吸烟属性,1表示吸烟,0表示不吸烟。再比如,病人的某个医学检查结果有两种情况。1表示结果为阳性,0表示为阴性。
  • 如果二元属性的两个状态是同等有价值的具有相同的权重,则为对称的。2个属性被标为1或者0都可以,比如性别属性的两个值男和女。
  • 如果两个状态不是同等重要的,则为非对称的。比如HIV检查的结果呈阴性和阳性。通常,用1表示更重要的通常是更稀少的结果,其他的用0表示。

2.1.4 序数属性

序数属性具有次序或者级别的意义。但是相邻值的差未知。

  • 举例:例如饮料尺寸,可以是“小杯”,“中杯”,“大杯”。值有顺序的意义,但是不能分辨中杯比大杯大多少。再比如,成绩等级A+, A,A-,B+;职称:助理,副教授,教授
  • 序数属性被用来衡量无法客观衡量的属性,用主观的评估定质量。在调查中常用来排序。比如,参与者作为顾客,他们的满意度可以是:0:非常不满意,1 有点不满意,2 中立 3 满意 4 很满意
  • 把数值数据离散化,把它们按照值的范围分类,也可以得到次序属性的数据。
  • 次序属性的中心性可以用众数中值来衡量,但是不能计算平均数

标称属性、二元属性和序数属性都是定性的。它们在描述一个对象的特征时不给出具体的尺寸和数量。值通常是一个词表示类别,即使以整数的方式表现,也不是表示数量。

2.1.5 数值属性

数值属性是定量的,是可测量的数值,为整数或实数。分为区间标度和比例标度。

  1. 区间标度属性
  2. 比例标度属性

区间标度属性
• 区间标度(interval-scaled)使用同等大小的单元来衡量。区间属性有大小,可以是正,零或者负值。除了能对属性值排序,还可以比较和衡量不同值的差值大小。
• 举例:温度属性是区间标度的。20摄氏度高于15摄氏度。日历、年份也是区间标度。
• Celsius和Fahrenheit是两个温度,没有绝对0点,并且我们能计算温度的差值,但是不能说一个值是另一个值的多少倍,例如10摄氏度比5摄氏度温暖2倍。
• 区间标度是数值型的,可以计算平均值,中值和众数。

比例标度属性
• 比例标度属性(ratio-scaled)是具有固定零点的数值属性。
如果一个测量是比例尺度,则可以以比率来衡量两个值,也可以计算值的差值,以及中值,均数和众数。
• 例如:Kelvin温度有一个真正的0点。另外,计数属性,经验年数,单词个数,体重,身高,速度,货币都是比例尺度。

2.1.6 离散和连续属性

离散属性有有限的或者可数的值集合,可能不能表示为整数。例如发色,是否吸烟,医学检查结果,饮料尺寸,都有有限的值,因此是离散的。
• 离散值可能是数值型的,比如二进制的0和1,年龄的0到110.
• 一个属性是可数无限的,如果可能的值集合是无限的,但是值和自然数有一一对应的关系。比如,顾客ID是可数无限的。邮政编码也是。
• 如果值不是离散的,则是连续的。数值属性或者连续属性是含义上是一样的。

2.2 数据的基本统计描述

为了更好的做数据预处理,对数据有整体的了解很关键。
基本的统计描述能鉴别数据,分辨出噪声和离群点。

2.2.1 中心趋势度量:平均数,中位数,众数

• 假定我们有一些属性𝑥,例如薪资,有一系列数据对象的记录。令𝑥1, 𝑥2,….𝑥𝑁是属性𝑥的𝑁个观察到的值。如果我们画出薪资的点图,绝大部分的值会落在哪里呢?这就是数据的中心性问题。
• 衡量中心性的测量有均值、中值、众数和中列数。

平均数:最常用和最有效的测量是数据的(算术)平均数。计算公式是:
在这里插入图片描述
 有时候,每一个𝑥𝑖有一个关联的权重𝑤𝑖,权值表示相应值的重要性、显著性或者发生频率。称为加权算术平均值或者加权平均这时候,加权算术平均的计算公式为:
在这里插入图片描述
 平均值对极端值比较敏感。比如一个公司的员工平均薪水可能被少数高新的经理提高很多。同样,班级的平均分也可能被少数的低分拉低很多。
 为了处理这种由少数极端值带来的效果,可以使用削减均值,即去掉极端大和极端小的值之后的平均值。比如,把薪水排序,然后去掉2%的最大值和最小值。应该避免削减太多(比如20%),这会导致数据信息的丢失。

对于偏斜(不对称)的数据使用中值(中位数)是更好的中心性测量
中值是一系列排序好的数据的中点的值。该值把数据集分成2个部分,一半值大的,一半值小的。
• 在概率统计中,中值一般用在数值型数据上。这里,中值可以扩展到次序属性上。将数据集的N个值按升序排列。如果N为奇数,中值即是排序集合的中点的值;如果N为偶数,中值可以是中点的2个值中的任意值。如果X是数值型数据,传统上中值取两个中点数的均值。
• 当数据集很大时,计算中值代价很高。对于数值型属性,比较容易。如果数据根据 xi 的值以区间分组,每个区间已知。比如,雇员按照年薪间隔分组。称包含中值的频率的区间为中值区间。这样可以近似计算整个数据集的中值:
在这里插入图片描述
 公式中,L1是中值区间的最低值,N是数据值的个数,(Σ 𝑓𝑟𝑒𝑞)𝑙 是所有低于中值区间的间距的频率之和。𝑓𝑟𝑒𝑞𝑚𝑒𝑑𝑖𝑎𝑛是中值区间的频率,𝑤𝑖𝑑𝑡ℎ是中值区间的宽度。

众数(mode)是另一个衡量中心性的测量
众数:是一系列数据中出现频率最高的值
• 众数可以是定性的也可以是定量的属性。有可能好几个不同的值都出现大量的频率,导致众数不止一个。众数有1个、2个、3个的分别称为unimodal(单峰值), bimodal(二峰值), trimodal(三峰值).
• 一个极端的例子,如果每个数据值都仅出现一次,则没有众数。
• 对于单峰值的数值型数据来说,数据是适度偏斜的(不对称),有以下的经验性关系:
m e a n − m o d e ≈ 3 × ( m e a n − m e d i a n ) mean − mode ≈ 3 × (mean − median) meanmode3×(meanmedian)
这表明,如果平均数和中值已知,适度倾斜的单峰频率曲线的众数可以近似得到。

在对称的单峰频率曲线数据分布中,平均数,中值和众数都在同样的中点值上。实际应用中,绝大部分都不是对称的。如果众数的值小于中值,称为正偏斜;如果众数的值大于中值,称为负偏斜
在这里插入图片描述

中列数(midrange):是数据集中最大值和最小值的平均值。可以用来评估数值型数据的中心性趋势

2.2.2 数据分散性的度量

1、极差、四分位数、四分位差
• 令𝑥1, 𝑥2, … , 𝑥𝑁是某个数值属性X的一系列观察,数据集的极差(range)表示的是最大值和最小值的差
• 假设数据按照属性𝑥以升序排列。想象我们可以挑选特定的数据点,这样可以把数据分割成大小相等的连续数据集,如图2-2.
• 数据点称为分位点(quartile)。分位点是数据分布上有规律率的间隔的数据点,将其分成相等大小的连续的数据集。

在这里插入图片描述
 图2.2某个属性X的数据分布图。绘制的分位数是四分位数
给定数据分布的第k个q-分位点x, 是至多k/q的数据值小于x,至多q-k/q的数据值大于x,k是大于0小于q的整数。共有q-1个q-分位点。
• 2-分位点是把数据分布分割成较小值和较大值两半的数据点。即中位数
• 4-分位点是把数据分布分成4个等量大小的3个数据点,每一个部分表示数据分布的1/4.它们被称为四分位数。100-分位数更通常被称为百分位数,它们将数据集分成100个大小相等的连续集合。
中位数,四分位数和百分位数是使用最广泛的分位数。
• 分位数反应了分布的中心,散布以及形状。
• 第1个四分位数,表示为Q1, 是第25个百分位点。它把数据值最低的25%切断。第3个四分位数,表示为Q3,是第75个百分位数。它切断了数据值低的75%。Q1和Q3的距离,简单反映了数据中心的一半数据的范围。这个距离被称为四分位数极差(inter quartile range)。被定义为:𝐼𝑄𝑅 = 𝑄3 − 𝑄1

2、五数概括、箱型图、离群点
  单个的数值分散测量在描述偏斜的分布时都不够有效。在对称的分布中,中值把数据分成大小相等的2部分。但对偏斜的数据来说并非如此。因此,使用Q1,Q3和中值一起会更加有信息量。
一个通用的鉴别可疑的离群点的规则挑选出落在Q3以上或者Q1以下1.5*IQR以上的数据值

五数概括(Five-number summary):是包含了中值,Q1, Q3,最小值和最大值的分布,按次序表示为:Minimum, Q1, Median, Q3, Maximum.

箱线图是常用的描述数据分布的方法。箱线图中:
• 箱子的长度是四分位差
• 中值是箱子中间的线
• 箱子外面的两根须是观察的最小值和最小值。
当处理相当数量的观察时,单个的绘出潜在的离群点是值得的。
箱线图中为了处理这个,须被扩展到最大值和最小值仅当这些值小于1.5*IQR时。否则的话,须的末端是1.5*IQR处。
箱线图的计算时间复杂度是o(nlogn).

3、方差和标准差
• 方差和标准差是测量数据分散度的。比较低的标准差表示数据观察倾向于靠近均值。高标准差表示数据值分布在一个比较大的范围区间。
• 𝑁个观察𝑥1, 𝑥2, … 𝑥𝑁的方差:其中,𝜇是均值。 𝜎是标准差。
在这里插入图片描述
标准差的基本属性:
1、标准差测量的是数据偏离均值的发散程度,因此只有在均值接近数据中心的时候才考虑。
2、标准差为0只有在所有数据值都相等时才发生。
根据Chebyshev’s 不等式,至少 (1 −1/𝑘2) × 100%的数据不会远离均值的𝑘个标准差的范围。所以,标准差是一个很好的衡量数据分散度的指标。
对于m=2,m=3和m=5有如下结果:
• 所有数据中,至少有3/4(或75%)的数据位于平均数2个标准差范围内
• 所有数据中,至少有8/9(或88.9%)的数据位于平均数3个标准差范围内
• 所有数据中,至少有24/25(或96%)的数据位于平均数5个标准差范围内

2.2.3 数据基本统计特征的图形化描述

  1. 分位数图:每个值xi与fi成对,表示数据的大约100fi%是xi
  2. 直方图:表格频率的图形显示,以条形显示
    • 它显示了属于几个类别中每一类的案件所占的比例
    • 与条形图的不同之处在于,它是条形图的面积来表示值,而不是条形图中的高度。当类别的宽度不一致时,这是一个重要的区别
    • 这些类别通常被指定为某个变量的非重叠区间。类别(栏)必须相邻
  3. 散点图和数据相关性
    提供对双变量数据的第一次查看,以查看点、离群值等的聚类
    散点图:每一对值被视为一对坐标,并被绘制为平面中的点

2.3 数据可视化

作用:
• 通过将数据映射到图形基元来洞察信息空间
• 提供大型数据集的定性概述
• 搜索数据之间的模式、趋势、结构、不规则性、关系
• 帮助找到感兴趣的区域和合适的参数,以便进一步定量分析
• 提供派生的计算机表示形式的可视化证明

可视化方法分类:
2.3.1 面向像素的可视化技术
2.3.2 几何投影可视化技术
2.3.3 基于图标的可视化技术
2.3.4 分层可视化技术
2.3.5 复杂数据和关系的可视化

2.4 衡量数据相似性和相异性

相似性

  • 两个数据对象相似程度的数值度量
  • 当对象更相似时,值更高
  • 经常落在[0,1]的范围内

相异性(如距离)

  • 两个数据对象差异的数值度量
  • 当对象更相似时更低
  • 最小不相似度通常为0
  • 上限不同

2.4.1 数据矩阵和相异性矩阵

数据矩阵(对象——属性)

  • 每行一个对象
  • 具有p个维度的n个数据点
  • 二模(two-mode)矩阵

相异性矩阵(对象——对象)

  • n个数据点,但只记录距离𝑑(𝑖,𝑗)
  • 对称,三角矩阵
  • 单模
  • 对于实数、布尔值、分类、序数、比率和向量变量,距离函数𝑑(𝑖,𝑗)通常是不同的
    在这里插入图片描述

2.4.2 标称属性的邻近性度量

可以采用2种或更多的状态,例如,红、黄、蓝、绿(二元属性的泛化)
方法一:简单匹配
• m:#个匹配项,p:#个变量总数
在这里插入图片描述

方法2:使用大量二元属性
• 为M个标称状态中的每一个创建新的二元属性

在这里插入图片描述

2.4.3 二元属性的邻近性度量

二元属性的列联表
在这里插入图片描述
对称二元属性的相异性:
在这里插入图片描述
非对称二元属性的相异性:
在这里插入图片描述
非对称二元属性的相似性(雅卡尔系数):
在这里插入图片描述

例题
在这里插入图片描述

2.4.4 数值型数据的相异性:Minkowski距离

Minkowski距离:一种流行的距离度量
在这里插入图片描述
其中𝑖 = (𝑥𝑖1, 𝑥𝑖2, … , 𝑥𝑖𝑝)和𝑗 = (𝑥𝑗1, 𝑥𝑗2, … , 𝑥𝑗𝑝)是两个p维数据对象,
ℎ是阶数(如此定义的距离也称为𝐿ℎ范数)
属性:
• 非负性 𝑑 𝑖,𝑗 > 0, if 𝑖 ≠ 𝑗
• 同一性 𝑑(𝑖, 𝑖) = 0
• 对称性 𝑑(𝑖,𝑗) = 𝑑(𝑗, 𝑖)
• 三角不等式 𝑑(𝑖,𝑗) ≤ 𝑑(𝑖, 𝑘) + 𝑑(𝑘,𝑗)
◼ 满足这些属性的距离称作度量

ℎ = 1:曼哈顿(城市街区,𝐿1范数)距离
• 例如,汉明距离:两个二进制向量之间不同的位数
在这里插入图片描述
ℎ = 2:(𝐿2范数)欧氏距离
在这里插入图片描述
ℎ → ∞。“上确界”(𝐿max范数,𝐿∞范数)距离,Chebyshev distance
• 这是向量的任何分量(属性)之间的最大差异在这里插入图片描述

例题
在这里插入图片描述

2.4.5 序数属性的邻近性度量

序数属性可以是离散的也可以是连续的
▪ 序数很重要,例如,年级
▪ 可以像数值属性一样处理:

  1. 用等级替换序数变量值:
  2. 将每个变量的范围映射到 [0, 1]
  3. 使用数值属性的方法计算相异性
    在这里插入图片描述

2.4.6 混合类型属性的邻近性

数据可能包含所有属性类型(标称、对称二元、非对称二元、数值、序数)
▪ 可以使用加权公式来合并它们的影响
在这里插入图片描述
如果𝑓为二元或标称:dij(f) = 0 if 𝑥𝑖𝑓 = 𝑥𝑗𝑓 ; 否则 dij(f) = 1
如果𝑓为数值:使用归一化距离
如果𝑓是序数:计算系数zif在这里插入图片描述

例题
在这里插入图片描述

2.4.7 余弦相似性

一个文档可以由数千个属性表示,每个属性都记录了文档中某个特定单词(如关键字)或短语的出现频率。
• 每个文档都被“词频向量”表示
在这里插入图片描述

• 特点:长,稀疏
• 其他载体对象:微阵列中的基因特征,…
• 应用领域:信息检索、生物分类学、基因特征图谱…
• 余弦度量:如果d1和d2是两个向量(例如,词频向量),则
在这里插入图片描述

例题
在这里插入图片描述

第三章 数据预处理

3.1 数据预处理

3.1.1 数据质量:为什么做数据预处理?

如果数据满足了人们的预期用途的需求,则数据质量好。数据质量包含很多因素,如:精确性、完整性、一致性、时效性、可信性以及可解释性。数据的不精确、不完整以及不一致是大型真实世界数据库以及数据仓库的常见特点。

不精确数据有很多可能的原因:

  1. 数据收集工具可能错误,数据记录中很多人为的或计算机导致的错误。
  2. 用户也可能在值当他们不愿意暴露个人资料的时候在一些强制必须填写的栏目故意提交了错误的资料(如生日直接用默认值1月1日)。这是一些被掩盖的缺失数据。
  3. 数据在传输时也可能出错。一些技术上的限制,例如并行同步数据的传输和计算时缓冲区间的有限性。
  4. 不正确的数据也可能因为命名习惯或者数据编码的不一致性,或者输入域的格式不一致。
  5. 重复的元组也需要进行数据清洗。

导致数据的不完整性的原因也有很多:

  1. 感兴趣的属性并不能总是可获得,比如销售交易数据中的客户资料信息。
  2. 另外,很可能因为在当时的条目中,该属性被认为是不重要的。
  3. 相关联的数据没有被记录可能因为误解或者设备故障的原因。

另外的两个影响数据质量的因素是可信性和可解释性。可信性反映用户有多相信这些数据,可解释性反应数据有多容易被理解。

3.1.2 数据预处理的主要任务

数据预处理的主要步骤是:
• 数据清理
• 数据聚合
• 数据删减
• 数据转换

数据清理的工作是清洗数据,通过填写缺失的数据,平滑噪音数据,识别需要去除的离群点,以及解决不一致性。

如果你的分析中数据是多来源的,则需要进行数据集成工作,即集成多种数据库,数据立方,以及文件。一个给定概念的属性在不同数据库中可能有不同的命名,导致了不一致性和冗余。

在不影响数据挖掘的效果的情况下减小数据集呢——数据规约。数据删减能得到一个数据集的删减集,比原来的数据小很多,但是能产生相同的(或几乎相同的)分析结果。数据规约包括维度规约数值规约

  1. 维度规约:
    • 维度规约是一种获得原有数据的删减或者压缩集的数据编码方案。
    • 比如,数据压缩技术(小波分析、主成分分析);属性子集选择(去除不相关属性),以及属性构造(如从原有数据集中建立小的更有用的属性)

  2. 数值规约:
    • 数据被可选的更小的数据替换,使用参数模型(如回归和对数-线性模型)或者非参数模型(直方图,聚类,抽样和数据聚集)。

标准化、离散化和概念层次生成是数据变换的几种形式。
• 在神经网络、最近邻分类以及聚类分析中,可能使用一个基于距离的挖掘算法。如果将数据标准化,按比例缩小到一个更小的范围,如 [0.0, 1.0] 中,可能会得到更好的效果。
• 离散化和概念分层用于将原始数据值替换成范围区间或者高层概念层级。例如,原始的年龄值被高层级的概念:年轻人,成年人和老年人替换。
• 离散化和概念层次生成是数据挖掘的强大工具,因为他们允许数据挖掘在更多抽象级别上进行。

预处理的作用
  总之,真实世界中的数据更可能是脏的、不完整和不一致的。数据预处理技术可以提升数据质量,因而提升接下来的挖掘过程的精确性和有效性
  数据预处理是知识发现过程的一个重要步骤,因为好的质量决策基于好的质量的数据。发现数据的异常,在早期进行修正,减少被分析的数据会给决策制定带来高回报。

3.2 数据清理

3.2.1 缺失值

• 假设你需要分析AllElectronics的销售和顾客数据。你注意到许多元组在一些属性例如顾客收入上没有记录值。如何能填写这些属性的缺失值呢?有如下方法:
一、忽略元组。
二、手工填写缺失值。
三、使用一个全局常数来填写缺失值。
四、使用一个属性的中心性测量来填写缺失值。
五、使用给定元组的类别相同的所有样本的均值或者中值。
六、使用缺失值的最可能的值来填写。(值可以由回归、使用Bayes公式的基于推理的工具,或者决策树推理。)
• 方法3-6 改变了数据,即填写的值可能是不正确的。其中方法6是一种流行的策略。
• 需要重点指出的是,在某些情形,一个缺失的值并非意味着数据的错误!例如,当申请信用卡时,申请者被要求提供驾驶证号码。没有驾驶证的自然就会在这一项不填写。表格应当允许回答者做详细说明,例如“不适合”。
• 软件例程可能被使用来处理其他的空值(例如,“不知道?”或者“空”)。每一个属性有一个或多个针对空值情形的规则。这些规则可以详细指明空值是否被允许或者种类值如何被处理和转换。属性域可以被留作空白,如果在随后的商业过程中能够被提供。
• 因此,即使在数据被获取之后,我们能够尽力去清洗,好的数据库和数据表过程设计能在第一时间最小化缺失值和错误的数目。

3.2.2 噪声数据

什么是噪声?”噪声是被测量变量的随机误差或者方差。
给定一个数值属性,例如价格,如何来平滑数据以去除噪声呢?有如下技术:
1、装箱binning
装箱方法通过参考数据值的“邻居”(即该值周围的数据)来平滑排好序的数据。
• 排好序的数据被分布到一系列的“桶”,或箱子中。因为装箱方法参考值的邻居,所以使用的是局部平滑。有若干种装箱技术:
1)等频装箱。例如,价格属性先被排序,然后被分割到箱子的大小为3的等频箱子中。
2)箱子均值平滑。箱子中的每个值被箱子的均值替代。
3)箱子中值平滑。每个箱子值被箱子中值取代。
4)箱子边界平滑。箱子值被最靠近的边界值(最大值或最小值)取代。
• 箱子的宽度越大,平滑效果也越显著。
• 另外,等宽度的箱子,即每个箱子间隔是个相同的常数也常被使用。箱子技术也是一种数据离散化的技术。
2、回归:
数据平滑也可以使用回归的方法,即将数据值通过一个函数来表达。线性回归是寻找两个属性(或变量)的最好的直线来通过一个属性预测另外一个。多元线性回归是线性回归的扩展。超过两个的属性被包含在其中,数据被拟合成一个高维超平面。
3、离群点分析:
通过聚类的方法可以检测离群点。例如,相似的值被分组,或“簇”。值落在簇之外的被认为是离群点。
4、其他方法:
• 很多数据平滑技术也适用于数据离散化和数据削减。例如,装箱技术削减了每个属性的不同值的个数。在基于逻辑的数据挖掘方法例如决策树中,因为需要不断重复的在排序数据上做值的比较,因此这相当于是数据削减。
• 概念分层是数据离散化的一种,可以用来做数据平滑。一个概念分层例如价格,可以映射真实的价格值到便宜、中等、昂贵上。这样削减了挖掘过程需要处理的数据值的个数。一些分类方法有内置的数据平滑机制。

3.2.3 数据清理作为一个过程

数据清理作为一个过程的第一步是偏差检测。不一致性可能由多种原因导致:
• 设计很差的数据表
• 人为的输入错误
• 故意的错误(不希望泄露个人信息的回答者),
• 以及数据延迟(如过期的地址)
• 还可能因为不一致的数据表达和编码的不一致使用

如何进行偏差检测呢?
  使用任何你事先已经知道的关于数据的相应属性的知识,这种知识被称为“元数据”。例如,数据的类型和每个属性的域是什么?每个属性的可接受的值是什么?基本的统计数据描述(Section 2.2)对于获取数据趋势和鉴别异常很有用。例如,寻找均值,中值和众数。
  数据是对称还是偏斜的?值的取值范围是?所有的值都落在期望的区间吗?每个属性的标准差是多少?值在距离均值两倍标准差的范围外的属性值可能是潜在离群值。属性之间有已知的依赖关系吗?

数据还需要使用唯一性规则,连续性规则和空值规则来检查。
唯一值规则是给定属性的每一个值必须和该属性的其他所有值不同。
连续性规则是在属性的最小值和最大值之间不能有缺失值(例如,检查号码)。
空值规则指明了空白、提问标记、特殊字符或其他的字符串可能指代空值条件(如一个给定属性的值不可获得),以及这样的值如何被处理。

3.3 数据集成

数据挖掘经常需要数据集成——合并多个数据库中的数据。
细致的集成能帮助减少和避免结果数据集中的冗余和不一致性。并在随后的数据挖掘过程中提高准确率和速度。

3.3.1 实体识别问题

  数据集成是将多种数据来源结合到一个数据库中,如数据仓库。这些来源包含多种数据库,数据立方以及文件。  模式聚合和对象匹配可能比较复杂。如何将真实世界中的实体等价地匹配到多个数据源中?这就是实体识别问题
  例如,数据分析师或者计算机如何确信一个数据库中的customer_id和另一个库中的cust_number指的是同一个属性?包含名称,含义,数据类型,属性的取值范围,以及控制规则的元数据在3.2节被探讨过。这种元数据能帮助避免模式聚合中的错误。

  元数据还可以用来帮助数据转换(例如,数据编码pay_type在一个数据库中可能是”H”、“S”,在一个中可能是”1”和“2”).因此,这个步骤和数据清洗也互相关联。
  将一个数据库中的属性匹配到另一个数据库时,需要特别注意数据的结构。必须保证源系统中的任何属性的功能性依赖关系以及参考限制与目标系统匹配。例如,在一个系统中,discount可能被按次序被应用,在另一个系统中则按每一个单个的项目内部的次序被应用。如果在聚合之前没有发现,目标系统中的商品则会有错误的discount信息。

3.3.2 冗余和关联性分析

冗余是数据聚合的另外一个重要的问题。如果一个属性(例如年收入)能从其他的属性或属性集合推导得到,那么它是冗余的。属性的不一致或者维度命名也会导致相应数据集中的冗余
这种冗余可以使用相关分析来检测。给出两个属性,这种分析能基于可获得的数据测量一个属性在多强的程度上暗含了另一个。对于标称数据,可以使用卡方检验。对数值型数据,使用相关系数和协方差

标称数据的卡方关联检验
对标称数据,两个属性A和B之间的相关关系可以使用卡方检验来发现。假设A有c个不同的值,a1, a2,….ac. B有r个不同的值,b1,b2,…br.则包含属性A和属性B的元组可以使用一个列联表来表示,其中A属性的c个不同值构成表的列,B属性的r个不同值构成表的行。
令(Ai, Bj)表示属性A取ai而属性B取bj的联合事件,即(A=ai, B=bj).
在表中每一个可能的(Ai, Bj)联合事件都有一个单元。卡方值的公式是:
在这里插入图片描述

其中,𝑜𝑖𝑗表示观察到的(𝐴𝑖, 𝐵𝑗)联合事件的频率(实际次数)。而𝑒𝑖𝑗表示(𝐴𝑖, 𝐵𝑗)事件的期望频率,计算公式是:
在这里插入图片描述
其中,𝑛是数据元组的个数。

卡方统计检验假定属性A和属性B是互相独立的,即这两个属性之间没有关联。基于显著性水平,自由度是(𝑟 − 1) ∗ (𝑐 − 1)。如果假设被拒绝,则A和B统计相关

例题
假设调查了1500个人,按性别分成男和女。每个人投票是否喜欢阅读小说。这样,就有了两个属性:gender和preferred_reading.观察到的每个可能的联合事件的次数在表3.1中。圆括号中的表示事件的期望次数,按照公式3.2计算出来的。
在这里插入图片描述
可以注意到,每一行中,期望次数的总和必须和这一行的观察次数的总和相等;每一列中,期望次数的和等于这一列的观察次数的和。利用公式3.1,计算卡方值为:
在这里插入图片描述
对于2x2的表,自由度为(2-1)*(2-1)=1. 在自由度为1时,卡方值为10.828则可以在0.001的显著性水平上拒绝值原假设。因为计算出的值大于这个值,所以能以更小的显著性水平拒绝原假设,即性别和是否喜欢读小说之间存在强相关关系。
在这里插入图片描述

数值型数据的相关系数
对于数值型属性,可以通过计算相关系数(皮尔逊相关系数)来估计两个属性A和B之间的相关性:
在这里插入图片描述
其中,n是元组的个数,𝑎𝑖 和 𝑏𝑖 是元组 𝑖 的属性A和属性B的值,𝐴和 ത𝐵表示属性A和属性B的均值,𝜎𝐴和𝜎𝐵是属性A和属性B的标准差。−1 ≤ 𝑟𝐴,𝐵 ≤ +1

  • 相关系数rAB的值在-1到+1之间。如果rAB >0,则称A和B正相关。表示A的值随着B的值的增大而增大。值越大,相关性越强。因此,一个很大的值意味着A(或B)需要被作为冗余删除
  • 如果rAB =0, 则A和B 相互独立 ,它们之间没有任何关系。
  • 如果值<0,则A和B 负相关,表示一个属性的值随着另一个值的降低而增大。
  • 散点图可以用来可视化属性之间的关联关系。显示相似度从-1到1的散点图。
    在这里插入图片描述
  • 注意:相关并不表示因果。即如果A和B相关,但并不意味着A导致B或者B导致A。
    例如,在分析一个人口统计数据库时,我们发现表示医院数目的属性和盗车数目相关。但这并不表示一个属性导致了另外一个。两个属性实际上都是因为人口数这第三个属性导致的

数值型数据的协方差
在概率理论和统计学中,相关性和协方差是评价两个属性是否一起发生变化的两种相似的测量。
考虑两个数值型属性A和B, n个观察{(a1,b1),…(an,bn)}.
属性A和属性B的均值,即期望值为
在这里插入图片描述
则属性A和B的协方差为:
在这里插入图片描述
如果利用公式3.3来计算相关系数rA,B,则:
在这里插入图片描述
其中n是元组的数目,并且是A和B各自的均值或期望值,𝜎𝐴和𝜎𝐵是A和B各自的标准差。

  • 对于一起发生变化的属性A和B,如果A大于𝐴时,B也可能大于𝐵 。因此,A和B之间的协方差为正。如果一个属性的值在均值以下时另一个倾向于在均值以上,则协方差为负。
  • 如果A和B相互独立(没有关联),则协方差为0。但反过来并不成立。即一些随机变量对的协方差值为0,但并不独立。只有在一些额外的假设(如数据满足多元正态分布)时协方差为0表明独立性。
  • 方差是协方差的特例,是两个属性相等,即属性自身的协方差。

例题
考虑下表,这是一个观察到的5次AllElectronics和Hightech公司的股票价格。如果股票是被同一个公司的趋势影响,那么它们的价格是否一起涨落呢?
在这里插入图片描述
在这里插入图片描述
协方差值为正,因此,我们可以说两个公司的股票是一起涨的。

3.3.3 元组重复

  除了检测属性间的冗余,元组级别的冗余也需要被检测。不规范表的使用(一般是为了避免连接提高性能)是另一种数据冗余的来源。在不同的副本之间常常产生不一致性。由于不精确的数据输入或者更新了一部分而非全部的数据。
  例如,一个购买订单数据库包含购买者的姓名和地址属性,而非这个信息的主键信息。不一致性就可能产生,比如在购买订单数据库中同样的购买者姓名却是不同的地址。

3.3.4 数据值冲突的检测与处理

  数据集成还包含数据值冲突的检测和处理。例如,对于同一个真实世界实体,不同来源的属性值可能不同。可能是因为表达、刻度或者编码的不同
  比如,体重属性在一个系统中可能以公制单位存放而在另一个中以英制单位存放。
  学校之间交换信息的时候,每个学校有自己的课程设置和等级模式。一个大学可能采用一个季度系统,一个数据库系统中3门课程,等级从A+到F。另一个可能采用学期值,数据库中提供2门课程,等级从1到10。很难制定两所大学精确的课程——等级转换规则,交换信息很困难。
  属性的抽象级别也可能不同。在一个抽象级别更低的系统中,同一个属性的级别比另一个系统中同样的值更低。
  比如,total_sales在一个数据库中指AllElectronics的一个部门的总体销售,而同样名称的属性在另一个数据库中指的是一个给定地区的总体销售。

3.4 数据规约

3.4.1 数据规约策略概览

数据删减策略包含减少维度,减少数量以及数据压缩

  • 维度规约是减少考虑的随机变量或属性的个数。维度规约方法包括小波变换,主成分分析,即将原有数据转换或者投影到一个更小的空间。属性子集选择是检测和删除不相关的、弱相关的、冗余的属性和维度的减少维度的方法。
  • 数量规约是将原有数据以可选的、更小的数据替换。分参数和非参数两种技术。
    • 参数的方法是,使用一个模型来评估数据,常常只有数据参数被存储,而非实际的数据。回归和对数——线性模型是两个参数技术的例子。
    • 非参数技术存放以直方图、聚类、抽样以及数据立方的形式表示的删减数据。
  • 数据压缩中,应用转换来得到一个原有数据的删减或压缩的表达。如果原有数据能从压缩数据中被重构而没有任何信息损失,则数据删减是无损的。如果只能重构原有数据的近似集,则数据删减是有损的。有一些字符串压缩的无丢失的算法,这些通常只允许有限制的数据处理。减少维度和减少数据块也能被看成是数据压缩的形式。
  • 还有许多其他数据规约的方法。花在数据规约上的时间复杂度不应当超过或等于挖掘一个删减的数据集所节省的时间。

3.4.2 小波变换

离散小波转换(DWT)是一个线性信号处理技术。对一个数据向量X, 使用小波系数,转换成一个不同的数值向量X’。两个向量的长度相同。当应用这种数据规约的技术时,将每个元组看成一个n维的数据向量,X=(x1, x2, … , xn), 表示数据库的n个属性的n个测量。“如果小波转换的数据和原有数据的长度相同,这种技术如何有效呢?

3.4.3 主成分分析

3.4.4 属性子集选择

3.4.5 回归和对数—线性模型:参数化数据规约

3.4.6 直方图

3.4.7 聚类

3.4.8 抽样

3.4.9 数据立方体聚集

3.5 数据变换和数据离散化

3.5.1 数据变换策略概览

数据变换把数据转换或合并成适合数据挖掘的形式。数据变换的策略包括:
1、平滑。用于去除数据中的噪声。技术包括装箱,回归和聚类。
2、属性构造(或特征构造)。从给定属性中构造或增加新属性以便于挖掘过程。
3、聚合。在数据上应用聚合或者概括操作。例如,聚合每日销售数据以计算每月和每年的总体数据。通常这个步骤用在构造用于多层抽象级别数据分析的数据立方。
4、规范化。属性被按比例缩放到一个更小的范围,如-1.0 到1.0, 或 0.0到1.0之间。
5、离散化。数值属性的原始值被区间标签或概念标签置换。标签能被递归的组织成高层概念。形成一个数值属性的概念级。
6、由标称数据产生概念分层。例如street属性可以扩展成高层概念,如city和country. 许多名词属性的层次是隐藏在数据库模式中的,可以在模式定义级别自动定义。

离散化
  离散化技术可以基于离散化方法的不同来分类,例如是使用类别信息还是处理方向(自底向上和自顶向下)。
  如果离散化过程使用类别信息,称为有监督的离散化;否则是无监督的。
  如果过程先寻找一个活若干点来分割整个属性范围,然后对每个区间递归重复这个步骤,则称为自顶向下的离散化或分割自底向上的离散化或合并先把所有的连续值作为潜在的分割点,通过合并相邻的值移除某些点来形成区间,然后再递归的应用这个过程到每一个区间。
  数据离散化和概念层级生成也是数据删减的形式。原始数据被一个数目更小的区间或者概念标签置换。这简化了原有数据,使挖掘更高效。挖掘出的模式通常更易于被理解。概念层级在对多层抽象级别挖掘上也十分有效。

3.5.2 数据规范化

  使用的度量单位会影响数据分析。例如,将身高的度量单位从米变成英寸,或体重从公斤变为磅,会导致非常不同的结果。通常,用更小的单位表达的属性会有一个更大的属性取值范围,倾向于给这类属性更大的效应或“权重”。为了避免对度量单位的依赖,数据需要被规范化。这会将数据按比例缩放在一个更小或更常见的区间,如[-1,1]或[0,1]。
  规范化数据会给所有属性相同权重。在分类算法包括神经网络或最近令分类以及聚类中,规范化特别有效。如果在神经网络反向传播算法中,对每个训练元组的每个属性的输入值进行规范化,则会加速学习的速度。对于基于距离的方法,规范化可以避免属性在初始时具有大的范围。在没有给定数据的先验知识时也很有用。

有许多数据规范化的方法,如:

  • 最小——最大值规范化
  • Z-分数规范化
  • 小数定标规范化

令𝐴是一个数值属性,有𝑛个观察到的值𝑣1, 𝑣2, … , 𝑣𝑛.
最小——最大值规范化:

  • 令𝑚𝑖𝑛𝐴和𝑚𝑎𝑥𝐴表示属性𝐴的最小值和最大值,最小——最大值标准化将值𝑣𝑖映射为𝑣𝑖’,范围是[𝑛𝑒𝑤_𝑚𝑖𝑛𝐴, 𝑛𝑒𝑤_𝑚𝑎𝑥𝐴]:
    在这里插入图片描述
  • 最小——最大值规范化保留了原有数据值的关系。如果后来的输入的标准化的数据落在了原有数据区间的外面,将会发生过界的错误。
  • 假定收入属性的最小值和最大值分别是$12,000和$98,000. 将收入属性映射到范围[0.0, 1.0]上。则一个值为$73,600的收入标准化为:
    在这里插入图片描述

Z-分数规范化:

  • 属性A的值,基于平均值和标准差来规范化。计算公式:
    在这里插入图片描述
  • 其中𝐴和σA是属性A的均值和标准差。
  • 这种方法在实际的最小值和最大值未知时很有用,或者离群点主导了最小——最大值的规范化时。
  • 假定income属性的均值和标准差是$54,000和$16,000。使用z-分数标准化,则$73,600被转换为:
    在这里插入图片描述
  • Z-分数规范化的变体是使用属性A的均值绝对偏差来替换标准差。平均绝对偏差sA的计算公式为:
    在这里插入图片描述
  • 用sA替换σA即可。
  • 均值绝对偏差比标准差对离群点更健壮,因为没有平方。即离群点的效应被减弱。

小数定标规范化:

  • 小数定标规范化通过移动属性A的值的十进制小数点来标准化。移动的数目依赖于属性A的绝对值的最大值。转换公式为:
    在这里插入图片描述

  • 其中,𝑗是使max(|𝑣𝑖’|) < 1的最小整数。

  • 假设属性A的记录值的范围是-986到917. 则A的绝对值的最大值为986. 通过小数定标规范化,将每个值除以1000(因为j=3)
    所以-986标准化为:-0.986.
    917标准化为:0.917.

  • 注意规范化会小部分的改变原有数据,特别是在用z-分数标准化和十进制换算标准化时。

  • 将参数存储起来是有必要的,因为将来的数据可以使用同一方式进行标准化。

3.5.3 装箱离散化技术

装箱技术在3.2.2节已被讨论过。
装箱技术没有使用分类信息,因此是无监督的离散化技术。它对人为指定的箱子个数以及离群点比较敏感。

3.5.4 直方图分析的离散化技术

直方图也是一种无监督的离散化技术。在2.2.3节已被讨论过。
最小的区间尺寸可以被用来控制递归分割的步骤。这可以指明分割的最小宽度,或者每个分割的最小值数目。直方图还可以基于数据分布的聚类分析来分割。

3.5.5 聚类、决策树以及关联分析离散化技术

  • 聚类分析是一种流行的数据离散化方法。一个聚类算法可以应用到数值属性上,将属性A的值分割成簇或分组。聚类考虑属性A的分布,和数据点的紧密度,因此会产生高质量的离散化结果。
      聚类可以被用来生成属性A的概念层次,使用自顶向下的分割策略或者自底向上的合并策略。
  • 决策树分类技术也可以用来做数据的离散化。这种技术采用自顶向下的分割方法。不同于其他的前面提到的方法,这是一种有监督的离散化方法,即使用分类标签的信息。
      例如,我们有一个数据集,包括病人的症状(属性)以及病人的相应诊断类别标签。在计算和确定分割点时使用到分类分布信息。直观地,主要思想是选择分割点,使一个给定的分割包含同类别的尽可能多的元组。熵是在这种情况适用的最普遍的测量。离散化数值属性A时,选择有最小熵的属性A作为分割点,然后递归的分割结果区间,以得到一个层次的离散化结果。最终形成一个属性A的概念层次。
      因为决策树离散化适用分类信息,区间界限定义的地方更可能提高分类的精确性。
  • 关联分析也可以用于数据离散化。ChiMerge是一种基于卡方分布的离散化方法。之前的离散化方法中,都是采用一种自顶向下的分割策略。这种ChiMerge的方法是采用自底向上的方法,通过寻找最优的邻居间隔,然后结合他们形成更大的区间,迭代这个步骤。ChiMerge是一种使用分类信息的监督离散化方法。对于精确的离散,相对类别频率应在区间内公平一致。因此,如果两个相邻的区间有十分相似的类别分布,则区间可以被合并。否则,保留为分散的区间。

3.5.6 标称属性的概念层次生成

标称属性都有有限个数的不同值,并且没有次序信息。
对领域专家来说,人工定义概念层次是一项沉闷和耗时的工作。许多层次暗含于数据库模式内,可以由模式定义级别自动定义。概念层次能将数据转换为多层维度级别。例如,销售被发现除了独立的分支区域外,和特定区域或者国家关联。
有4种标称数据的概念层次的生成方法
1、由用户或专家显式地在模式级别指定属性分割次序。名词属性的概念层次常常包含一组属性。用户或专家
能在模式级别通过指定部分或全部的属性次序方便地定义概念层次。
• 例如,假设一个关系数据库包含下列属性组:street, city, province_or_state, 和country. 相似的,一个数据仓库的location维度可能包含相同的属性。一个层次可以被定义,用来指明这些属性在模式级别的全序关系,例如:street<city<province_or_state<country

2、通过显式数据分组指明层次的一部分
• 在一个大型数据库中,通过明确的值枚举的方式定义整个概念层次是不现实的。相反,我们可以容易的为一小部分中间级别的数据指定明确的分组信息。
• 例如,在模式级别指明province和country形成一个层次之后,用户能够手动定义一些中间层次的内容,例如,{Albert, Saskatchewan, Manitoba} ⊂prairies_Canada 和{British Columbia, prairies_Canada} ⊂Western_Canada.

3、 指明一系列属性,但不指明它们的偏序关系
• 用户可以指明一系列属性形成一个概念层次,但是漏掉了明确的偏序关系声明。系统尝试自动的生成属性次序以便于构建一个有意义的概念层次。
• “没有数据语义知识,如何通过一系列任意的名词属性找到一个层次次序呢?”因为高层概念通常会涵盖一些较低层次的概念,一个定义了高层次概念的属性常常会比一个定义低层概念的属性会包含更少的不同的值。基于这点,概念层次可以基于给定属性集上每个属性的不同值的个数来自动生成。
• 具有最多不同值的属性被放到最低层。不同值的个数越少,生成的概念层次越高。这种启发式规则在许多情形下很有用。在对生成的层次进行检查之后,如果有必要的话,一些局部层次的交换和调整可以由用户或者专家来完成。

4、只指明一部分属性集
• 有些时候用户在定义层次时可能不小心,或者对层次中应该包含什么只有一个模糊的想法。因此,用户只指明了层次中的一小部分属性关联关系。
• 例如,用户没有指明所有关于位置的属性的层次,而是只指明了street和city的关系。
• 为了处理这种部分指明的层次,将数据语义嵌入到数据库模式中使有紧密语义关联的属性能被放在一起很重要。这样,对一个属性的规定将会触发整个语义紧密关联的属性被拖在一起形成一个完整的层次。当然,用户在必要的时候可以选择重写这些特征。

第四章 数据仓库与联机分析处理

4.1 数据仓库:基本概念

4.1.1 数据仓库的定义

数据仓库有许多不同定义,但并不严格。
• 一个决策支持数据库,与本组织的业务数据库分开维护。
• 提供综合历史数据分析平台支持信息处理。
◼“数据仓库是一个面向主题的、集成的、时变的、非易失的、支持管理层决策过程的数据集合。”-W.H.Inmon
◼ 数据仓库:构建和使用数据仓库的过程

  1. 数据仓库——面向主题
    • 围绕主要主题进行组织,例如:客户、产品、销售
    • 专注于为决策者建模和分析数据,而不是专注于日常操作或事务处理
    • 通过排除在决策支持过程中无用的数据,提供关于特定主题问题的简洁的视图

  2. 数据仓库——集成性
    ◼ 集成多个异构数据源构建
    • 关系数据库、文件、联机事务记录
    ◼ 应用了数据清洗和数据集成技术。
    • 确保不同数据源之间在命名约定、编码结构、属性度量等方面的一致性
    • 例如,酒店价格:货币、税、包括早餐等。
    • 当数据被移动到仓库时,进行转换。

  3. 数据仓库——时变性
    ◼ 数据仓库的时间范围比操作数据库系统的时间范围要长
    • 操作数据库:当前数据值
    • 数据仓库数据:从历史角度(例如,过去5-10年)提供信息
    ◼ 数据仓库中的每个关键结构
    • 显式或隐式地包含时间元素
    • 但操作数据的关键字可以包含也可以不包含“时间元素”

  4. 数据仓库——非易失性
    ◼ 独立
    • 从操作环境转换的数据的物理独立存储
    ◼ 在数据仓库环境中不发生数据的操作更新
    • 不需要事务处理、恢复和并发控制机制
    • 在数据访问中只需要两个操作:
    ▪ 数据的初始加载和数据的访问

4.1.2 OLTP与OLAP

OLTP:联机事务处理

  • DBMS 操作
  • 增删改查

OLAP:联机分析处理

  • 数据仓库操作
  • 下钻、切片、等

4.1.3 为什么要单独的数据仓库 ?

◼ 两种系统的高性能

  • DBMS-为OLTP调优:访问方法、索引、并发控制、恢复
  • 数据仓库-为OLAP调优:复杂的OLAP查询、多维视图、合并

◼ 不同的功能和不同的数据:

  • 缺失数据:决策支持需要历史数据,而操作DBS通常不维护这些历史数据
  • 数据合并:DS需要合并(聚合、汇总)来自异构源的数据
  • 数据质量:不同来源通常使用不一致的数据表示、代码和格式,必须加以协调
    ▪ 注意:直接对关系数据库进行OLAP分析的系统越来越多

4.1.4 数据仓库:多层体系结构

顶层:前端工具
中层:OLAP服务
底层:数据仓库
最底层:数据

4.1.5 三种数据仓库模型

企业仓库(DataWarehouse)
• 收集有关整个组织主题的所有信息
数据集市 (Data Mart)
• 对特定用户组有价值的全公司范围数据的子集。其范围仅限于特定的、选定的组,如营销数据集市
• 独立与依赖(直接来自仓库)数据集市
虚拟仓库 (Virtual warehouse)
• 操作数据库的一组视图
• 只有一些可能的摘要视图可以被物化

数据湖
• 数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。

4.1.6提取、转化和加载(ETL)

▪ 数据提取:从多个、异构和外部源获取数据
▪ 数据清理: 检测数据中的错误,并在可能的情况下纠正错误
▪ 数据转换:将数据从旧格式或主机格式转换为仓库格式
▪ 装载:排序、汇总、合并、计算视图、检查完整性以及构建索引和分区
▪ 刷新:将更新从数据源传递到仓库

4.1.7元数据库(Metadata)

元数据是定义仓库对象的数据。存储:

  • 数据仓库结构描述
    架构、视图、维度、层次结构、派生数据定义、数据集市位置和内容
  • 操作元数据
    数据沿袭(迁移数据和转换路径的历史)、数据类型(活动、存档或清除)、监视信息(仓库使用的统计信息、错误报告、审核跟踪)
  • 用于汇总的算法
  • 操作环境到数据仓库的映射
  • 与系统性能相关的数据
  • 业务数据
    业务术语和定义、数据所有权、收费策略

4.2 数据仓库建模:数据立方体和OLAP

4.2.1从表格和电子表格到数据立方体

• 数据仓库基于多维数据模型,以数据立方体的形式查看数据
• 数据立方体(如sales)允许在多个维度中建模和查看数据
维度表,如item(item_name、brand、type)或time(天、周、月、季、年)
事实表,包含度量(如DOLLARS_SALED)和每个相关维度表的键
• 在数据仓库文献中,n-D立方体(Cube)被称为基立方体(base cuboid)。最上面的0-D立方体(0-D cuboid),它具有最高的总结级别,称为顶点立方体(apex cuboid)。
• 立方体的格子形成数据立方体。

事实表

  • 表中的每行数据代表一个业务事件。“事实”表示的是业务
    事件的度量值(可以统计次数、个数、金额等)
  • 事实表特征
    • 行数多
    • 内容相对的窄
    • 经常发生变化,每天新增很多
  • 事实表分类
    • 事务型事实表
    以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录等,作为事实表里的一行数据。
    一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。
    • 周期型快照事实表
    周期型快照事实表中不会保留所有数据,只保留固定时间间隔的数据,以具有规律性的、可预见的时间间隔记录事实。
    例如每天或每月的总销售金额,或每月的账户余额等
    • 累积型快照事实表
    累积快照事实表用于跟踪业务事实的变化,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。
    例如数据仓库中可能需要累积或者存储订单从下单开始,到订单商品被打包、运输、签收等各个业务阶段的时间点数据,来跟踪订单生命周期的进展情况。

维度表

  • 一般是对事实的描述信息。每一张维度表对应现实世界中的一个对象或者概念。
  • 维度表特征
    • 维度表的范围很宽(具有多个属性、列比较多)
    • 跟事实表相比,行数较少,(通常小于10万条)
    • 内容相对固定
  • 维度建模四部曲:选择业务 > 定义粒度 > 选择维度 > 确定事实
  1. 选择业务:选择感兴趣的业务线,如下单,支付,退款,活动 。
  2. 声明粒度:一行代表信息:一条订单?一天的订单?一周的订单? 选择最小粒度。
  3. 确认维度:维度退化:谁 ?时间?什么地点?
  4. 确认事实:度量值:如个数,件数,金额
  • 设计原则
    • 维度属性尽量丰富,为数据使用打下基础
    • 给出详实的、富有意义的文字描述
    • 区分数值型属性和事实
    • 沉淀出通用的维度属性,为建立一致性维度做好铺垫
    • 退化维度(Degenerate Dimension)
    • 缓慢变化维(Slowly Changing Dimensions)

4.2.2星形、雪花和事实星座

数据仓库建模:维度与度量

  • 星形模式:连接到一组维度表的中间事实表
    在这里插入图片描述

  • 雪花模式:星形模式的一种改进,其中一些维度层次结构被规范化成一组较小的维度表,形成类似雪花的形状
    在这里插入图片描述

  • 事实星座:多个事实表共享维度表,视之为恒星的集合,因此称为星系模式或事实星座
    在这里插入图片描述

4.2.4 度量:三类

  • 分布的(distributive):如果对n个聚合值应用该函数所得到的结果与不分区对所有数据应用该函数所得到的结果相同
    • 例如,count()、sum()、min()、max()
  • 代数的(algebraic):如果它可以由具有M个参数的代数函数来计算(其中M是有界整数),每个参数都是通过应用一个分布的聚合函数来获得
    • 例如,avg()、min_N()、standard_deviation()
  • 整体(holistic):如果描述子聚合所需的存储大小没有恒定的界限。
    • 例如,median()、mode()、rank()

4.2.5典型的OLAP操作

  • Roll up(上卷):汇总数据
    • 通过攀升层次或通过降维
  • Drill down(下钻):与roll up相反
    • 从上级汇总到下级汇总或明细数据,或引入新的维度
  • 切片和切块:投影并选择
  • 转轴(旋转):
    • 将立方体、可视化、3D重定向为2D平面系列
  • 其他操作
    • 钻过:涉及(跨越)多个事实表
    • 钻透:通过多维数据集的底层到其后端关系表(使用SQL)

4.3 数据仓库的设计和使用

4.4 数据仓库的实施

4.4.1高效的数据立方体计算

数据立方体可以看作是方体的格子
• 最底部的方体是基方体
• 最上面的方体(顶点)只包含一个数据
• 一个n维立方体中有多少个L级的方体?

数据立方体的物化
• 物化每一个(方体)(完全物化)
• 无(没有物化)
• 一些(部分物化)
• 基于大小、共享、访问频率等。

4.4.2 OLAP数据索引:位图索引

特定列上的索引
• 列中的每个值都有一个位向量:bit-op是快速的
• 基表中记录的位向量:#的长度
• 如果基表的第i行具有索引列的值,则设置第i位
• 不适用于高基数域
最近的一种位压缩技术,字对齐混合(WAH)也使其适用于高基数领域[Wu,etal.Tods’06]

4.4.4 ROLAP与MOLAP与HOLAP

(1)关系OLAP(ROLAP)
• 使用关系型或扩展关系型DBMS存储和管理仓库数据和OLAP中间件
• 包括DBMS后端优化、聚合导航逻辑实现以及其他工具和服务
• 更大的可伸缩性
(2)多维联机分析处理(MOLAP)
• 基于稀疏数组的多维存储引擎
• 对预先计算的汇总数据进行快速索引
(3)混合OLAP(HOLAP)(例如Microsoft SQLServer)
• 灵活性,例如,低级别:关系型,高级别:数组型
(4)专用SQL服务器(如Redbricks)
• 对Star/Snowflake模式上的SQL查询的专门支持

第六章 挖掘频繁模式、关联和相关性:基本概念和方法

6.1 基本概念

频繁模式:数据集中频繁出现的模式(项的集合、子序列、子结构等)
❑首先由Agrawal、Imielinski和Swami[AIS93]在频繁项集和关联规则挖掘中提出
❑动机:发现数据中的内在规律性
▪ 什么产品经常一起购买?-啤酒和尿布?
▪ 买了PC之后,后续的购买有哪些?
❑应用
▪ 购物篮数据分析、交叉营销、目录设计、销售活动分析、Web日志(点击流)分析和DNA序列分析

项集:事务中包含一个或多个项的集合
❑ k项集:包含k个项的项集𝑋 = 𝑋1, … , 𝑋𝑘
❑ 支持度(绝对):或X的支持计数:项集X的频率或出现次数
❑ 支持度(相对):s 是包含事务X的比例(事务包含X的概率)
频繁项集:如果项集X的支持度不小于minsup阈值,则项集X是频繁

❑ 从频繁项集中,以最小的支持度和置信度找到所有的规则X → Y
支持度 —— support (s):同时包含X和Y的事务占事务总数的比例,(X和Y同时发生的概率)
置信度 —— confidence ©:在所有包含X的事务中包含Y的事务所占比例,(X发生后Y发生的概率)

在这里插入图片描述
❑ 设minsup=50%,minconf=50%
❑ 频繁项集:
▪ 啤酒3,坚果3,尿布4,鸡蛋3,{啤酒,尿布}3
❑ 关联规则:形如X → Y的表达式,𝑋 ∩𝑌 = ∅
▪ Beer → Diaper (60%, 100%)
▪ Diaper → Beer (60%, 75%)

为什么使用支持度和置信度?
❑ 支持度是一种重要度量
❑ 因为支持度很低的规则出现的概率比较低
❑ 低支持度的规则多半也是无意义的
❑ 置信度度量通过规则进行推理的可靠性
❑ 对于给定的规则𝑋 → 𝑌,置信度越高,Y在包含X的事务中出现的可能性就越大
❑ 解释关联分析结果应谨慎。由关联规则做出的推论并不必然蕴涵因果关系。只是说,它表示规则前件和后件中的项同时出现的概率很大。

包含d个项的数据集提取的可能规则的总数R是:
𝑅 = 3𝑑 − 2𝑑+1 + 1
6个项的集合,602条规则

6.2 频繁项集挖掘方法

先验性质与可扩展的挖掘方法
❑ 频繁模式的先验性质

  • 频繁项集的任何非空子集也一定是频繁的
    ▪ 如果{啤酒、尿布、坚果}是频繁的,那么{啤酒、尿布}也是频繁的。即每笔包含{啤酒、尿布、坚果}的事务也包含{啤酒、尿布}
  • 非频繁项集的所有超集也一定是非频繁的
    ▪ 如果{啤酒、尿布}是非频繁的,那么{啤酒、尿布、坚果}也是非频繁的。

❑ 可扩展挖掘方法:三种方法
▪ Apriori(Agrawal&Srikant@VLDB’94)
▪ FP-growth算法(FPgrowth-Han,Pei&Yin@Sigmod’00)
▪ 垂直数据格式法(Charm-Zaki&Hsiao@SDM’02)

6.2.1 Apriori:一种候选生成和测试方法

❑ Apriori剪枝原则:如果有任何不频繁的项集,则不应该生成/测试它的超集!
❑方法:
▪ 按字典序排序
▪ 扫描数据库一次,以获得频繁的1-项集
▪ 从长度为k的频繁项集生成长度为(k+1)的候选项集
▪ 根据数据库测试候选项,计算支持度
▪ 无法生成频繁项集或候选集时终止
在这里插入图片描述

❑ 如何生成候选项?
▪ 连接步
▪ 剪枝步

候选生成示例
L3={abc, abd, acd, ace, bcd}
▪ 自连接:L3*L3
▪ abc和abd中的abcd, abc和bcd不需要连接
▪ acd和ace中的acde
▪ 剪枝:
▪ acde被删除,因为ade不在L3中
▪ C4={abcd}

支持度计数
❑ 计算候选项可能包含的问题?
▪ 候选项的数量可能是巨大的
▪ 一个事务可能包含很多个候选项
▪ 支持度计算量大

❑使用Hash树进行支持度计数
▪ 候选项集存储在Hash树中
▪ 在每次迭代中,使每个事务“通过”哈希树识别出该事务中的候选项集
▪ 候选项集的计数support+1

闭频繁项集:一个项集 X 是闭的,如果 X 是频繁的,并且不存在与 X 相同的支持度的超项集𝑌 ⊃ 𝑋

  • 闭频繁项集是对频繁项集的无损压缩
  • 提供了所有频繁项集的最小表示(包含支持度信息)
  • 减少项集和关联规则的数量

ad 不是闭的,因为它和acd的支持度是一样的;ac是闭的,因为它的支持度>超集的支持度
在这里插入图片描述

极大频繁项集:一个项目集X是极大的,如果X是频繁的,并且不存在频繁的超项集 𝑌 ⊃ 𝑋

  • 极大频繁项集有效地提供了频繁项集的紧凑表示
  • 极大频繁项集形成了可以导出所有频繁项集的最小的项集的集合,但是极大频繁项集不包含他们自己的支持度信息
  • 如果知道了闭项集的支持度计数,可以由此得到项集格中的每个其他项集的支持度计数
  • 极大频繁项集都是闭的,因为任何极大频繁项集都不可能与他的直接超集具有相同的支持度计数
    在这里插入图片描述

❑ 练习. DB = {<a1, …, a100>, <a1, …, a50>}
▪ minsup = 1.
❑ 闭项集?
▪ <a1, …, a100>: 1
▪ <a1, …, a50>: 2
❑ 极大项集?
▪ <a1, …, a100>: 1
❑ 所有的频繁项集有多少?
▪ 2
100 − 1

6.2.2 提高Apriori算法的效率

❑ 主要的计算挑战
▪ 多次扫描数据库
▪ 候选项数量巨大
▪ 候选项支持度计算量大
❑ 提高算法效率方法
▪ 减少被扫描的事务的数量
▪ 缩减候选项数量
▪ 减少扫描次数
▪ 减少支持度计算

事务压缩
❑ 减少后续计算中需要扫描事务的数量
❑ 不包含任何频繁k项集的事务不可能包含频繁k+1项集
❑ 这种事务在后面运算中,可以加上标记或者删除。

基于散列的技术
❑ 当扫描数据库中每个事务时,由C1中的候选1项集产生频繁1项集L1时,可以对每个事务产生所有的2项集将它们散列到散列表结构的不同桶中。
❑ 对应桶计数低于支持度阈值的2项集不可能是频繁的,因此应该从候选集中删除。Minsup=3

减少扫描次数:划分
❑ D的任何频繁项集必须作为局部频繁项集至少出现在一个分区中。
▪ Scan 1:D中事务划分为n个非重叠的分区。
▪ 如果D中事务的最小相对支持度阈值为minsup,则每个分区的最小支持度计数为minsup × 分区事务数。
▪ 找出局部频繁项集,所有局部频繁项集作为全局候选项集
▪ Scan 2:评估实际支持度,确定频繁项集

抽样
❑ 选取给定数据库D中的随机样本S,然后在S中搜索频繁项集
▪ 使用较小的最小支持度阈值
❑ 扫描一次D用于确认是否已经包含了所有的频繁项集
▪ 示例:对于S中的频繁项集ab, ac, 等,检查abcd
▪ 如果abcd是频繁的,那么则可能漏掉了bd
❑ 第二次扫描遗漏的频繁项集

动态项集计数
❑ 将数据库划分为用开始点标记的块
❑ 一旦A和D确认为频繁项集,对AD支持度的计数启动,不需等待第一次扫描结束
❑ 当BCD的所有频繁2-项子集确定,对BCD的计数启动。

6.2.3 FP-Growth方法

❑ Apriori方法的瓶颈
▪ 通常产生大量的候选频繁项集
▪ 104个1-项集 ➔104(104−1)/2个候选2-项集
▪ 扫描事务数据库以计数支持度的计算量很大

❑ FP-Growth方法:比Apriori方法快10倍以上(分治策略)

  • 查找频繁单项集并根据每个频繁项对数据库进行分区
  • 通过对每个分区数据库(也称为条件数据库)执行上述操作,递归增长频繁模式
    ▪ 如果“abc”是频繁项集
    ▪ 得到所有的包含“abc”的事务,产生基于abc的DB子集:DB|abc
    ▪ “d”是DB|abc中的本地频繁项集,如果“abcd”是频繁项集
  • 为了促进高效处理,构建数据结构FP-tree
  1. 扫描数据库一次,找到所有的1-项集
  2. 对频繁项排序(降序排列),重写项集
  3. 再次扫描数据库,构建FP-树和Header table
  4. 从FP-tree的项头表开始,从低到高遍历,构造条件模式基
    ▪ 条件模式基:头部链表中某一结点的前缀路径组合
  5. 构建条件FP树,子集可以被独立并行处理
    ▪ 通过跟踪每个项目的链接来遍历树。
  6. 条件FP树于叶子节点组合得到频繁项集

FP 树结构的好处
❑完整性
▪ 为频繁模式挖掘保留完整信息
❑紧凑
▪ 减少了不相关的信息
▪ 按频率降序排列的项目:出现频率越高,分享的可能性越大
▪ 不大于原始数据库(不计算节点链接和计数字段)

❑思路:频繁模式增长
▪通过模式和数据库分区递归地增加频繁模式
❑方法
▪对于每个频繁项,构造它的条件模式基,然后构造它的条件 FP 树
▪对每个新创建的条件 FP 树重复该过程
▪直到得到的 FP-tree 为空,或者只包含一条路径——单条路径会生成其子路径的所有组合,每一个子路径都是一个频繁模式

模式增长方法的优势
❑分而治之:
▪ 根据目前获得的频繁模式分解挖掘任务和数据库
▪ 导致集中搜索较小的数据库
❑其他因素
▪ 没有候选项生成和测试
▪ 压缩数据库:FP-tree结构
▪ 无需重复扫描整个数据库
▪ 基本操作:计算局部频率项并构建子 FP 树

6.2.4 ECLAT: 垂直数据格式挖掘频繁项集

❑Equivalent Class Transformation
❑垂直格式: t(AB) = {T11, T25, …}
▪ Tid-list: 包含项目集的事务id 列表
▪ 项集长度:length(tid-list)
❑基于垂直交叉点导出频繁模式
▪ t(X) = t(Y): X 和 Y 总是同时出现
▪ t(X)t(Y): 包含 X 的事务总是包含Y
❑Using diffset to accelerate mining
▪ Only keep track of differences of tids
▪ t(X) = {T1, T2, T3}, t(XY) = {T1, T3}
▪ Diffset (XY, X) = {T2}

6.3 哪些模式是有趣的?–模式评估方法

❑支持度和置信度阈值对于修剪无趣的规则很有用
▪ 但兴趣是一个主观衡量标准
▪ 良好的关联规则 A=>b 表示“A 增加了 B 的机会”,“A 和 B 比平常更多地同时出现”
❑使用支持/置信度仍可能挖掘大量无趣/误导性的规则
❑通过基于相关性的测量来补充支持和置信度可以解决一些问题。
▪ 但强相关性!=强“关联”
❑需要更稳健的方法(不受空事务影响)并且可以处理不平衡的条件概率(当 P(B|A) 和 P(A|B) 非常不同)

提升度:Measure of dependent/correlated events: lift(A,B)
在这里插入图片描述

零事务和零不变度量
零事务不包含任何正在检查的项目集的交易。
❑ 相关性度量可能会受到空事务的影响,这通常会超过其他计数。
零不变性度量:其值与零事务的度量无关
❑零事务不变性对于相关性分析至关重要Lift 和卡方 不是零不变的

不平衡比 (Imbalance Ratio IR): 衡量两个项集 A 和 B 在规则含义上的不平衡
在这里插入图片描述
IR范围[0, 1),0表示平衡,1表示非常不平衡

第十章 聚类分析

10.1 聚类分析:基本概念

聚类Clustering:数据对象的集合
▪ 在同一群体中彼此相似(或相关)
▪ 与其他组中的对象不相似(或不相关)
聚类分析Cluster (或聚类、数据分割、…)
▪ 根据在数据中发现的特征查找数据之间的相似性,并将相似的数据对象分组成簇
▪ 聚类,作为名词,指的是簇的集合;作为动词,指的是寻找簇的过程
❑ 用于:
▪ 理解:洞察数据分布;
▪ 归纳:减少数据量;
▪ 数据平滑和离散化;
▪ 簇和特征作为其他算法的预处理步骤
❑ 典型应用
▪ 作为了解数据分布的独立工具
▪ 作为其他算法的预处理步骤

10.1.1 聚类的度量

❑ 相异/相似度量
▪ 相似性用距离函数表示,通常度量为:d(i, j)
▪ 对于分类属性、布尔属性、范畴属性、序数属性和向量,距离函数的定义通常是不同的
▪ 应用场景不同,变量相关联的权重是不同的

❑ 聚类质量:
▪ 通常有一个单独的“质量”函数来衡量聚类“好坏”。
▪ 很难界定“足够相似”或“足够好”
▪ 答案通常是高度主观的

❑ 一个好的聚类方法会产生高质量的聚类
▪ 高类内相似性:簇内的内聚性
▪ 低类间相似性:簇间的区别性

❑ 聚类方法的质量取决于
▪ 该方法使用的相似性度量
▪ 执行情况
▪ 它发现部分或全部隐藏模式的能力

10.1.2 主要聚类方法

❑ 划分方法:
▪ 构造各种分区,然后用某种准则(例如,最小化平方误差和)对它们进行评估
▪ 典型方法:k-means, k-medoids, CLARANS

❑ 层次方法:
▪ 使用某种标准创建数据(或对象)集的层次分解
▪ 典型方法:Diana, Agnes, BIRCH, CAMELEON

❑ 基于密度的方法:
▪ 基于连通性和密度函数
▪ 邻域中的的密度超过某个阈值,就添加到对应的簇
▪ 典型方法:DBSCAN、OPTICS、DenClue

❑ 基于网格的方法:
▪ 基于多级粒度结构
▪ 典型方法:STING法、WaveCluster法、CLIQUE法

❑ 基于模型的:
▪ 为每个聚类假设一个模型,并试图找到最匹配数据的模型
▪ 典型方法:EM, SOM, COBWEB

❑ 基于频繁模式:
▪ 基于频繁模式的分析
▪ 典型方法:p-Cluster

❑ 用户引导或基于约束:
▪ 通过考虑用户引导或特定的应用场景的约束进行聚类
▪ 典型方法:COD、约束聚类

❑ 基于链接的聚类:
▪ 对象常常以各种方式连接在一起
▪ 海量链接可用于聚类对象:SimRank、LinkClus 15

10.1.3 聚类任务的基本步骤

  1. 特征选择
    ▪ 选择与感兴趣的任务有关的信息
    ▪ 最小信息冗余
  2. 接近度度量
    ▪ 两个特征向量的相似性
  3. 聚类准则
    ▪ 通过成本函数或某些规则表示
  4. 聚类算法
    ▪ 算法的选择
  5. 结果的验证
    ▪ 验证测试(也包括聚类倾向测试)
  6. 对结果的解释
    ▪ 与应用场景集成

10.2 划分方法

基本划分方法:将一个由n个对象组成的数据集D划分成一个由k个簇组成的集合,使得距离平方和最小化(其中形心ci是簇ci的均值或中心点)
给定k,找到优化所选分区准则的k个簇的分区
▪ 全局最优:穷举所有分区
▪ 启发式方法:k-均值和k-中心点算法
▪ k-均值(Macqueen’67,Lloyd’57/‘82):每一个簇都由簇的中心表示
▪ k-中心点或PAM(围绕中心点medoids的分区):每个簇由簇中的一个对象表示

10.2.1 K-means

❑ 数据预处理
▪ 归一化数据和变换(z-score)
▪ 需要时移除离群点
❑ 初始形心通常是随机选择的
▪ 产生的簇每次运行都可能不同
▪ 需要使用不同的初始分区或形心运行多次以选择最佳结果
❑ 形心通常是均值
❑ 接近度通过欧氏距离、余弦相似度、相关性等来衡量
❑ 对于上面提到的常见相似性度量,k-means 会收敛
❑ 大多数收敛发生在前几次迭代中
▪ 通常的停止条件是“直到相对较少的点改变”

K-means步骤
给定k,k-means算法分四步实现:

  1. 将对象划分为k个非空子集或任意创建 k 个初始分区并计算初始形心
  2. 将每个对象分配给具有最近形心的簇(根据对象与形心之间的欧氏距离)
  3. 计算当前分区的簇的形心(形心为簇内点的均值)
  4. 返回步骤2,重复,直到分配稳定

K-Means法评述
❑ 优点:高效:𝑂(𝑡𝑘𝑛),其中n是对象数量,k是簇数量,t是迭代次数。通常情况下,𝑘,𝑡 ≪ 𝑛。
▪ 比较:PAM:𝑂(𝑘(𝑛 − 𝑘)2), Clara:𝑂(𝑘𝑠2 + 𝑘(𝑛 − 𝑘))
❑ 弱点
▪ 仅适用于连续n维空间中的对象
▪ 分类数据的K-modes方法, K-prototype
▪ 相比较而言,k-中心点可以应用于广泛的数据范围
▪ 需要预先指定k(簇的数量)
▪ 对初始形心,噪声数据和异常值敏感
▪ 不适合于发现具有非凸形状、密度不同、大小不同的簇

初始形心问题的解决方案
❑ 多次运行
❑ 采样并使用层次聚类来确定初始形心
❑ 一个一个选择形心,并选择与现有形心相距较远的新形心
▪ 更多计算,离群风险,最好使用样本数据
❑ 生成大量簇,然后进行层次聚类
❑ 后处理

k-means方法的变型
❑ k-means的大多数变体的区别在于
▪ 初始k均值的选择
▪ 计算相异性方法
▪ 计算聚类均值的策略
❑ 处理分类数据:k-modes
▪ 用模式代替簇的均值
▪ 用新的相异测度处理分类数据
▪ 一种基于频率的簇模式更新方法
❑ 分类数据和数值数据的混合:K-prototype (k-means-k-modes)

10.2.2 k-中心点

k-means的问题
❑ k-means算法对异常值很敏感!
▪ 因为具有极大值的对象可能实质上扭曲数据的分布
❑ k-medoids:可以使用中心点,而不是将聚类中对象的
平均值作为参考点,它是聚类中位于最中心的对象

PAM:一种典型的K-Medoids算法
在这里插入图片描述
❑ 构建:
▪ 1.随机选择k个初始中心点
▪ 2.1第一个中心点是位于数据集的中心点。
▪ 2.2后续中心点:以减少与最相似的所选对象的差异总和。
❑ 置换:
▪ 替换中心点以减少误差函数
▪ 重复:
▪ 考虑所有的(i,h)对:i为中心点,h为其他数据点
▪ 交换 i 和 h, 并计算误差
▪ 误差降低,则用h取代中心点

K-中心点聚类:在聚类中查找具有代表性的对象
▪ PAM(围绕Medoids的划分, Kaufmann&Rousseeuw 1987)
▪ 从初始的medoid集合开始,并且迭代地用其中一个非medoid替换其中一个medoid,如果它改进了结果聚类的总距离
▪ PAM对于小型数据集有效地工作,但是对于大型数据集不能很
好地伸缩(由于计算复杂性)
▪ PAM 适用于定义了距离度量的任何数据类型
❑提高PAM效率的方法
▪ CLARA(Kaufmann&Rousseeuw,1990):PAM on samples
▪ CLARANS(Ng&Han,1994):随机再抽样

确定簇的数量
❑ 经验法则
▪ 簇的数量𝑁 ≈ 𝑛/2, 𝑛为数据对象的个数
❑ Elbow method
▪ 增加聚类数量会减少聚类的平方误差和
▪ 因为簇更小并且其中的数据彼此更相似
▪ 但过度分裂好的簇会减少这种影响
▪ 如果我们根据簇数绘制“簇内总误差平方和”,可以找到这样的转折点
▪ 并非总能找到明确的转折点
❑ 交叉验证方法
▪ 对于一组候选k值,使用使用此 k 值的 m 交叉验证
▪ 将数据分成m个随机部分
▪ 使用 m-1 个部分获得聚类
▪ 使用另一部分评估聚类(SSE)
▪ 选择最好的K

Silhouette 系数(轮廓系数)
❑ 聚类的质量度量,但也可用于确定聚类的数量
❑ 𝑎(𝒐): 簇内距离:𝒐 与同一簇中其他数据点之间的平均距离
▪ 测量簇的紧凑性
▪ 值越小越紧凑
❑ 𝑏(𝒐): 簇间距离:从 𝒐 到所有其他簇的最小平均距离
▪ 衡量簇的分离度
▪ 值越大分离度越大
❑ 轮廓系数:[-1, 1]
▪ 值越大越好
▪ 使用所有数据点的平均 SC 作为质量度量
▪ 选择具有最大 SC 的簇数

10.3 层次方法

10.3.1 层次聚类

❑ 产生一组组织为层次树的簇
❑ 树状图表示层次聚类的过程
❑ 两种主要类型的层次聚类

  • 凝聚的层次聚类算法(AGNES)
    ▪ 数据点作为单独的簇开始
    ▪ 在每一步中,合并最近的一对簇,直到只剩下一个簇
  • 分裂的层次聚类算法(DIANA)
    ▪ 从一个包罗所有数据的簇开始
    ▪ 在每一步中,拆分一个簇,直到每个簇包含一个单独的点。
  • 传统的层次聚类使用差异矩阵或距离矩阵
    ▪ 一次合并或拆分一个簇

DIANA(分裂层次聚类)
▪ 在每个阶段,选择直径最大的簇进行分裂
▪ 找到启动“分裂组”的最不同的观察结果
▪ 该算法重新分配更接近“分裂组”的观察结果
▪ 结果是将所选集群划分为两个新簇

凝聚的层次聚类
▪ 更流行的层次聚类技术
▪ 基本算法很简单

  1. 计算距离矩阵
  2. 每一个数据作为一个簇
  3. 重复
    (1)融合两个距离最近的簇
    (2)更新距离矩阵
  4. 直到只剩下一个簇
    ▪ 关键操作是计算两个簇的接近度
    ▪ 算法在如何计算簇之间的距离方面有所不同

10.3. 2算法的距离度量

❑MIN单连接:一个簇中的元素与另一个簇中的元素之间的最小距离,即𝑑𝑖𝑠𝑡(𝐾𝑖,𝐾𝑗) = min(𝑡𝑖𝑝,𝑡𝑗𝑞)

  • 两个簇的接近度基于不同簇的两个最近点
    ▪ 由一对点决定,即由邻近图中的一个链接决定

❑Max全连接:一个簇中的元素与另一个簇中的元素之间的最大距离,即𝑑𝑖𝑠𝑡(𝐾𝑖,𝐾𝑗) = max(𝑡𝑖𝑝,𝑡𝑗𝑞)

  • 两个集群的接近度是基于不同的两个最远的点
    ▪ 由两个簇中的所有点对确定
    ▪ 优点:不易受噪声和离群点的影响
    ▪ 缺点:倾向于打破大簇(使大簇的一部分加入附近的较小的簇)

❑平均:一个簇中的元素与另一个簇中的元素之间的平均距离,即𝑑𝑖𝑠𝑡(𝐾𝑖,𝐾𝑗) = 𝑎𝑣𝑔(𝑡𝑖𝑝,𝑡𝑗𝑞)

  • 两个簇的接近度是两个簇中点之间成对接近度的平均值
    ▪需要使用平均连接性来实现可扩展性,因为完全接近度有利于大的簇
    ▪单连接和全连接之间的折衷
    ▪优点: 不易受噪声和异常值的影响
    ▪缺点:偏向于球状数据分布

❑形心:两个簇的形心之间的距离,即𝑑𝑖𝑠𝑡(𝐾𝑖,𝐾𝑗) = 𝑑𝑖𝑠𝑡(𝐶𝑖, 𝐶𝑗)

❑中心点:两个星团的Medoid之间的距离,即𝑑𝑖𝑠𝑡(𝐾𝑖,𝐾𝑗) = 𝑑𝑖𝑠𝑡(𝑀𝑖, 𝑀𝑗)

❑质心:星团的“中间”
在这里插入图片描述

❑半径:簇的任意一点到其质心的平均距离的平方根
在这里插入图片描述

❑直径:聚类中所有点对之间的平均均方距离的平方根
在这里插入图片描述

10.3.3 Birch算法

❑层次聚类方法的主要缺陷
▪ 无法撤消以前做过的事情
▪ 不能很好地缩放:时间复杂度至少为O(n2),其中n是总对象的
数量
❑层次聚类与距离聚类的集成
▪ BIRCH(1996):使用CF树并递增地调整子簇的质量
▪ CHAMELEON(1999):使用动态建模的层次聚类

BIRCH(使用层次结构的平衡迭代聚类)
❑ Zhang, Ramakrishnan & Livny, Sigmod’96
❑ 适合于不能放入内存的大数据
❑ 增量式构造CF(Clustering Feature)树
▪ 1:扫描DB构建初始CF树(叶节点包含多个小的簇 )
▪ 2:使用任意聚类算法对CF树的叶节点进行聚类
❑ 线性缩放:通过一次扫描找到一个好的聚类,通过几次额外
扫描提高质量
❑ 2004 KDD Test-of-time award
❑ 缺点:只处理数值数据,不能使用单连接、全连接距离度量,
对数据记录的顺序敏感

聚类特征(CF):𝐶𝐹 = (𝑁, 𝐿𝑆, 𝑆𝑆)
❑ 𝑁:数据点数
❑ 𝐿𝑆:N个点的线性和:
❑ 𝑠𝑠:N个点的平方和

10.3.4 Chameleon算法

相对互连度 (RI) 是两个簇的绝对互连性,除以簇的内部互连性。 如果生成的聚类中的点几乎与每个原始聚类中的点的连接性一样,则将两个簇组合在一起。
在这里插入图片描述

❑ 其中 𝐸𝐶(𝐶𝑖, 𝐶𝑗)是连接簇 𝐶𝑖 和 𝐶𝑗 的(k 最近邻图的)边之和; 𝐸𝐶(𝐶𝑖) 是平分簇 𝐶𝑖 时切边的最小的边的和; 𝐸𝐶(𝐶𝑗) 是平分簇 𝐶𝑗 时切边的最小的边的和。
❑ Rl: 越大越好

相对接近度 (RC) 是两个簇的绝对接近度,除以簇的内部接近度。 仅当生成的簇中的点与每个原始簇中的点彼此接近时,才会合并两个簇。
在这里插入图片描述

其中 𝑚𝑖 和 𝑚𝑗 分别是簇 𝐶𝑖 和 𝐶𝑗 的大小; 𝑆𝐸𝐶(𝐶𝑖,𝐶𝑗)是连接簇 𝐶𝑖 和 𝐶𝑗 的(k-最近邻图的)边的平均权重; 𝑆𝐸𝐶(𝐶𝑖)是边的平均权重, 如果平分簇 𝐶𝑖.
RC:越大越好

10.4 基于密度的方法

❑两个参数:
▪ Eps(𝜖):邻区最大半径
▪ MINPTS:该点的Eps邻域中的最小点数
▪ 如果一个对象的𝜖-邻域至少包含MINPTS个对象,则该对象是核心对象
❑ 𝑁𝐸𝑝𝑠(𝑞):{p属于D | dist(p,q)≤Eps}
❑直接密度可达:从点q 到点p直接密度可达, if
▪ p属于𝑁𝐸𝑝𝑠(𝑞)
▪ 核心点条件: |NEps (q)| ≥ MinPts

❑密度可达:
▪ 点p是从点q密度可达的,如果存在一个点链p1,…,pn,p1=q,pn=p;并且𝑝𝑖+1是从𝑝𝑖直接密度可达的
❑密度相连
▪ 点p与点q是密度连通的,如果存在一个点o使得p和q都是从o 密度可达的

❑D的子集C(C⊆D)是一个簇,如果满足以下两个条件:

  1. 对任意两个对象o1和o2 ∈C , o1和o2是密度相连的
  2. 不存在对象o∈C和另一个对象o’∈(D-C),使得o和o’是密度相连的

DBSCAN聚类
❑算法
▪ 任意选择点p
▪ 检索所有从p 密度可达的点,Eps和MinPts
▪ 如果p是一个核心点,则形成一个聚类,添加邻域内的点
▪ 如果p是一个边界点,那么没有点是可以从p密度到达的,DBSCAN访问数据库
的下一个点
▪ 继续该过程,直到处理完所有点数
❑计算复杂度
▪ 如果使用空间索引,DBSCAN的计算复杂度为𝑂(𝑛 log 𝑛),其中n是数据库对象
的数量
▪ 否则,复杂度为𝑂(𝑛2)

10.5 基于网格的方法

10.6 聚类评估

第十二章 离群点检测

12.1 离群点和离群点分析

  • 离群点: 是一个数据对象,它显著不同于其他数据对象,好像是被不同的机制产生的样
    ▪ Ex.: 异常信用卡消费
  • 离群点不同于噪声数据
    ▪ 噪声是测量变量中的随机误差或方差
    ▪ 在离群点检测之前应去除噪声
  • 离群点是有趣的:它违反了生成正常数据的机制
  • 离群值检测与新颖性检测
  • 应用: 信用卡欺诈检测、电信欺诈检测、客户细分、医学分析

离群点的类型
三类:全局离群点、情境(条件)离群点和集体离群点
数据集可能有多种类型的离群点,一个对象可能属于多种类型的离群点

  1. 全局离群点(or 点异常)
    ▪ 明显偏离数据集的其余部分
    ▪ Ex. 计算机网络中的入侵检测
    ▪ 问题: 找到合适的偏离度量
  2. 情境(条件)离群点
    ▪ 如果关于对象的特定情境,它显著地偏离其他对象
    ▪ Ex. 28o C : 离群点? (取决于时间和地点?)
    ▪ 所考虑数据对象的属性应分为两组
    ▪ 情境属性:定义情境,例如时间和位置
    ▪ 行为属性:对象的特征,用于离群点评估,例如温度
    ▪ 情境离群点可以看作局部离群点的推广
    ▪ 局部离群点是基于密度的离群点检测方法引进的概念
    ▪ 数据集中的一个对象是局部离群点,如果它的密度显著地偏离他所在的局部区域的密度
    ▪ 问题: 如何定义有意义的情境?
  3. 集体离群点
    ▪ 数据对象的子集集体显着偏离整个数据集,即使单个数据对象可能不是离群点
    ▪ 应用: E.g., 入侵检测:
    ▪ 当多台计算机不断互相发送拒绝服务包时
    ▪ 集体离群点检测
    ▪ 不仅必须考虑个体对象的行为,而且还要考虑对象组群的行为
    ▪ 为了检测集体离群点,需要对象之间联系的背景知识,如对象之间的距离或者相似性测量方法

离群点检测的挑战

  1. 正确对象和离群点的有效建模
    ▪ 难以枚举应用中所有可能的正常行为
    ▪ 正常对象和离群对象之间的边界通常不清晰
  2. 针对特定应用的离群点检测
    ▪ 对象间距离度量的选择和对象间关系模型通常依赖于具体的应用
    ▪ 例如,临床数据:小的偏差可能是离群点; 而在营销分析中,波动较大
  3. 处理离群点检测中的噪声
    ▪ 噪声可能会扭曲正常对象并模糊正常对象和离群点之间的区别。 它可能
    隐藏离群点并降低离群点检测的有效性
  4. 可理解性
    ▪ 理解为什么这些是离群点:检测的理由
    ▪ 指定离群点的程度:对象被正常机制生成的可能性

12.2 离群点检测方法

离群点检测方法的两种分类方式:
▪ 根据是否可以得到用户标注的离群点示例:监督、半监督与无监督方法
▪ 基于对正常数据和离群点的假设:统计的、基于接近度的和基于聚类的方法

离群点检测 I: 监督方法

  • 将离群点检测建模为分类问题
    ▪ 由领域专家检查的用于训练和测试的样本
  • 有效学习离群点检测分类器的方法:
    ▪ 对正常对象建模并将与模型不匹配的对象报告为离群点, or
    ▪ 对离群点进行建模并将那些与模型不匹配的离群点视为正常值
  • 挑战
    ▪ 不平衡类,即离群点很少见:提升异常类并弥补一些人工离群点
    ▪ 尽可能多地捕获离群点,即召回率比精确率更重要

离群点检测 II: 无监督方法

  • 假定: 正常对象在某种程度上是“聚类的”
  • 离群值应该远离任何正常对象组
  • 弱点:无法有效检测集体离群点
    ▪ 正常对象可能没有任何强模式,但集体离群点可能在小范围内具有高度相似性
  • Ex. 在一些入侵或病毒检测中,正常活动是多种多样的
    ▪ 无监督方法可能具有较高的假正例率,但仍会遗漏许多真正的离群点.
    ▪ 监督方法可以更有效,例如,识别攻击某些关键资源
  • 许多聚类方法可以适用于无监督方法
    ▪ 中心思想:先找出簇,不属于簇的对象都被检测为离群点
    ▪ 问题 1:难以区分噪声和离群点
    ▪ 问题 2:聚类代价高昂,离群点远少于正常对象
    ▪ 较新的方法:直接处理离群点

离群点检测 III: 半监督方法

  • 在许多应用中,标记数据的数量通常很少:标签可能仅在离群点上,仅在正常对象上,或两者兼而有之
  • 半监督离群点检测:被视为半监督学习的应用
  • 如果有一些标记的正常对象可用
    ▪ 使用标记的示例和邻近的未标记对象来训练正常对象的模型
    ▪ 那些不符合正常对象模型的被检测为离群点
  • 如果只有一些标记的离群点可用,少量标记的离群点很多不能很好地覆盖可能的离群点

12.3 统计方法

❑统计方法假设数据集中的对象是由随机过程(生成模型)生成的
❑思路:学习一个拟合给定数据集的生成模型,然后将模型低概率区域的对象识别为离群点
❑方法分为两类:参数与非参数
❑参数方法
▪ 假设正态数据由参数为 θ 的参数分布生成
▪ 参数分布 f(x, θ) 的概率密度函数给出了对象 x 由该分布生成的概率
▪ 这个值越小,x越有可能是离群值
❑非参数方法
▪ 不假设先验统计模型并根据输入数据确定模型
▪ 并非完全无参数但考虑到参数的数量和性质是灵活的并且不是预先固定的
▪ 示例:直方图和核密度估计

参数方法 I: 基于正态分布的一元离群点检测
❑单变量数据:仅包含一个属性或变量的数据集
❑通常假设数据是从正态分布生成的,从输入数据中学习参数,将概率低的点识别为离群点
在这里插入图片描述

参数方法 II: Grubb’s 检测
单变量离群值检测:Grubb’s test(最大标准残差检验)
在这里插入图片描述
参数方法 III: 多元离群点检测
❑ 多元数据: 涉及两个或多个属性或变量的数据
❑ 将多变量离群点检测任务转化为单变量离群点检测问题
在这里插入图片描述
参数方法 IV: 使用混合参数分布
❑假设正态分布生成的数据有时会被过度简化
❑Ex. (右图): 两个簇之间的对象不能被捕获为离群点,因为它们接近估计的平均值在这里插入图片描述

▪ 为了克服这个问题,假设正态数据是由两个正态分布生成的。 对于数据集中的任何对象 o,由两种分布的混合生成 o 的概率由下式给出
在这里插入图片描述
其中 fθ1 和 fθ2 是 θ1 和 θ2 的概率密度函数
▪ 可以使用期望最大化(EM) 算法,由数据学习参数μ1, σ1, μ2, σ2
▪ 如果它不属于任何簇,则对象o 被检测为离群点

非参数方法: 使用直方图检测离群点
❑正常数据的模型是从输入数据中学习的,没有任何先验结构。
❑通常对数据做出更少的假设,因此可以适用于更多场景
◼ 问题:很难为直方图选择合适的 bin 大小
箱太小 → 正常数据落入空的或稀疏箱;箱太大 → 离群点对象落入正常的箱中
◼ 解决方案:采用核密度估计来估计数据的概率密度分布。 如果估计的密度函数很高,则对象可能是正常的。 否则,它很可能是离群点.

12.4 基于临近性的方法

❑思路:远离其他对象的对象是离群点
❑基于临近性的方法的假设:离群值的临近性与数据集中大多数其他数据的临近性明显不同
❑两种基于临近性的离群点检测方法
▪ 基于距离的离群点检测:如果对象 o 的邻域没有足够的其他点,则对象o 是离群点
▪ 基于密度的离群点检测:如果对象 o 的密度比其邻居的密度相对低得多,则该对象 o 是离群点

12.5 基于聚类的方法

❑ 一个对象是离群点如果
(1)它不属于任何簇
(2)对象与其最近的簇之间有很大的距离
(3)它属于一个小的或稀疏的簇
◼ 情况 1:不属于任何簇
使用基于密度的聚类方法,例如 DBSCAN
◼ 情况 2:远离最近的簇
使用 k-means,将数据点划分为簇
对于每个对象 o,根据其与最近中心的距离分配一个离群点分数
如果 dist(o, c0)/avg_dist(co) 很大,很可能是离群点

❑FindCBLOF:检测小簇中的离群点
▪ 查找簇,并按大小递减排序
▪ 为每个数据点分配一个基于聚类的局部离群点因子(CBLOF)
▪ 如果对象 p 属于一个大簇,CBLOF = 簇大小 X p和簇的相似性
▪ 如果 p 属于一个小簇,CBLOF =簇大小 X p和最近的大簇的相似性

优点
▪ 无需任何标记数据即可检测离群点
▪ 适用于多种类型的数据
▪ 簇可以看作是数据的汇总
▪ 一旦获得簇,只需要将任何对象与簇进行比较以确定它是否是离群点

弱点
▪ 有效性在很大程度上取决于所使用的聚类方法——它们可能未针对离群点检测进行优化
▪ 高计算成本:需要先找到簇

12.6 基于分类的方法

基于分类的方法 I: 使用一类模型检测离群点
❑思路:训练一个可以区分“正常”数据和离群点的分类模型
❑蛮力方法:考虑一个训练集,其中包含标记为“正常”的样本和其他标记为“离群点”的样本
▪ 但是,训练集通常存在严重偏差:“正常”样本的数量可能远远超过离群样本的数量
▪ 无法检测到看不见的异常点
◼ 一类模型检测离群点:构建一个分类器来仅描述普通类。
◼ 使用one-class SVM等分类方法学习正常类的决策边界
◼ 任何不属于正常类(不在决策边界内)的样本都被声明为离群点
◼ 优点:可以检测新的离群点,这些离群点可能不会出现在训练集中的任何异常对象附近
◼ 扩展:普通对象可能属于多个类

基于分类的方法 II: 通过半监督学习
❑半监督学习:结合基于分类和基于聚类的方法
❑方法
▪ 使用基于聚类的方法,找到一个大簇 C 和一个小簇C1
▪ 由于 C 中的某些对象带有“正常”标签,因此将 C 中的所有对象视为正常
▪ 使用这个簇的一类模型来识别离群点检测中的正常对象
▪ 由于集群 C1 中的某些对象带有“离群点”标签,因此将C1 中的所有对象声明为离群点
▪ 任何不属于 C 模型的对象(例如 a)也被视为离群点
◼ 基于分类的离群点检测方法评论
◼ 优势:离群点检测速度快
◼ 缺点:质量在很大程度上取决于训练集的可用性和质量,往往难以获得具有代表性和高质量的训练数据

12.7 挖掘情景离群点和集体离群点

12.8 高维数据中的离群点检测

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇笔记主要介绍了Pandas模块的基本操作和使用方法。Pandas是Python中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维表格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理是数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值