相似性和相异性的度量Word文档下载推荐.docx
《相似性和相异性的度量Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《相似性和相异性的度量Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
![相似性和相异性的度量Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/5/63264ec5-fd1f-48c0-9e97-9558d32b2a13/63264ec5-fd1f-48c0-9e97-9558d32b2a131.gif)
=(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、0.5、2、10、100和1000分别被变换到0、0.33、0.67、0.90、0.99和0.999。
在原来相异性尺度上较大的值被压缩到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,0.5,0.09,0.01;
对于
,它们分别被变换到1.00,0.37,0.00,0.00;
对于s=
,它们分别被变换到1.00,0.99,0.00,0.00。
在这里的讨论中,我们关注将相异度变换到相似度。
一般来说,任何单调减函数都可以用来将相异度转换到相似度(或相反)。
当然,在将相似度变换到相异度(或相反),或者在将邻近度的值变换到新的尺度时,也必须考虑一些其他因素。
我们提到过一些问题,涉及保持意义、扰乱标度和数据分析工具的需要,但是肯定还有其他问题。
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=0.25;
序数属性的相似度可以定义为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表示)。
其他方法也是可能的,但是表中的这些是最常用的。
表2-7
简单属性的相似度和相异度
下面两节介绍更复杂的涉及多个属性的对象之间的邻近性度量:
(1)数据对象之间的相异度;
(2)数据对象之间的相似度。
这样分节可以更自然地展示使用各种邻近度度量的基本动机。
然而,我们要强调的是使用上述技术,相似度可以变换成相异度,反之亦然。
3)
数据对象之间的相异度
本节,我们讨论各种不同类型的相异度。
我们从讨论距离(距离是具有特定性质的相异度)开始,然后给出一些更一般的相异度类型的例子。
距离
我们首先给出一些例子,然后使用距离的常见性质更正式地介绍距离。
一维、二维、三维或高维空间中两个点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=1,城市街区(也称曼哈顿、出租车、L1范数)距离。
一个常见的例子是汉明距离(Hammingdistance),它是两个具有二元属性的对象(即两个二元向量)之间不同的二进制位个数。
r=2,欧几里得距离(L2范数)。
r=
,上确界(Lmax或L范数)距离。
这是对象属性之间的最大距离。
更正式地,L距离由公式(2-3)定义:
注意不要将参数r与维数(属性数)n混淆。
欧几里得距离、曼哈顿距离和上确界距离是对n的所有值(1,2,3,...)定义的,并且指定了将每个维(属性)上的差的组合成总距离的不同方法。
表2-10和表2-11分别给出表2-8数据的L1距离和L距离的邻近度矩阵。
注意,所有的距离矩阵都是对称的,即第ij个表目与第ji个表目相同,例如,在表2-9中,第4行第1列和第1行第4列都包含值5.1。
距离(如欧几里得距离)具有一些众所周知的性质。
如果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小时。
这种定义是有意义的,例如,在回答如下问题时就体现了这种定义的意义:
如果一个事件在每天下午1点发生,现在是下午2点,那么我们还需要等待多长时间才能等到该事件再度发生?
4)数据对象之间的相似度
对于相似度,三角不等式(或类似的性质)通常不成立,但是对称性和非负性通常成立。
更明确地说,如果s(x,y)是数据点x和y之间的相似度,则相似度具有如下典型性质。
(1)仅当x=y时s(x,y)=1。
(0≤s≤1)
(2)对于所有x和y,s(x,y)=s(y,x)。
(对称性)
对于相似度,没有与三角不等式对应的一般性质。
然而,有时可以将相似度简单地变换成一种度量距离。
稍后讨论的余弦相似性度量和Jaccard相似性度量就是两个例子。
此外,对于特定的相似性度量,还可能在两个对象相似性上导出本质上与三角不等式类似的数学约束。
例3
非对称相似性度量。
考虑一个实验,实验中要求人们对屏幕上快速闪过的一小组字符进行分类。
该实验的混淆矩阵(confusionmatrix)记录每个字符被分类为自己的次数和被分类为另一个字符的次数。
例如,假定"
0"
出现了200次,它被分类为"
160次,而被分类为"
o"
40次。
类似地,"
出现200次并且分类为"
170次,但是分类为"
只有30次。
如果取这些计数作为两个字符之间相似性的度量,则得到一种相似性度量,但这种相似性度量不是对称的。
在这种情况下,通过选取s'
(x,y)=s'
(y,x)=(s(x,y)+s(y,x))/2,相似性度量可以转换成对称的,其中s'
是新的相似性度量。
5)
邻近性度量的例子
本节给出一些相似性和相异性度量的具体例子。
1.二元数据的相似性度量
两个仅包含二元属性的对象之间的相似性度量也称为相似系数(similaritycoefficient),并且通常在0和1之间取值,值为1表明两个对象完全相似,而值为0表明对象一点也不相似。
有许多理由表明在特定情形下,一种系数为何比另一种好。
设x和y是两个对象,都由n个二元属性组成。
这样的两个对象(即两个二元向量)的比较可生成如下四个量(频率):
f00=x取0并且y取0的属性个数
f01=x取0并且y取1的属性个数
f10=x取1并且y取0的属性个数
f11=x取1并且y取1的属性个数
简单匹配系数(SimpleMatchingCoefficient,SMC),一种常用的相似性系数是简单匹配系数,定义如下:
该度量对出现和不出现都进行计数。
因此,SMC可以在一个仅包含是非题的测验中用来发现回答问题相似的学生。
Jaccard系数(JaccardCoefficient),假定x和y是两个数据对象,代表一个事务矩阵的两行(两个事务)。
如果每个非对称的二元属性对应于商店的一种商品,则1表示该商品被购买,而0表示该商品未被购买。
由于未被顾客购买的商品数远大于被其购买的商品数,因而像SMC这样的相似性度量将会判定所有的事务都是类似的。
这样,常常使用Jaccard系数来处理仅包含非对称的二元属性的对象。
Jaccard系数通常用符号J表示,由如下等式定义:
例4
SMC和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)
f01=2
x取0并且y取1的属性个数
f10=1
x取1并且y取0的属性个数
f00=7
x取0并且y取0的属性个数
f11=0
x取1并且y取1的属性个数
2.余弦相似度
通常,文档用向量表示,向量的每个属性代表一个特定的词(术语)在文档中出现的频率。
当然,实际情况要复杂得多,因为需要忽略常用词,并使用各种技术处理同一个词的不同形式、不同的文档长度以及不同的词频。
尽管文档具有数以百千计或数以万计的属性(词),但是每个文档向量都是稀疏的,因为它具有相对较少的非零属性值。
(文档规范化并不对零词目创建非零词目,即文档规范化保持稀疏性。
)这样,与事务数据一样,相似性不能依赖共享0的个数,因为任意两个文档多半都不会包含许多相同的词,从而如果统计0-0匹配,则大多数文档都与其他大部分文档非常类似。
因此,文档的相似性度量不仅应当像Jaccard度量一样需要忽略0-0匹配,而且还必须能够处理非二元向量。
下面定义的余弦相似度(cosinesimilarity)就是文档相似性最常用的度量之一。
如果x和y是两个文档向量,则
其中,"
."
表示向量点积,即:
例5
两个文档向量的余弦相似度。
该例计算下面两个数据对象的余弦相似度,这些数据对象可能代表文档向量:
如图2-16所示,余弦相似度实际上是x和y之间夹角(余弦)的度量。
这样,如果余弦相似度为1,则x和y之间夹角为0,并且除大小(长度)之外,x和y是相同的;
如果余弦相似度为0,则x和y之间夹角为90,并且它们不包含任何相同的词(术语)。
图2-16
余弦度量的几何解释
公式(2-7)可以写成公式(2-8)的形式:
其中,=x/||x||,而=y/||y||。
x和y被它们的长度除,将它们规范化成具有长度1。
这意味在计算相似度时,余弦相似度不考虑两个数据对象的量值。
(当量值是重要的时,欧几里得距离可能是一种更好的选择。
)对于长度为1的向量,余弦度量可以通过简单地取点积计算。
从而,在需要计算大量对象之间的余弦相似度时,将对象规范化,使之具有单位长度可以减少计算时间。
3.广义Jaccard系数(Tanimoto系数)
广义Jaccard系数可以用于文档数据,并在二元属性情况下归约为Jaccard系数。
广义Jaccard系数又称Tanimoto系数。
(然而,还有一种系数也称Tanimoto系数。
)该系数用EJ表示,由下式定义:
4.相关性
两个具有二元变量或连续变量的数据对象之间的相关性是对象属性之间线性联系的度量。
(更一般属性之间的相关性计算可以类似地定义。
)更准确地,两个数据对象x和y之间的皮尔森相关(Pearson'
scorrelation)系数由下式定义:
这里我们使用标准的统计学记号和定义:
例6
完全相关。
相关度总是在-1到1之间取值。
相关度为1(-1)意味x和y具有完全正(负)线性关系,即Xk=aYk+b,其中a和b是常数。
下面两个x和y的值集分别给出相关度为-1和+1的情况。
为简单起见,第一组中取x和y的均值为0。
x=(-3,6,0,3,-6)
y=(1,-2,0,-1,2)
x=(3,6,0,3,6)
y=(1,2,0,1,2)
例7非线性关系。
如果相关度为0,则两个数据对象的属性之间不存在线性关系。
然而,仍然可能存在非线性关系。
在下面的例子中,数据对象的属性之间存在非线性关系yk=xk^2,但是它们的相关度为0。
x=(3,-2,-1,0,1,2,3)
y=(9,4,1,0,1,4,9)
例8
相关性可视化。
通过绘制对应属性值对可以很容易地判定两个数据对象x和y之间的相关性。
图2-17给出了一些这种图,x和y具有30个属性,这些属性的值随机地产生(服从正态分布),使得x和y的相关度从-1到1。
图中每个小圆圈代表30个属性中的一个,其x坐标是x的一个属性的值,而其y坐标是y的相同属性的值。
图2-17
解释相关度从-1到1的散布图
如果通过减去均值,然后规范化使其长度为1来变换x和y,则它们的相关度可以通过求点积来计算。
注意,这与其他情况下使用的标准化不同,在其他情况下,我们使用变换和
Bregman散度。
本节,我们简略介绍Bregman散度(Bregmandivergence),它是一族具有共同性质的邻近函数。
这样,可以构造使用Bregman发散函数的一般数据挖掘算法,如聚类算法,具体的例子是K均值聚类算法。
注意,本节需要向量计算方面的知识。
Bregman散度是损失或失真函数。
为了理解损失函数,考虑如下情况:
设x和y是两个点,其中y是原来的点,而x是它的某个失真或近似,例如,x可能是由于添加了一些随机噪声到y上而产生的。
损失函数的目的是度量用x近似y导致的失真或损失。
当然,x和y越类似,失真或损失就越小,因而Bregman散度可以用作相异性函数。
有如下正式定义。
定义:
Bregman散度
给定一个严格凸函数
(连同一些通常满足的适度限制),由该函数生成的Bregman散度(损失函数)D(x,y)通过下面的公式给出:
例
我们使用平方欧几里得距离给出Bregman散度的一个具体例子。
为了简化数学计算,我们仅限于一维。
设x和y是实数,而
(t)是实数值函数,
在此情况下,梯度归结为导数,而点积归结为乘积。
例如,公式(2-12)变成公式(2-13)。
该例的图形在图2-18中给出,其中y=1。
在x=2和x=3上给出了Bregman散度。
图2-18
图示Bregman散度
6)
邻近度计算问题
本节讨论与邻近性度量有关的一些重要问题:
(1)当属性具有不同的尺度(scale)或相关时如何处理;
(2)当对象包含不同类型的属性(例如,定量属性和定性属性)时如何计算对象之间的邻近度;
(3)当属性具有不同的权重(即并非所有的属性都对对象的邻近度具有相等的贡献)时,如何处理邻近度计算。
1.距离度量的标准化和相关性
距离度量的一个重要问题是当属性具有不同的值域时如何处理。
(这种情况通常称作"
变量具有不同的尺度。
)前面,使用欧几里得距离,基于年龄和收入两个属性来度量人之间的距离。
除非这两个属性是标准化的,否则两个人之间的距离将被收入所左右。
一个相关的问题是,除值域不同外,当某些属性之间还相关时,如何计算距离。
当属性相关、具有不同的值域(不同的方差)、并且数据分布近似于高斯(正态)分布时,欧几里得距离的拓广,Mahalanobis距离是有用的。
具体地说,两个对象(向量)x和y之间的Mahalanobis距离定义为:
其中
是数据协方差矩阵的逆。
注意,协方差矩阵
是这样的矩阵,它的第ij个元素是第i个和第j个属性的协方差,由公式(2-11)定义。
在图2-19中有1000个点,其x属性和y属性的相关度为0.6。
在椭圆长轴两端的两个大点之间的欧几里得距离为14.7,但Mahalanobis距离仅为6。
实践中,计算Mahalanobis距离的费用昂贵,但是对于其属性相关的对象来说是值得的。
如果属性相对来说不相关,只是具有不同的值域,则只需要对变量进行标准化就足够了。
图2-19
二维点的集合。
两个大点代表的点之间的Mahalanobis距
离为6,它们的欧几里得距离为14.7
2.组合异种属性的相似度
前面的相似度定义所基于的方法都假定所有属性具有相同类型。
当属性具有不同类型时,就需要更一般的方法。
直截了当的方法是使用表2-7分别计算出每个属性之间的相似度,然后使用一种导致0和1之间相似度的方法组合这些相似度。
总相似度一般定义为所有属性相似度的平均值。
不幸的是,如果某些属性是非对称属性,这种方法效果不好。
例如,如果所有的属性都是非对称的二元属性,则相似性度量先归结为简单匹配系数--一种对于二元非对称属性并不合适的度量。
处理该问题的最简单方法是:
如果两个对象在非对称属性上的值都是0,则在计算对象相似度时忽略它们。
类似的方法也能很好地处理遗漏值。
概括地说,算法2.1可以有效地计算具有不同类型属性的两个对象x和y之间的相似度。
修改该过程可以很轻松地处理相异度。
3.使用权值
在前面的大部分讨论中,所有的属性在计算邻近度时都会被同等对待。
但是,当某些属性对邻近度的定义比其他属性更重要时,我们并不希望这种同等对待的方式。
为了处理这种情况,可以通过对每个属性的贡献加权来修改邻近度公式。
如果权
的和为1,则公式(2-15)变成