不同类型数据的相异(相似)度量
标量也是一个没有方向意义的数,也叫标度变量。现在考虑一个元素的所有特征属性都是标量的情况。例如,计算X={2,1,102}和Y={1,3,2}的相异度。一个自然的想法是使用它们之间的欧几里德距离作为相异度。欧几里德距离定义如下:
它的含义是欧氏空间中两个元素的集合距离。由于直观易懂,被广泛用于识别两个标量元素的区别。将上述两个样本数据代入公式,我们可以得到它们之间的欧几里德距离如下:
除了欧几里德距离,曼哈顿距离和闵可夫斯基距离通常用于测量标量相异度,其定义如下:
欧氏距离和曼哈顿距离可以看作是闵可夫斯基距离在p=2和p=1下的特例。另外,这三个距离可以加权,很好理解,这里不再赘述。
我们来谈谈标量的规范化。上述计算相异度的方法存在一个问题,即取值范围大的属性对距离的影响高于取值范围小的属性。比如上面例子中第三个属性的取值跨度就比前两个大很多,不利于真实反映真实的相异度。为了解决这个问题,通常需要对属性值进行规范化。所谓归一化,就是将每个属性值按比例映射到相同的值区间,从而平衡每个属性对距离的影响。一般每个属性映射到区间[0,1],映射公式为:
其中max(ai)和min(ai)表示所有元素项中第I个属性的最大值和最小值。例如,将示例中的元素归一化到[0,1]的区间后,它们变成X'={1,0,1},Y'={0,1,0},重新计算欧氏距离约为1.732。
2.对于二元变量
所谓二进制变量,就是只能取0和1两个值的变量,有点类似于布尔值,通常用来标识是不是二进制属性。对于二元变量,上一节提到的距离并不能很好的识别它们的相异,所以我们需要一个更合适的识别。常用的方法是通过同序同值属性的比值来识别元素的相异度。
X = {1,0,0,1,0,1,1},Y = {0,0,1,1。一般来说,对于二元变量,相异度可以用“不同值的搭配属性个数/单个元素的属性位数”来标识。
上面提到的相异应该叫做对称二元相异。现实中还有一种情况,就是我们只关心两者都取1的情况,两者都取0的属性并不代表两者更相似。例如,在根据病情对患者进行聚类时,如果两个人都患有肺癌,我们认为他们增强了相似性,但如果两个人都没有肺癌,我们认为这并没有增强他们的相似性。在这种情况下,我们用“不同值的搭配属性个数/(单个元素的属性个数-相同值为0的位数)”来标识相异度,称为非对称二元相异度。非对称二元相异度减去1,就得到非对称二元相似度,也叫Jaccard系数,这是一个很重要的概念。
3.对于分类变量
分类变量是二进制变量的概括,类似于程序中的枚举变量,但每个值没有数值或序数意义,如颜色、国籍等。对于分类变量,“具有不同值的搭配属性的数量/单个元素的所有属性的数量”用于标识它们的相异度。
4.对于序数变量
序数变量是具有序数意义的分类变量,通常可以按照一定的顺序排列,如冠、亚、季军。对于序数型变量,一般会给每个值赋一个数,叫做这个值的秩,然后用秩代替原值作为标量属性来计算相异度。
5.矢量
其中||| x|||表示x的欧几里德范数..
需要注意的是,余弦测度不是它们之间的相异度,而是相似度!
参考资料:
算法杂货店-K-means-T2噬菌体-博客花园blogs.com/leoo2sk/archive/2010/09/20/k-means.html
[衡量各种类型数据的相异(相似)程度#
不同类型数据的相异(相似)度量
](/u 010451580/article/details/53163634)