本章讨论一些与数据相关的问题,它们对于成功的数据挖掘是重要的。
数据类型 数据集的不同表现在多方面。例如,用来描述数据对象的属性可以具有不同的类型——定量的或定性的,并且数据集可能具有特定的性质,例如,某些数据集包含时间序列或彼此之间具有明显联系的对象。毫不奇怪,数据的类型决定可以使用何种工具和技术来分析数据。此外,新的数据挖掘研究常常是由适应新的应用领域和新的数据类型的需要推动的。
数据的质量 数据通常远非完美。尽管大部分数据挖掘技术可以忍受某种程度的数据不完美,但是注重理解和提高数据质量将改进分析结果的质量。通常必须处理的数据质量问题包括存在噪声和离群点,数据遗漏、不一致或重复,数据有偏差,或者在别的方面,数据不代表描述所设想的现象或总体情况。
使数据更适合数据挖掘的预处理步骤 通常,原始数据必须加以处理,使之更适合于分析。目标之一是提高数据的质量,而其他目标则是关注修改数据,使之更好地适应特定的数据挖掘技术或工具。例如,可能需要将连续值属性(如长度)转换成具有离散的分类值的属性(如短、中等或长),以便使用特定的技术。另一个例子是,数据集属性的数目常常需要减少,因为当数据的属性较少时,许多技术将更加有效。
根据数据联系分析数据 数据分析的一种方法是找出数据对象之间的联系,之后使用这些联系而不是数据对象本身来进行其余的分析。例如,我们可以计算对象之间的相似度或距离,然后根据这种相似度或距离进行分析——聚类、分类或异常检测。有许多相似性或距离度量,而正确的选择取决于数据的类型和特定的应用。
例2.1 说明与数据相关的问题 为了进一步解释这些问题的重要性,考虑下面的假想情况。你收到某个医学研究者发来的电子邮件,涉及你渴望研究的一个项目。邮件的内容如下:
你好,
我已附上先前邮件提及的数据文件。每行包含一个病人的信息,由5个字段组成。我们想使用前面4个字段预测最后一个字段。因为我要出去几天,所以没有时间为你提供关于这些数据的更多信息,但希望不会耽误你太多。如果你不介意的话,我回来之后是否可以开会讨论你的初步结果?我可能会邀请我们小组的其他成员参加。
谢谢!几天之后见!
尽管有些疑虑,你还是开始着手分析这些数据。文件的前几行如下:
012 232 33.5 0 10.7
020 121 16.9 2 210.1
027 165 24.0 0 427.6
…
粗略观察这些数据并未发现什么不对。你抛开疑虑,并开始分析。数据文件只有1000行,比你希望的小,仅仅两天之后你认为你已经取得一些进展。你去参加会议,在等待其他人时,你开始与一位参与该项目工作的统计人员交谈。当听说你正在分析该项目的数据时,她请你向她简略介绍你的结果。
统计人员:哦,你得到了所有病人的数据?
数据挖掘者:是的。我还没有足够的时间分析,但是我的确有了一些有趣的结果。
统计人员:真棒。病人数据集的数据问题太多,我没什么进展。
数据挖掘者:啊?我没有听到任何问题。
统计人员:喔,首先是字段5,这是我们要预测的变量。分析这类数据的人都知道,如果使用这些值的日志,结果会更好,但是我们后来才发现这一点。他们告诉你了吗?
数据挖掘者:没有。
统计人员:你一定听说过字段4的问题了吧?它的测量范围应当是1到10,而0指示遗漏的值。但是,由于数据输入错误,所有的10都变成了0。可是,由于有些病人在这个字段上有遗漏值,不能确定该字段上的0实际是0还是10。不少记录都存在此问题。
数据挖掘者:有意思。还有其他问题吗?
统计人员:是的。字段2和3基本相同。我猜想你可能已经注意到了。
数据挖掘者:是的。但是,这些字段只是字段5的弱预测子。
统计人员:无论如何,尽管有这些问题,你还能够完成一些分析,这真让人吃惊。
数据挖掘者:实际上,我的结果相当好。字段1是字段5的很强的预测子。我很奇怪以前怎么没人注意到。
统计人员:什么?字段1只是一个标识号。
数据挖掘者:无论如何,我的结果在那儿。
统计人员:啊,不!我才想起来。在按字段5排序记录之后,我们加上了一个ID号。它们之间是存在很强的联系,但毫无意义。很抱歉!
尽管这一场景代表一种极端情况,但它强调“了解数据”的重要性。为此,本章将处理上面提到的四个问题,列举一些基本难点和标准解决方法。
2.1 数据类型
通常,数据集可以看作数据对象的集合。数据对象的其他名字是记录、点、向量、模式、事件、案例、样本、观测或实体。数据对象用一组刻画对象基本特性(如物体质量或事件发生时间)的属性描述。属性的其他名字是变量、特性、字段、特征或维。
例2.2 学生信息 通常,数据集是一个文件,其中对象是文件的记录(或行),而每个字段(或列)对应于一个属性。例如,表2-1显示包含学生信息的数据集。每行对应于一个学生,而每列是一个属性,描述学生的某一方面,如平均积分点(GPA)或标识号(ID)。
表2-1 包含学生信息的样本数据集
|
学生ID |
|
平均积分点(GPA) |
… |
|
1034262 1052663 1082246 |
四年级 二年级
|
3.24 3.51 3.62 |
… … … |
尽管基于记录的数据集在平展文件或关系数据库系统中都是常见的,但是数据集和存储数据的系统还有其他重要的类型。在2.1.2节,我们将讨论数据挖掘经常遇到的其他类型的数据集。然而,我们先考虑属性。
2.1.1 属性与度量
本节我们通过考虑使用何种类型的属性描述数据对象来处理描述数据的问题。我们首先定义属性,然后考虑属性类型的含义,最后介绍经常遇到的属性类型。
1. 什么是属性
我们从更详细的属性定义开始。
定义2.1 属性(attribute)是对象的性质或特性,它因对象而异,或随时间而变化。
例如,眼球颜色因人而异,而物体的温度随时间而变。注意:眼球颜色是一种符号属性,具有少量可能的值{棕色,黑色,蓝色,绿色,淡褐色,……},而温度是数值属性,可能具有无穷多个值。
在最基本的层面,属性并非数与符号。然而,为了讨论和更精细地分析对象的特性,我们将数和符号赋予它们。为了用一种明确定义的方式做到这一点,我们需要测量标度。
定义2.2 测量标度(measurement scale)是将数值或符号值与对象的属性相关联的规则(函数)。
形式上,测量过程是使用测量标度将一个值与一个特定对象的特定属性相关联。尽管这看上去有点抽象,但是任何时候,我们总在进行这样的测量过程。例如,踏上磅浴室的秤称体重;将人分为男女;清点会议室的椅子数目;确定是否能够为所有与会者提供足够的座位。在所有这些情况下,一个对象属性的“物理值”都被映射到一个数值或符号值。
有了这些背景,现在我们可以讨论属性类型,这对于确定特定的数据分析技术是否与特定的属性类型一致是一个重要的概念。
2. 属性类型
从前面的讨论显而易见,属性的性质不必与用来度量它的值的性质相同。换句话说,用来代表属性的值可能具有不同于属性本身的性质,并且反之亦然。我们用两个例子解释。
例2.3 雇员年龄和ID号 可能与雇员有关的两个属性是ID和年龄。两个属性都可以用整数表示。然而,谈论雇员的平均年龄是有意义的,但是谈论雇员的平均ID却毫无意义。的确,我们希望ID属性所表达的唯一方面是它们互不相同。因而,为雇员ID的唯一合法操作是判定它们是否相等。然而,使用整数表示雇员ID时,并没暗示有此限制。对于年龄属性而言,用来表示年龄的整数的性质与该属性的性质大同小异。尽管如此,这种对应仍不完全。例如,年龄有最大值,而整数没有。
例2.4 线段长度 考虑图2-1,它展示一些线段对象和如何用两种不同的方法将这些对象的长度属性映射到整数。从上到下,每条后继线段都是通过最上面的线段自我添加而形成的。这样,第二条线段是最上面的线段两次相连而形成的,第三条线段是最上面的线段三次相连而形成的,依次类推。从物理意义上讲,所有的线段都是第一条线段的倍数。这个事实由图右边的测量捕获,但未被左边的测量捕获。更准确地说,左边的测量标度仅仅捕获长度属性的序,而右边的标度同时捕获序和可加性的性质。因此,属性可以用一种不描述属性全部性质的方式测量。

