丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
尽管有些疑虑,你还是开始着手分析这些数据。文件的前几行如下:
粗略观察这些数据并未发现什么不对。你抛开疑虑,并开始分析。数据文件只有1000行,比你希望的小,24两天之后你认为你已经取得一些进展。你去参加会议,在等待其他人时,你开始与一位参与该项目工作的统计人员交谈。当听说你正在分析该项目的数据时,她请你向她简略介绍你的结果。
尽管这一场景代表一种极端情况,但它强调了“了解数据”的重要性。为此,本章将讨论上面提到的4个问题,列举一些基本难点和标准解决方法。
基于记录的数据集在平展文件或关系数据库系统中是最常见的,但是还有其他类型的数据集和存储数据的系统。在2.1.2节,我们将讨论数据挖掘中经常遇到的其他类型的数据集。然而,我们先考虑属性。
本小节考虑使用何种类型的属性描述数据对象。首先定义属性,然后考虑属性类型的含义,最后介绍经常遇到的属性类型。
知道属性的类型很重要,因为它告诉我们测量值的哪些性质与属性的基本性质一致,从而使得我们可以避免诸如计算雇员的平均ID这样的愚蠢行为。
一种指定属性类型的有用(和简单)的办法是,确定对应属性基本性质的数值的性质。例如,长度的属性可以有数值的许多性质。按照长度比较对象,确定对象的排序,以及谈论长度的差和比例都是有意义的。数值的如下性质(操作)常常用来描述属性。1)相异性:=和≠。2)序:<、≤、>和≥。3)加法:+和-。4)乘法:*和/。给定这些性质,我们可以定义四种属性类型:标称(nominal)、序数(ordinal)、区间(interval)和比率(ratio)。表2.2给出这些类型的定义,以及每种类型上有哪些合法的统计操作等信息。每种属性类型拥有其上方属性类型上的所有性质和操作。因此,对于标称、序数和区间属性合法的任何性质或操作,对于比率属性也合法。换句话说,属性类型的定义是累积的。29当然,对于某种属性类型合适的统计操作,对其上方的属性类型就不一定合适。
标称和序数属性统称分类的(categorical)或定性的(qualitative)属性。顾名思义,定性属性(如雇员ID)不具有数的大部分性质。即便使用数(即整数)表示,也应当像对待符号一样对待它们。其余两种类型的属性,即区间和比率属性,统称定量的(quantitative)或数值的(numeric)属性。定量属性用数表示,并且具有数的大部分性质。注意:定量属性可以是整数值或连续值。属性的类型也可以30用不改变属性意义的变换来描述。实际上,心理学家S.SmithStevens最先用允许的变换(permissibletransformation)定义了表2.2所示的属性类型。例如,如果长度分别用米和英尺度量,其属性的意义并未改变。对特定的属性类型有意义的统计操作是:当使用保持属性意义的变换对属性进行变换时,它们产生的结果相同。例如,用米和英尺为单位进行度量时,同一组对象的平均长度数值是不同的,但是两个平均值都代表相同的长度。表2.3给出表2.2中四种属性类型的允许的(保持意义的)变换。
例2.5温度标度温度可以很好地解释前面介绍的一些概念。首先,温度可以是区间属性或比率属性,这取决于其测量标度。当温度用开尔文温标测量时,从物理意义上讲,2度的温度是1度的两倍;当温度用华氏或摄氏标度测量时则并非如此,因为这时1度温度与2度温度相差并不太多。31问题是从物理意义上讲,华氏和摄氏标度的零点是硬性规定的,因此,华氏或摄氏温度的比率并无物理意义。
区分属性的一种独立方法是根据属性可能取值的个数来判断。
从理论上讲,任何测量标度类型(标称的、序数的、区间的和比率的)都可以与基于属性值个数的任意类型(二元的、离散的和连续的)组合。然而,有些组合并不常出现,或者没有什么意义。例如,很难想象一个实际数据集包含连续的二元属性。通常,标称和序数属性是二元的或离散的,而区间和比率属性是连续的。然而,计数属性(countattribute)是离散的,也是比率属性。
正如本章其余部分所描述的,数据有许多不同的类型。先前关于测量标度的讨论虽然有用,但并不完整,仍有一些局限。因此我们给出如下见解和指引。
总之,确定哪些操作可以在特定的属性或属性集合上执行,而不影响分析的完整性是十分具有挑战性的。幸运的是,既定的做法往往是一个可靠的指南,而有时候标准做法也有可能是错误的或有局限性的。
数据集的类型有多种,并且随着数据挖掘的发展与成熟,还会有更多类型的数据集用于分析。本小节介绍一些很常见的类型。为方便起见,我们将数据集的类型分成三组:记录数据、基于图形的数据和有序数据。这些分类不能涵盖所有的可能性,肯定还存在其他的分组。
许多数据挖掘任务都假定数据集是记录(数据对象)的汇集,每个记录包含固定的数据字段(属性)集,如图2.2a所示。对于记录数据的大部分基本形式,记录之间或数据字段之间没有明显的联系,并且每个记录(对象)具有相同的属性集。记录数据通常存放在平展文件或关系数据库中。关系数据库当然不仅仅是记录的汇集,它还包含更多的信息,但是数据挖掘一般并不使用关系数据库的这些信息。35更确切地说,数据库是查找记录的方便场所。下面介绍不同类型的记录数据,并用图2.2加以说明。
离群点(outlier)是在某种意义上具有不同于数据集中其他大部分数据对象的特征的数据对象,或是相对于该属性的典型值来说不寻常的属性值。我们也称其为异常(anomalous)对象或异常值。有许多定义离群点的方法,并且统计学和数据挖掘界已经提出了很多不同的定义。此外,区别噪声和离群点这两个概念是非常重要的。与噪声不同,离群点可以是合法的数据对象或值。例如,在欺诈和网络入侵检测中,目标就是在大量的正常对象或事件中找到异常对象或事件。第9章会更详细地讨论异常检测。
数据集可以包含重复或几乎重复的数据对象。许多人都收到过重复的邮件,因为它们以稍微不相同的名字多次出现在数据库中。为了检测并删除这种重复,必须处理两个主要问题。首先,如果两个对象实际代表同一个对象,则对应的属性值必然不同,必须解决这些不一致的值;其次,需要避免意外地将两个相似但并非重复的数据对象(如两个人具有相同姓名)合并在一起。术语去重复(deduplication)通常用来表示处理这些问题的过程。在某些情况下,两个或多个对象在数据库的属性度量上是相同的,但是仍然代表不同的对象。这种重复是合法的。但是,如果某些算法设计中没有专门考虑这些属性可能相同的对象,就还是会导致问题。本章习题13就是这样的一个例子。
有时,“少就是多”,而聚集就是如此。聚集(aggregation)将两个或多个对象合并成单个对象。考虑一个由事务(数据对象)组成的数据集,它记录一年中不同日期在各地(MinneapolisChicago……)商店的商品日销售情况,见表2.4。对该数据集的事务进行聚集的一种方法是,用一个商店的事务替换该商店的所有事务。这把每天出现在一个商店的成百上千个事务记录归约成单个日事务,而每天的数据对象的个数减少为商店的个数。
例2.9确定合适的样本容量为了说明确定合适的样本容量需要系统的方法,考虑下面的任务。
使用抽样可以有效地解决该问题。一种方法是取数据点的一个小样本,逐对计算点之间的相似性,然后形成高度相似的点组。从每个点组取一个点,则可以得到具有代表性的点的集合。然而,按照该方法,我们需要确定样本的容量,它以很高的概率确保得到期望的结果,即从每个簇至少找出一个代表点。图2.10b显示了随着样本容量从10变化到60,从10个组的每一个组中得到一个对象的概率。有趣的是,使用容量为20的样本,只有很小的机会(20%)得到包含所有10个组的样本。即便使用容量为30的样本,得到不包含所有10个组中对象的样本的概率也很高(几乎40%)。该问题将在第7章习题4讨论聚类时进一步考察。
由于可能很难确定合适的样本容量,因此有时需要使用自适应(adaptive)或渐进抽样(progressivesampling)方法。这些方法从一个小样本开始,然后增加样本容量直至得到足够容量的样本。尽管这种技术不需要在一开始就确定正确的样本容量,但是需要评估样本的方法,确定它是否足够大。例如,假定使用渐进抽样来学习一个预测模型。尽管预测模型的准确率随样本容量的增加而增加,但是在某一点准确率的增加趋于稳定。我们希望在稳定点停止增加样本容量。通过掌握模型准确率随样本逐渐增大的变化情况,并通过选取接近于当前容量的其他样本,我们可以估计出与稳定点的接近程度,从而停止抽样。
维灾难是指这样的现象:随着数据维度的增加,许多数据分析变得非常困难。特别是随着维度增加,数据在它所占据的空间中越来越稀疏。因此,我们观测到的数据对象很可能不是总体数据对象的代表性样本。对于分类,这可能意味着没有足够的数据对象来创建模型,将所有可能的对象可靠地指派到一个类。对于聚类,点之间的密度和距离的定义(对聚类是至关重要的)失去了意义。(8.1.2节、8.4.6节和8.4.8节会进一步讨论。)结果是,对于高维数据,许多分类和聚类算法(以及其他的数据分析算法)都麻烦缠身——分类准确率降低,聚类质量下降。
维归约的一些最常用的方法是使用线性代数技术,将数据由高维空间投影到低维空间,特别是对于连续数据。主成分分析(PrincipalComponentAnalysis,PCA)是一种用于连续属性的线性代数技术,它找出新的属性(主成分),这些属性是原属性的线性组合,是相互正交的(orthogonal),并且捕获了数据的最大变差。例如,前两个主成分是两个正交属性,是原属性的线性组合,尽可能多地捕获了数据的变差。奇异值分解(SingularValueDecomposition,SVD)是一种线性代数技术,它与PCA有关,并且也用于维归约。请参考附录A和B获取更多细节。
可以将过滤和包装方法放到一个共同的体系结构中。特征选择过程可以看作由四部分组成:子集评估度量、控制新的特征子集产生的搜索策略、停止搜索判断和验证过程。过滤方法和包装方法的唯一不同是它们使用了不同的特征子集评估方法。对于包装方法,子集评估使用目标数据挖掘算法;对于过滤方法,子集评估技术不同于目标数据挖掘算法。下面的讨论提供了该方法的一些细节,汇总在图2.11中。
特征加权是另一种保留或删除特征的办法。特征越重要,赋予它的权值越大,而对于不太重要的特征,赋予它的权值较小。有时,这些权值可以根据特征的相对重要性的领域知识确定,也可以自动确定。例如,有些分类方法,如支持向量机(见第4章),产生分类模型,其中每个特征都赋予一个权值。具有较大权值的特征在模型中所起的作用更加重要。在计算余弦相似度时进行的对象规范化(2.4.5节)也可以看作一类特征加权。
一种分类属性二元化的简单技术如下:如果有m个分类值,则将每个原始值唯一地赋予区间[0,m-1]中的一个整数。如果属性是有序的,则赋值必须保持序关系。(注意,即使属性原来就用整数表示,但如果这些整数不在区间[0,m-1]中,则该过程也是必需的。)然后,将这m个整数的每一个都变换成一个二进制数。由于需要n=log2m个二进位表示这些整数,因此要使用n个二元属性表示这些二进制数。例如,一个具有5个值{awful,poor,OK,good,great}的分类变量需要3个二元变量x1、x2、x3。变换见表2.5。
同样,对于关联问题,可能需要用两个非对称的二元属性替换单个二元属性。考虑记录人的性别(男、女)的二元属性,对于传统的关联规则算法,该信息需要变换成两个非对称的二元属性,其中一个仅当是男性时为1,而另一个仅当是女性时为1。(对于非对称的二元属性,由于其提供一个二进制位信息需要占用存储器的两个二进制位,因而在信息的表示上不太有效。)
其中,Pij=mij/mi是第i个区间中类j的概率(值的比例)。该划分的总熵e是每个区间的熵的加权平均,即
其中,m是值的个数,wi=mi/m是第i个区间的值的比例,而n是区间个数。直观上,区间的熵是区间纯度的度量。如果一个区间只包含一个类的值(该区间非常纯),则其熵为0并且不影响总熵。如果一个区间中的值类出现的频率相等(该区间尽可能不纯),则其熵最大。例2.13两个属性离散化基于熵的自上而下的方法用来独立地离散化图2.14所示的二维数据的属性x和y。在图2.14a所示的第一个离散化中,属性x和y被划分成三个区间。(虚线指示分割点。)在图2.14b所示的第二个离散化中,属性x和y被划分成五个区间。
这个简单的例子解释了离散化的两个特点。首先,在二维中,点类是很好分开的,但在一维中的情况并非如此。一般而言,分别离散化每个属性通常只能保证次最优的结果。其次,五个区间比三个好,但是,至少从熵的角度看,六个区间对离散化的改善不大。(没有给出六个区间的熵值和结果。)因而需要有一个终止标准,自动地发现划分的正确个数。
分类属性有时可能具有太多的值。如果分类属性是序数属性,则可以使用类似于处理连续属性的技术,以减少分类值的个数。然而,如果分类属性是标称的,就需要使用其他方法。考虑一所大学,它有许多系,68因而系名属性可能具有数十个不同的值。在这种情况下,我们可以使用系之间联系的知识,将系合并成较大的组,如工程学、社会科学或生物科学。如果领域知识不能提供有用的指导,或者这样的方法会导致很差的分类性能,则需要使用更为经验性的方法,如仅当分组结果能提高分类准确率或达到某种其他数据挖掘目标时,才将值聚集到一起。
变量变换(variabletransformation)是指用于变量的所有值的变换。(尽管我们偶尔也用属性变换这个术语,但是遵循习惯用法,我们使用变量指代属性。)换言之,对于每个对象,变换都作用于该对象的变量值。例如,如果只考虑变量的量级,则可以通过取绝对值对变量进行变换。接下来的部分,我们讨论两种重要的变量变换类型:简单函数变换和规范化。69
对于这种类型的变量变换,一个简单的数学函数分别作用于每一个值。如果x是变量,这种变换的例子包括
在统计学中,变量变换(特别是平方根、对数和倒数变换)常用来将不具有高斯(正态)分布的数据变换成具有高斯(正态)分布的数据。尽管这可能很重要,但是在数据挖掘中,其他理由可能更重要。假定感兴趣的变量是一次会话中的数据字节数,并且字节数的值域范围为1到10^9。这是一个很大的值域,使用常用对数变换将其进行压缩可能是有益的。这样的话,传输10^8和10^9字节的会话比传输10字节和1000字节的会话更为相似(9-8=1对3-1=2)。对于某些应用,如网络入侵检测,可能需要如此,因为前两个会话多半表示传输两个大文件,而后两个会话可能是两个完全不同的类型。使用变量变换时需要小心,因为它们改变了数据的特性。尽管有时需要这样做,但是如果没有深入理解变换的特性,则可能出现问题。例如,变换1/x虽然压缩了大于1的值,但是却放大了0和1之间的值,举例来说,{1,2,3}变换成1,1/2,1/3,但是1,1/2,1/3变换成{1,2,3},这样,对于所有的值集,变换1/x逆转了序。为了帮助弄清楚一个变换的效果,重要的是问如下问题:想要什么样的变换性质?需要保序吗?变换作用于所有的值,特别是负值和0吗?变换对0和1之间的值有何特别影响?本章习题17考察了变量变换的其他方面。
两个对象之间的相似度(similarity)的非正式定义是这两个对象相似程度的数值度量。因而,两个对象越相似,它们的相似度就越高。通常,相似度是非负的,并常常在0(不相似)和1(完全相似)之间取值。两个对象之间的相异度(dissimilarity)是这两个对象差异程度的数值度量。对象越类似,它们的相异度就越低。通常,术语距离(distance)用作相异度的同义词,正如我们将介绍的,距离常常用来表示特定类型的相异度。有时,相异度在区间[0,1]中取值,但是相异度在0和∞之间取值也很常见。
下面两节介绍更复杂的涉及多个属性的对象之间的邻近度度量:(1)数据对象之间的相异度;(2)数据对象之间的相似度。这样分节可以更自然地展示使用各种邻近度度量的基本动机。然而,我们要强调的是使用上述技术,相似度可以变换成相异度,反之亦然。
本节讨论各种不同类型的相异度。我们从讨论距离(距离是具有特定性质的相异度)开始,然后给出一些更一般的相异度类型的例子。
首先给出一些例子,然后使用距离的常见性质更正式地介绍距离。一维、二维、三维或高维空间中两个点x和y之间的欧几里得距离(Euclideandistance)d由如下熟悉的公式定义:
其中,n是维数,而xk和yk分别是x和y的第k个属性值(分量)。用图2.15、表2.8和表2.9解释该公式,它们展示了这个点集、这些点的x和y坐标以及包含这些点之间距离的距离矩阵(distancematrix)。
式(2.1)给出的欧几里得距离可以用式(2.2)的闵可夫斯基距离(Minkowskidistance)来推广:
其中,r是参数。下面是闵可夫斯基距离的三个最常见的例子。
注意不要将参数r与维数(属性数)n混淆。欧几里得距离、曼哈顿距离和上确界距离是对n的所有值(1,2,3,…)定义的,并且指定了将每个维(属性)上的差组合成总距离的不同方法。
表2.10和表2.11分别给出表2.8中数据的L1距离和L∞距离的邻近度矩阵。注意,所有的距离矩阵都是对称的,即第ij个项与第ji个项相同,例如,在表2.9中,第4行第1列和第1行第4列都包含值5.1。
本节给出一些相似性和相异性度量的具体例子。
两个仅包含二元属性的对象之间的相似性度量也称为相似系数(similaritycoefficient),并且通常在0和1之间取值,值为1表明两个对象完全相似,而值为0表明对象一点也不相似。有许多理由表明在特定情形下,一种系数为何比另一种好。设x和y是两个对象,都由n个二元属性组成。这样的两个对象(即两个二元向量)的比较可生成如下四个量(频率):
简单匹配系数(SimpleMatchingCoefficient,SMC)一种常用的相似性系数是简单匹配系数,定义如下:
该度量对出现和不出现都进行计数。因此,SMC可以在一个仅包含是非题的测验中用来发现问题回答相似的学生。Jaccard系数(JaccardCoefficient)假定x和y是两个数据对象,代表一个事务矩阵(见2.1.2节)的两行(两个事务)。如果每个非对称的二元属性对应于商店的一种商品,则1表示该商品被购买,而0表示该商品未被购买。由于未被顾客购买的商品数远大于被购买的商品数,因而像SMC这样的相似性度量将会判定所有的事务都是类似的。这样,常常使用Jaccard系数来处理仅包含非对称的二元属性的对象。Jaccard系数通常用符号J表示,由如下等式定义:
例2.16SMC和Jaccard相似性系数为了解释这两种相似性度量之间的差别,我们对如下二元向量计算SMC和J:x=(1,0,0,0,0,0,0,0,0,0)y=(0,0,0,0,0,0,1,0,0,1)
通常,文档用向量表示,向量的每个组件(属性)代表一个特定的词(术语)在文档中出现的频率。尽管文档具有数以百千计或数以万计的属性(词),但是每个文档向量都是稀疏的,因为它具有相对较少的非零属性值。(文档规范化并不对零词目创建非零词目,即文档规范化保持稀疏性。)这样,与事务数据一样,相似性不能依赖共享0的个数,因为任意两个文档多半都不会包含许多相同的词,从而如果统计0-0匹配,则大多数文档都与其他大部分文档非常类似。因此,文档的相似性度量不仅应当像Jaccard度量一样需要忽略0-0匹配,而且还必须能够处理非二元向量。下面定义的余弦相似度(cosinesimilarity)就是文档相似性最常用的度量之一。如果x和y是两个文档向量,则
其中′表示向量或者矩阵的转置,表示两个向量的内积:
式(2.6)可以写成式(2.8)的形式:
广义Jaccard系数可以用于文档数据,并在二元属性情况下归约为Jaccard系数。该系数用EJ表示,由下式定义:
这里使用标准的统计学记号和定义:
x=(-3,-2,-1,0,1,2,3)y=(9,4,1,0,1,4,9)
我们用一个例子来说明不同邻近度度量之间的差异的意义。例2.21比较邻近度度量考虑下面两个具有七个数值属性的向量x和y。
x=(1,2,4,3,0,0,0)y=(1,2,3,4,0,0,0)
ys=2×y=(2,4,6,8,0,0,0)yt=y+5=(6,7,8,9,5,5,5)
如果值或组合值的概率为0,则通常将0log2(0)取值为0。X和Y的互信息可以直接定义如下:
x=(-3,-2,-1,0,1,2,3)y=(9,4,1,0,1,4,9)
将数据映射到高维数据空间可以允许非线性关系的建模基于核的数据分析算法还有另一个同样重要的方面:它们能够用只模拟线性关系的算法来建模非线性关系。通常,这是通过首先将数据从低维数据空间转换(映射)到高维空间来实现的。例2.23将数据映射到高维度空间考虑由下面等式给出的两个变量x和y之间的关系,它定义了两个维度的椭圆关系(见图2.19a):
我们可以通过创建3个新的变量u、v和w来映射二维数据到三个维度,这些变量被定义如下:
因此,我们现在可以将式(2.17)表示为线性方程。这个方程描述了一个平面的三个维度。椭圆上的点将位于该平面上,而椭圆内和外的点将位于平面的相对侧。如图2.19b所示,这个3D图的视角是沿着分离平面的表面,使得平面以线的形式出现。
其中,α与c≥0是常数,d是多项式度的整型参数,x-y是向量x-y的长度,σ>0为调整高斯分布的参数。例2.24多项式核注意,在前一节中给出的核函数(将数据映射到更高维空间,然后在高维空间计算数据的内积)计算与我们原始数据相同的相似度值。例如,对于度为2的多项式核,让其成为将二维数据向量x=(x1,x2)映射到高维空间的函数。特别地,
对于更高维的空间,将邻近度定义为φ(x)和φ(y)的内积,如<φ(x),φ(y)>。接着,如前所述,可以表示为:
其中,κ是由式(2.19)定义的。具体而言,如果x=(x1,x2)和y=(y1,y2),则
更一般地说,核技巧取决于定义κ和φ,从而使式(2.23)成立。这是为各种各样的核所做的。这种基于核的方法的讨论只是为了简要介绍这个主题,并省略了许多细节。4.9.4节提供了有关基于核方法的更全面的讨论,在用于分类的非线性支持向量机中讨论了这些问题。基于核分析的更翔实的参考资料可以在本章的文献注释中找到。
本节,我们简略介绍Bregman散度(Bregmandivergence),它是一组具有共同性质的邻近函数。这样,可以构造使用Bregman散度的一般数据挖掘算法,如聚类算法,具体的例子是K均值聚类算法(7.2节)。注意,本节需要向量计算方面的知识。Bregman散度是损失或失真函数。为了理解损失函数,考虑如下情况:设x和y是两个点,其中y是原来的点,而x是它的某个失真或近似,例如,x可能是由于添加了一些随机噪声到y上而产生的。损失函数的目的是度量用x近似y导致的失真或损失。当然,x和y越类似,失真或损失就越小,因而Bregman散度可以用作相异性函数。有如下正式定义。定义2.6(Bregman散度)给定一个严格凸函数Φ(连同一些通常会满足的适度限制),由该函数生成的Bregman散度(损失函数)D(x,y)通过下面的公式给出:
其中,Φ(y)是在y上计算的Φ的梯度,x-y是x与y的向量差,而<Φ(y),(x-y)>是Φ(y)和(x-y)的内积。对于欧几里得空间中的点,内积就是点积。D(x,y)可以写成D(x,y)=Φ(x)-L(x),其中L(x)=Φ(y)+<Φ(y),(x-y)>代表在y上正切于函数Φ的平面方程。使用微积分学的术语,L(x)是函数Φ在y点附近的线性部分,而Bregman散度是一个函数与该函数的线性近似之间的差。选取不同的Φ,可以得到不同的Bregman散度。例2.25我们使用平方欧几里得距离给出Bregman散度的一个具体例子。为了简化数学计算,我们仅限于一维。设x和y是实数,而Φ(t)是实数值函数,Φ(t)=t2。在此情况下,梯度归结为导数,而点积归结为乘积。例如,式(2.25)变成式(2.26):
该例的图形在图2.20中给出,其中y=1。在x=2和x=3上给出了Bregman散度。
前面的相似度定义所基于的方法都假定所有属性具有相同类型。当属性具有不同类型时,就需要更一般的方法。直截了当的方法是使用表2.7分别计算出每个属性之间的相似度,然后使用一种输出为0和1之间相似度的方法组合这些相似度。一种方法是将总相似度定义为所有属性相似度的平均值。不幸的是,如果某些属性是非对称属性,这种方法的效果不好。例如,如果所有的属性都是非对称的二元属性,则相似性度量先归结为简单匹配系数——一种对于二元非对称属性并不合适的度量。处理该问题的最简单的方法是:如果两个对象在非对称属性上的值都是0,97则在计算对象相似度时忽略它们。类似的方法也能很好地处理缺失值。概括地说,算法2.2可以有效地计算具有不同类型属性的两个对象x和y之间的相似度。修改该过程可以很轻松地处理相异度。
在前面的大部分讨论中,所有的属性在计算邻近度时都会被同等对待。但是,当某些属性对邻近度的定义比其他属性更重要时,我们并不希望同等对待。为了处理这种情况,可以通过对每个属性的贡献加权来修改邻近度公式。属性权重为wk时,式(2.28)变成:
闵可夫斯基距离的定义也可以修改为:
14.对亚洲象群的成员测量如下属性:重量、高度、象牙长度、象鼻长度和耳朵面积。基于这些测量,可以使用2.4节的哪种相似性度量来对这些大象进行比较或分组?论证你的答案并说明特殊情况。15.给定m个对象的集合,这些对象划分成K组,其中第i组的大小为mi。如果目标是得到容量为n(a)从每组随机地选择n×mi/m个元素。(b)从数据集中随机地选择n个元素,而不管对象属于哪个组。16.考虑一个文档词矩阵,其中tfij是第i个词(术语)出现在第j个文档中的频率,而m是文档数。考虑由下式定义的变量变换: