当前位置:文档之家› 相似性和相异性的度量

相似性和相异性的度量

相似性和相异性的度量相似性和相异性是重要的概念,因为它们被许多数据挖掘技术所使用,如聚类、最近邻分类和异常检测等。

在许多情况下,一旦计算出相似性或相异性,就不再需要原始数据了。

这种方法可以看作将数据变换到相似性(相异性)空间,然后进行分析。

首先,我们讨论基本要素--相似性和相异性的高层定义,并讨论它们之间的联系。

为方便起见,我们使用术语邻近度(proximity)表示相似性或相异性。

由于两个对象之间的邻近度是两个对象对应属性之间的邻近度的函数,因此我们首先介绍如何度量仅包含一个简单属性的对象之间的邻近度,然后考虑具有多个属性的对象的邻近度度量。

这包括相关和欧几里得距离度量,以及Jaccard和余弦相似性度量。

前二者适用于时间序列这样的稠密数据或二维点,后二者适用于像文档这样的稀疏数据。

接下来,我们考虑与邻近度度量相关的若干重要问题。

本节最后简略讨论如何选择正确的邻近度度量。

1)基础1. 定义两个对象之间的相似度(similarity)的非正式定义是这两个对象相似程度的数值度量。

因而,两个对象越相似,它们的相似度就越高。

通常,相似度是非负的,并常常在0(不相似)和1(完全相似)之间取值。

两个对象之间的相异度(dissimilarity)是这两个对象差异程度的数值度量。

对象越类似,它们的相异度就越低。

通常,术语距离(distance)用作相异度的同义词,正如我们将介绍的,距离常常用来表示特定类型的相异度。

有时,相异度在区间[0, 1]中取值,但是相异度在0和之间取值也很常见。

2. 变换通常使用变换把相似度转换成相异度或相反,或者把邻近度变换到一个特定区间,如[0, 1]。

例如,我们可能有相似度,其值域从1到10,但是我们打算使用的特定算法或软件包只能处理相异度,或只能处理[0, 1]区间的相似度。

之所以在这里讨论这些问题,是因为在稍后讨论邻近度时,我们将使用这种变换。

此外,这些问题相对独立于特定的邻近度度量。

通常,邻近度度量(特别是相似度)被定义为或变换到区间[0, 1]中的值。

这样做的动机是使用一种适当的尺度,由邻近度的值表明两个对象之间的相似(或相异)程度。

这种变换通常是比较直截了当的。

例如,如果对象之间的相似度在1(一点也不相似)和10(完全相似)之间变化,则我们可以使用如下变换将它变换到[0, 1]区间:s' = (s-1)/9,其中s和s'分别是相似度的原值和新值。

一般来说,相似度到[0, 1]区间的变换由如下表达式给出:s'=(s-min_s) / (max_s - min_s),其中max_s和min_s分别是相似度的最大值和最小值。

类似地,具有有限值域的相异度也能用d' = (d - min_d) / (max_d - min_d) 映射到[0, 1]区间。

然而,将邻近度映射到[0, 1]区间可能非常复杂。

例如,如果邻近度度量原来在区间[0 1000]上取值,则需要使用非线性变换,并且在新的尺度上,值之间不再具有相同的联系。

对于从0变化到1000的相异度度量,考虑变换d' = d / (1 + d),相异度0、、2、10、100和1000分别被变换到0、、、、和。

在原来相异性尺度上较大的值被压缩到1附近,但是否希望如此则取决于应用。

另一个问题是邻近度度量的含义可能会被改变。

例如,相关性(稍后讨论)是一种相似性度量,在区间[ -1, 1]上取值,通过取绝对值将这些值映射到[0, 1]区间丢失了符号信息,而对于某些应用,符号信息可能是重要的。

将相似度变换成相异度或相反也是比较直截了当的,尽管我们可能再次面临保持度量的含义问题和将线性尺度改变成非线性尺度的问题。

如果相似度(相异度)落在[0, 1]区间,则相异度(相似度)可以定义为d = 1 - s(或s = 1 - d)。

另一种简单的方法是定义相似度为负的相异度(或相反)。

例如,相异度0,1,10和100可以分别变换成相似度0,- 1,- 10和- 100。

负变换产生的相似度结果不必局限于[0, 1]区间,但是,如果希望的话,则可以使用变换s = 1/(d + 1),。

对于变换s = 1/(d + 1),相异度0, 1, 10, 100分别被变换到1, , , ;对于,它们分别被变换到, , , ;对于s =,它们分别被变换到, , , 。

在这里的讨论中,我们关注将相异度变换到相似度。

一般来说,任何单调减函数都可以用来将相异度转换到相似度(或相反)。

当然,在将相似度变换到相异度(或相反),或者在将邻近度的值变换到新的尺度时,也必须考虑一些其他因素。

我们提到过一些问题,涉及保持意义、扰乱标度和数据分析工具的需要,但是肯定还有其他问题。

2) 简单属性之间的相似度和相异度通常,具有若干属性的对象之间的邻近度用单个属性的邻近度的组合来定义,因此我们首先讨论具有单个属性的对象之间的邻近度。

考虑由一个标称属性描述的对象,对于两个这样的对象,相似意味什么呢由于标称属性只携带了对象的相异性信息,因此我们只能说两个对象有相同的值,或者没有。

因而在这种情况下,如果属性值匹配,则相似度定义为1,否则为0;相异度用相反的方法定义:如果属性值匹配,相异度为0,否则为1。