图2-1 两种不同的测量标度下的线段长度测量
属性的类型应当告诉我们,属性的哪些性质反映在用于测量它的值中。知道属性的类型是重要的,因为它告诉我们测量值的哪些性质与属性的基本性质一致,从而使得我们可以避免诸如计算雇员的平均ID这样的愚蠢行为。注意,通常将属性的类型称作测量标度的类型。
3. 属性的不同类型
一种指定属性类型的有用(和简单)的办法是,确定对应于属性基本性质的数值的性质。例如,长度的属性可以有数值的许多性质。按照长度比较和确定对象的序,以及谈论长度的差和比例是有意义的。数值的如下性质(操作)常常用来描述属性。
(1) 相异性 = 和 ¹。
(2) 序 <、≤、>和≥。
(3) 加法 +和 -。
(4) 乘法 *和 ¤。
给定这些性质,我们可以定义四种属性类型:标称(nominal)、序数(ordinal)、区间(interval)和比率(ratio)。表2-2给出这些类型的定义,以及每种类型上合法的统计操作等信息。每种属性类型拥有其上方属性类型上的所有性质和操作。因此,对于标称、序数和区间属性合法的任何性质或操作,对于比率属性也合法。换句话说,属性类型的定义是累积的。当然,这并不意味着对于一种属性类型合适的操作,对其上方的属性类型也合适。
表2-2 不同的属性类型
|
属性类型 |
描 述 |
例 子 |
操 作 |
|
|
分类的 (定性的) |
标称 |
标称属性的值仅仅只是不同的名字,即标称值只提供足够的信息以区分对象 (=,¹) |
邮政编码、雇员ID号、眼球颜色、性别 |
众数、熵、列联相关、c2检验 |
|
序数 |
序数属性的值提供足够的信息确定对象的序 (<,>) |
矿石硬度、{好,较好,最好}、成绩、街道号码 |
中值、百分位、秩相关、游程检验、符号检验 |
|
|
数值的 (定量的) |
区间 |
对于区间属性,值之间的差是有意义的,即存在测量单位 (+,-) |
日历日期、摄氏或华氏温度 |
均值、标准差、皮尔逊相关、t和F检验 |
|
比率 |
对于比率变量,差和比率都是有意义的 (*,/) |
绝对温度、货币量、计数、年龄、质量、长度、电流 |
几何平均、调和平均、百分比变差 |
|
标称和序数属性统称分类的(categorical)或定性的(qualitative)属性。顾名思义,定性属性(如雇员ID)不具有数的大部分性质。即便使用数(即整数)表示,也应当像对待符号一样对待它们。其余两种类型的属性,即区间和比率属性,统称定量的(quantitative)或数值的(numeric)属性。定量属性用数表示,并且具有数的大部分性质。注意:定量属性可以是整数值或连续值。
属性的类型也可以用不改变属性意义的变换来描述。实际上,心理学家S. Smith Stevens最先用允许的变换(permissible transformation)定义了表2-2所示的属性类型。例如,如果长度用米而不是用英尺度量,长度属性的意义并未改变。
对特定的属性类型有意义的统计操作是这样一些操作,当使用保持属性意义的变换对属性进行变换时,它们产生相同的结果。例如,用米和英尺为单位进行度量时,同一组对象的平均长度数值是不同的,但是两个平均值都代表相同的长度。表2-3给出表2-2中四种属性类型的允许的(保持意义的)变换。
表2-3 定义属性层次的变换
|
属性类型 |
变 换 |
注 释 |
|
|
分类的 (定性的) |
标称 |
任何一对一变换,例如值的一个排列 |
如果所有雇员的ID号都重新赋值,不会导致任何不同 |
|
序数 |
值的保序变换,即 新值= f(旧值), 其中f是单调函数 |
包括概念好、较好、最好的属性可以完全等价地用值{1, 2, 3}或用{0.5, 1, 10}表示 |
|
|
数值的 (定量的) |
区间 |
新值 = a*旧值+ b, 其中a、b是常数 |
华氏和摄氏温度标度零度的位置和1度的大小(单位)不同 |
|
比率 |
新值= a*旧值 |
长度可以用米或英尺度量 |
|
例2.5 温度标度 温度为前面介绍的一些概念提供很好的解释。首先,温度可以是区间属性或比率属性,这取决于其测量标度。当温度用绝对标度测量时,从物理意义上讲,2°的温度是1°的两倍。当温度用华氏或摄氏标度测量时并非如此,因为物理上华氏(摄氏)1°温度与华氏(摄氏)2°温度相差并不太多。问题是从物理意义上讲,华氏和摄氏标度的零点是硬性规定的,因此,华氏或摄氏温度的比率并无物理意义。
4. 用值的个数描述属性
区分属性的一种独立方法是用属性可能取值的个数。
l 离散的(discrete) 离散属性具有有限或无限可数个值。这样的属性可以是分类的,如邮政编码或ID号,或者是数值的,如计数。通常,离散属性用整数变量表示。二元属性(binary attribute)是离散属性的一种特殊情况,并只接受两个值,如真/假、是/否、男/女或0/1。通常,二元属性用布尔变量表示,或者用只取两个值0或1的整型变量表示。
l 连续的(continuous) 连续属性是取实数值的属性。例子包括温度、高度或重量等属性。通常,连续属性用浮点变量表示。实践中,实数值只能用有限的精度测量和表示。
从理论上讲,任何测量标度类型(标称的、序数的、区间的和比率的)都可以与基于属性值个数的任意类型(二元的、离散的和连续的)组合。然而,有些组合并不常出现,或者没有什么意义。例如,很难想象一个实际数据集包含连续的二元属性。通常,标称和序数属性是二元的或离散的,而区间和比率属性是连续的。然而,计数属性(count attribute)是离散的,也是比率属性。
5. 非对称的属性
对于非对称的属性(asymmetric attribute),出现非零属性值才是重要的。考虑数据集,其中每个对象是一个学生,而每个属性记录学生是否选修大学的某个课程。对于某个学生,如果他选修了对应于某属性的课程,该属性取值1,否则取值0。由于学生只选修可选课程的很小一部分,这种数据集的大部分值为0。因此,关注非零值将更有意义、更有效。例如,如果课程很多,学生在他们不选修的课程上比较,则大部分学生都非常相似。只有非零值才重要的二元属性是非对称的二元属性(asymmetric binary attribute)。这类属性对于关联分析特别重要。关联分析在第6章讨论。也可能有离散的或连续的非对称特征。例如,如果记录每门课程的学分,则结果数据集将包含非对称的离散属性或连续属性。
2.1.2 数据集的类型
数据集的类型有多种,并且随着数据挖掘的发展与成熟,更多类型的数据集将用于分析。本节我们介绍一些很常见的类型。为方便起见,我们将数据集类型分成三组:记录数据、基于图形的数据和有序的数据。这些分类不能涵盖所有的可能,存在其他可能的分组。
1. 数据集的一般特性
在提供特定类型数据集的细节之前,我们先讨论适用于许多数据集并对所使用的数据挖掘技术具有重要影响的三个特性:维度、稀疏性和分辨率。
维度(dimensionality) 数据集的维度是数据集中的对象具有的属性数目。低维度数据往往与中、高维度数据有质的不同。确实,分析高维度数据的困难有时称为维灾难(curse of dimensionality)。正因为如此,数据预处理的一个重要动机就是维归约(dimensionality reduction)。这些问题在本章的后面更深入地讨论。
稀疏性(sparsity) 对于一些数据集,如具有非对称特征的数据集,一个对象的大部分属性上的值都为0;在许多情况下,非零项不到1%。实际上,稀疏性是一个优点,因为只有非零值才需要存储和处理。这导致节省大量的计算时间和存储空间。此外,有些数据挖掘算法仅适合处理稀疏数据。
分辨率(resolution) 常常可以在不同的分辨率下得到数据,并且在不同的分辨率下数据的性质也不同。例如,在数米的分辨率下,地球表面看上去很不平坦,但在数十公里的分辨率下却相对平坦。数据的模式也依赖于分辨率。如果分辨率太高,模式可能看不到,或者掩埋在噪声中;如果分辨率太低,模式可能不出现。例如,小时标度下的气压变化反映风暴或其他天气系统的移动;在月标度下,这些现象就检测不到。
2. 记录数据
许多数据挖掘任务都假定数据集是记录(数据对象)的汇集,每个记录包含固定的数据字段(属性)集。见图2-2a。对于记录数据的大部分基本形式,记录之间或数据字段之间没有明显的联系,并且每个记录(对象)具有相同的属性集。记录数据通常存放在平展文件或关系数据库中。关系数据库当然不仅仅是记录的汇集,它还包含更多的信息,但是数据挖掘一般并不使用关系数据库的更多信息。更确切地说,数据库充当查找记录的方便场所。下面介绍不同类型的记录数据,并用图2-2加以说明。

