数据相似性和相异性

寻找数据之间的相似性是数据聚合、分类、拟合预测等应用中常见的场景;寻找数据之间的相异性是异常检测,排除离群点等数据操作必需的步骤。所以计算数据之间的相似度和相异度是数据处理的基本手段,常用的方法是计算数据之间的距离和密度。

相似度顾名思义就是两个对象相似程度的数值度量,常常在0(不相似)和1(完全相似)之间取值。

相异度就是两个对象之间差异程度的数值度量。相异度常常在[0,1]或[0,正无穷]之间取值。

通过数据变换,把属性值变换到相似度或相异度所在的区间:

标称属性:x = y , 相似度=1,相异度=0;x!=y,相似度=0,相异度=1 。

序数属性:把值映射到整数0到n-1之间,其中n是值的个数,相异度: d = |x - y|/(n -1) ,相似度 s = 1 - d 。

计算数据之间的距离常用的有欧几里得距离,欧氏距离有一些基本的性质:非负性distance(x, y) >=0,对称性distance(x,y) = distance(y,x),三角不等式:distance(x,y)<= distance(x,z) + distance(y,z)。

二元数据的相似性度量

f00 :x取0并且y也取0的属性的个数

f01 : x取0并且y取1的属性的个数

f10 : x取1并且y取0的属性的个数

f11 :x取1并且y也取1的属性的个数

e.g.

x (1,0,0,0,0,0,0,0,0,0)

y (0,0,0,1,0,1,1,0,0,0)

f00 = 6

f01 = 2

f10 = 1

f11 = 0

简单匹配系数(Simple Matching Coefficient, SMC)可以在一个仅包含是非题的测验中用来发现回答问题相似的学生。

SMC = (f11 + f00) / (f00 + f11 + f10 + f01)

Jaccard系数用来处理仅包含非对称的二元属性的对象。

J = f11/(f10 + f01 + f11

余弦相似度可以用来计算文档的相似度,文档用向量表示,每个属性代表某个关键词出现的频率。

cos(x,y) = (x*y)/(||x||*||y||)

 

选择合适的邻近性度量方式邻近性度量的类型应该与数据类型相适应。对于许多稠密的、连续的数据,通常采用距离度量。对于稀疏数据,常常包含非对称的属性,通常采用忽略0-0匹配的相似性度量,对于复杂数据集,相似度依赖于它们共同具有的性质的数据,而不是依赖于它们都缺失的性质的数据。

posted @ 2015-08-08 21:17  软件心理学工程师  Views(1795)  Comments(0Edit  收藏  举报