对于具有单个序数属性的对象,情况更为复杂,因为必须考虑序信息。

考虑一个在标度{poor, fair, OK, good, wonderful}上测量产品(例如,糖块)质量的属性。

一个评定为wonderful的产品P1与一个评定为good的产品P2应当比它与一个评定为OK的产品P3更接近。

为了量化这种观察,序数属性的值常常映射到从0或1开始的相继整数,例如,{poor = 0, fair =1, OK = 2, good = 3, wonderful = 4}。

于是,P1与P2之间的相异度d(P1, P2) = 3-2 = 1,或者,如果我们希望相异度在0和1之间取值,d(P1, P2) = (3-2)/4 = ;序数属性的相似度可以定义为s = 1-d。

序数属性相似度(相异度)的这种定义可能使读者感到有点担心,因为这里我们定义了相等的区间,而事实并非如此。

如果根据实际情况,我们应该计算出区间或比率属性。

值fair与good的差真和OK与wonderful的差相同吗可能不相同,但是在实践中,我们的选择是有限的,并且在缺乏更多信息的情况下,这是定义序数属性之间邻近度的标准方法。

对于区间或比率属性,两个对象之间的相异性的自然度量是它们的值之差的绝对值。

例如,我们可能将现在的体重与一年前的体重相比较,说"我重了10磅。

"在这类情况下,相异度通常在0和x之间,而不是在0和1之间取值。

如前所述,区间或比率属性的相似度通常转换成相异度。

表2-7总结了这些讨论。

在该表中,x和y是两个对象,它们具有一个指明类型的属性,d(x, y)和s(x, y)分别是x和y之间的相异度和相似度(分别用d和s表示)。

其他方法也是可能的,但是表中的这些是最常用的。

下面两节介绍更复杂的涉及多个属性的对象之间的邻近性度量:(1)数据对象之间的相异度;(2)数据对象之间的相似度。

这样分节可以更自然地展示使用各种邻近度度量的基本动机。

然而,我们要强调的是使用上述技术,相似度可以变换成相异度,反之亦然。

3) 数据对象之间的相异度本节,我们讨论各种不同类型的相异度。

我们从讨论距离(距离是具有特定性质的相异度)开始,然后给出一些更一般的相异度类型的例子。

距离我们首先给出一些例子,然后使用距离的常见性质更正式地介绍距离。

一维、二维、三维或高维空间中两个点x和y之间的欧几里得距离(Euclidean distance)d由如下熟悉的公式定义:其中,n是维数,而xk和yk分别是x和y的第k个属性值(分量)。

我们用图2-15、表2-8和表2-9解释该公式,它们展示了这个点集、这些点的x和y 坐标以及包含这些点之间距离的距离矩阵(distance matrix)。

公式(2-1)给出的欧几里得距离可以用公式(2-2)的闵可夫斯基距离(Minkowski distance)来推广:其中r是参数。

下面是闵可夫斯基距离的三个最常见的例子。

r = 1,城市街区(也称曼哈顿、出租车、L1范数)距离。

一个常见的例子是汉明距离(Hamming distance),它是两个具有二元属性的对象(即两个二元向量)之间不同的二进制位个数。

r = 2,欧几里得距离(L2范数)。

r =,上确界(Lmax或L 范数)距离。

这是对象属性之间的最大距离。

更注意不要将参数r与维数(属性数)n混淆。

欧几里得距离、曼哈顿距离和上确界距离是对n的所有值(1, 2, 3,...)定义的,并且指定了将每个维(属性)上的差的组合成总距离的不同方法。

表2-10和表2-11分别给出表2-8数据的L1距离和L 距离的邻近度矩阵。

注意,所有的距离矩阵都是对称的,即第ij个表目与第ji个表目相同,距离(如欧几里得距离)具有一些众所周知的性质。

如果d(x, y)是两个点x和y之间的距离,则如下性质成立。

(1) 非负性。

(a) 对于所有x和y,d(x, y)≥0,(b) 仅当x = y时d(x, y) =0。

(2) 对称性。

对于所有x和y,d(x, y) = d(y, x)。

(3) 三角不等式。

对于所有x,y和z,d(x, z) ≤ d(x, y) + d(y, z)。

满足以上三个性质的测度称为度量(metric)。

有些人只对满足这三个性质的相异性度量使用术语距离,但在实践中常常违反这一约定。

这里介绍的三个性质是有用的,数学上也是令人满意的。

此外,如果三角不等式成立,则该性质可以用来提高依赖于距离的技术(包括聚类)的效率。

尽管如此,许多相异度都不满足一个或多个度量性质。

下面我们给出两个这种测度的例子。

例1非度量的相异度:集合差。

基于集合论中定义的两个集合差的概念举例。

设有两个集合A和B,A-B是不在B中的A中元素的集合。

例如,如果A = {1, 2, 3, 4},而B = {2, 3, 4},则A-B = {1},而B-A = 空集。

我们可以将两个集合A和B之间的距离定义为d(A, B) = size(A-B),其中size是一个函数,它返回集合元素的个数。

该距离测度是大于或等于零的整数值,但不满足非负性的第二部分,也不满足对称性,同时还不满足三角不等式。

然而,如果将相异度修改为d(A, B) = size(A-B) + size(B-A),则这些性质都可以成立。

例2非度量的相异度:时间。

这里给出一个更常见的例子,其中相异性测度并非度量,但依然是有用的。

定义时间之间的距离测度如下:例如,d(1PM, 2PM) = 1小时,而d(2PM, 1PM) = 23小时。

相关主题