图2-2 记录数据的不同变体
事务数据或购物篮数据 事务数据(transaction data)是一种特殊类型的记录数据,其中每个记录(事务)涉及一个项的集合。考虑一个杂货店。顾客一次购物所购买的商品的集合就构成一个事务,而购买的商品是项。这种类型的数据称作购物篮数据(market basket data),因为记录中的项是一位顾客“购物篮”中的商品。事务数据是项的集合的集族,但是也能将它视为记录的集合,其中记录的字段是非对称的属性。通常,这些属性是二元的,指出商品是否已买。更一般地,这些属性可以是离散的或连续的,例如表示购买的商品数量或或购买商品的花费。图2-2b展示一个样本事务数据集。每一行代表一位顾客在一个特定时间购买的商品。
数据矩阵 如果一个数据集族中的所有数据对象都具有相同的数值属性集,则数据对象可以看作多维空间中的点(向量),其中每个维代表描述对象的一个不同属性。这样的数据对象集可以用一个m ´ n的矩阵表示,其中m行,一个对象一行;n列,一个属性一列。(也可以将数据对象用列表示,属性用行表示。)这种矩阵称作数据矩阵(data matrix)或模式矩阵(pattern matrix)。数据矩阵是记录数据的变体,但是,由于它由数值属性组成,可以使用标准的矩阵操作对数据进行变换和操纵,因此,对于大部分统计数据,数据矩阵是一种标准的数据格式。图2-2c示出一个样本数据矩阵。
稀疏数据矩阵 稀疏数据矩阵是数据矩阵的一种特殊情况,其中属性的类型相同并且是非对称的,即只有非零值才是重要的。事务数据是仅含0-1元素的稀疏数据矩阵的一个例子。另一个常见的例子是文档数据。特别地,如果忽略文档中词(术语)的次序,则文档可以用词向量表示,其中每个词是向量的一个分量(属性),而每个分量的值是对应词在文档中出现的次数。文档集合的这种表示通常称作文档—词矩阵(document-term matrix)。图2-2d显示了一个样本文档—词矩阵。文档是该矩阵的行,而词是矩阵的列。实践中,仅存放稀疏数据矩阵的非零项。
3. 基于图形的数据
有时,图形可以方便而有效地表示数据。我们考虑两种特殊情况:(1) 图形捕获数据对象之间的联系,(2) 数据对象本身用图形表示。
带有对象之间联系的数据 对象之间的联系常常携带重要信息。在这种情况下,数据常常用图形表示。特殊地,数据对象映射到图的结点,而对象之间的联系用对象之间的链和诸如方向、权值等链性质表示。考虑万维网上的网页,页面上包含文本和指向其他页面的链接。为了处理搜索查询,Web搜索引擎收集并处理网页,提取它们的内容。然而,众所周知,指向或出自每个页面的链接为查询提供关于Web相关性的大量信息,因而必须考虑。图2-3a显示一个链接的网页集。

