我们将一个对象的一个属性扩展到多个对象的多个属性,就形成了矩阵。
上面就是一个矩阵的示例。
相异性矩阵:
相异度矩阵存储n个对象两两之间的相似性,表现形式是一个n×n维的矩阵。d(i,j)是对象i和j之间相异性的量化表示,通常为非负值,两个对象越相似或“接近”,其值越接近0,越不同,其值越大,且d(i,j)= d(j,i),d(i,i)=0。
相异度矩阵是对象—对象结构的一种数据表达方式,多数聚类算法都是建立在相异度矩阵基础上,如果数据是以数据矩阵形式给出的,就要将数据矩阵转化为相异度矩阵。对象间的相似度或相异度是基于两个对象间的距离来计算的。
数据的相似性(similarity)和相异性(dissimilarity)都称为邻近性(proximity)。两个对象越相似则相似性值越高,越相异则相异性值越高。用于度量相似性和相异性的数据结构是:数据矩阵(用于存放数据对象)和相异性矩阵(用于存放数据对象对的相异性值)。
标称属性的邻近性度量
假设标称属性的状态数目是M。两个对象i和j之间的相异性可以根据不匹配率来计算:
其中,p是刻画对象的属性总数,m是两个对象取值相同的属性数。
相似性可以用下式计算:sim(i,j) = 1 – d(i,j) = m / p。
示例
假如我们有以下的样本数据:
对象标识符 | 属性1 |
---|---|
1 | A |
2 | B |
3 | C |
4 | A |
此处令p=1,获取4个对象构成的相异性矩阵如下所示:
有相异性矩阵可得
代入数据:
0 | |||
(1-0)/1 | 0 | ||
(1-0)/1 | (1-0)/1 | 0 | |
(1-1)/1 | (1-0)/1 | (1-0)/1 | 0 |
得到结果如下:
由相异性矩阵可知,对象1和4是相似的,其他对象互不相似。
二元属性的邻近性度量
二元属性只有两种状态。
二元属性的邻近性度量分为对称的(symmetric)和非对称(asymmetric)的两种情况。对称的二元属性是指两个状态都同样重要,非对称的二元属性是指一个状态可以被忽略。
对于二元属性的相似性度量,首先需要制作两个对象的二元属性的列联表,如下所示:
二元属性的列联表
对象j | ||||
---|---|---|---|---|
对象i | 1 | 0 | sum | |
1 | q | r | q+r | |
0 | s | t | s+t | |
sum | q+s | r+t | p |
表中q是对象i和j都取1的属性数;r是在对象i中取1、在对象j中取0的属性数;s是在对象i中取0、在对象j中取1的属性数;t是对象i和j都取0的属性数。属性的总数是p,p=q + r + s + t。
如果对象i和j都是用对称的二元属性刻画,则i和j的相异性为:
如果对象i和j都是用非对称的二元属性刻画,只有一个结果是重要的,那么上述公式中的t认为是可被忽略的,则i和j的相异性为:
非对称的二元相似性可以用下式计算:
公式中的sim(i,j)被称作Jaccard系数。