相似性和相异性地度量
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相似性和相异性的度量
相似性和相异性是重要的概念,因为它们被许多数据挖掘技术所使用,如聚类、最近邻分类和异常检测等。在许多情况下,一旦计算出相似性或相异性,就不再需要原始数据了。这种方法可以看作将数据变换到相似性(相异性)空间,然后进行分析。
首先,我们讨论基本要素 -- 相似性和相异性的高层定义,并讨论它们之间的联系。为方便起见,我们使用术语邻近度( 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、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]区间,但是,如果希望的话,则可以使用变换
七 f . d - mm d
j = e _馬£二]------------ 二---
s = 1/(d + 1),…-■- O 对于变换 s = 1/(d + 1),
相异度0, 1, 10, 100分别被变换到1,0.5, 0.09, 0.01 ;对于2 厂,它们分别
t d ~ min d
1 --------- -——= -- -
被变换到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 应当比它与一个评定为 0K的产品P3更接近。为了量化这种观察,序数属性