(a) 链接的网页 (b) 苯分子
图2-3 不同的图形数据
具有图形对象的数据 如果对象具有结构,即对象包含具有联系的子对象,则这样的对象常常用图形表示。例如,化合物的结构可以用图形表示,其中结点是原子,结点之间的链是化学键。图2-3b给出化合物苯的球—棍图,包含碳原子(黑色)和氢原子(灰色)。图形表示使得可以确定何种子结构频繁地出现在化合物的集合中,并且查明这些子结构中是否有某种子结构与诸如熔点或生成热等特定的化学性质有关。子结构挖掘是分析这类数据的一个数据挖掘分支,将在7.5节讨论。
4. 有序数据
对于某些数据类型,属性具有涉及时间或空间序的联系。有序数据的不同类型在下面介绍,并显示在图2-4中。

图2-4 不同的有序数据
时序数据 时序数据(sequential data)也称时间数据(temporal data),可以看作记录数据的扩充,其中每个记录包含一个与之相关联的时间。考虑存储事务发生时间的零售事务数据。时间信息使得我们可以发现如“万圣节前夕糖果销售高峰”形式的模式。时间也可以与每个属性相关联,例如,每个记录可以是一位顾客的购物历史,包含不同时间购买的商品列表。使用这些信息,可能发现如“购买DVD播放机的人趋向于在买后不久购买DVD”形式的模式。
图2-4a给出一个时序事务数据的例子。有5个不同的时间——t1、t2、t3、t4和t5;3位不同的顾客——C1、C2和C3;5种不同的商品——A、B、C、D和E。在图上面的表中,每行对应于一位顾客在特定的时间购买的商品。例如,在时间t3,顾客C2购买了商品A和D。下面的表显示相同的信息,但每行对应于一位顾客。每行包含涉及该顾客的每个事务信息,其中一个事务包含一个商品的集合和购买这些商品的时间,例如,顾客C3在时间t2购买了商品A和C。
序列数据 序列数据(sequence data)是一个数据集合,它是个体项的序列,如词或字母的序列。除没有时间戳之外,它与时序数据非常相似。作为替换,有序序列中有位置。例如,动植物的遗传信息可以用称作基因的核苷酸的序列表示。与遗传序列数据有关的许多问题都涉及由核苷酸序列的相似性预测基因结构和功能的相似性。图2-4b显示用4种核苷酸表示的一段人类基因码。所有DNA都可以用A、T、G和C 4种核苷酸构造。
时间序列数据 时间序列数据(time series data)是一种特殊的时序数据,其中每个记录都是一个时间序列(time series),即一段时间的测量序列。例如,金融数据集可能包含各种股票日价格的时间序列对象。另一个例子,考虑图2-4c,该图显示明尼阿波利斯从1982年到1994年的月平均气温的时间序列。在分析时间数据时,重要的是要考虑时间自相关(temporal autocorrelation),即如果两个测量的时间很接近,这些测量的值通常非常相似。
空间数据 有些对象除了其他类型的属性之外,还具有空间属性,如位置或区域。空间数据的一个例子是从不同的地理位置收集的气象数据(降水量、气温、气压)。空间数据的一个重要特点是空间自相关性(spatial autocorrelation),即物理上靠近的对象趋向于在其他方面也相似。这样,地球上相互靠近的两个点通常具有相近的气温和降水量。
空间数据的重要例子是科学和工程数据集,其数据取自二维或三维网格上正则或非正则分布的点上的测量或模型输出。例如,地球科学数据集记录在各种分辨率(如每度)下经纬度球面网格点(网格单元)上测量的温度和气压(见图2-4d)。另一个例子,在瓦斯流模拟中,可以对模拟中的每个网格点记录流速和方向。
5. 处理非记录数据
大部分数据挖掘算法都是为记录数据或其变体(如事务数据和数据矩阵)设计的。通过从数据对象中提取特征,并使用这些特征创建对应于每个对象的记录,面向记录的技术也可以用于非记录数据。考虑前面介绍的化学结构数据。给定一个常见的子结构集合,每个化合物都可以用一个具有二元属性的记录表示,这些二元属性指出化合物是否包含特定的子结构。这样的表示实际上是事务数据集,其中事务是化合物,而项是子结构。
在某些情况下,容易用记录形式表示数据,但是这类表示并不能捕获数据中的所有信息。考虑这样的时间空间数据,它由空间网格每一点上的时间系列组成。通常,这种数据存放在数据矩阵中,其中每行代表一个位置,而每列代表一个特定的时间点。然而,这种表示并不能明确地表示属性之间存在的时间联系以及对象之间存在的空间联系。这并不意味这种表示不合适,而是说分析时必须考虑这些联系。例如,在使用数据挖掘技术时,假定属性之间在统计上是相互独立的并不是一个好主意。




