目录
一、聚类的基本数据结构
假设要聚类的数据集合包含 n 个数据对象,这些数据对象可能表示人,房子,文档,国家等。许多基于内存的聚类算法选择如下两种有代表性的数据结构:
(1)数据矩阵(Data matrix,或称对象-属性结构)
用 p 个变量(也称为属性)来表现 n 个对象,例如用年龄,身高,性别,种族等属性来表现对象“人”。这种数据结构是关系表的形式,或者看为 n*p 维( n 个对象*p 个属性)的矩阵。
(2)相异度矩阵(dissimilarity matrix 或称对象-对象结构)
存储 n 个对象两两之间的近似性,表现形式是一个 n*n 维的矩阵。在这里 d(i,j)是对象 i 和对象 j 之间相异性的量化表示,通常它是一个非负的数值,当对象 i 和j 越相似,其值越接近 0;两个对象越不同,其值越大。既然 d(i,j) = d(j,i),而且 d(i,i)=0,我们可以得到如下的矩阵。
数据矩阵经常被称为二模( two-mode)矩阵,而相异度矩阵被称为单模( one-mode)矩阵。这是因为前者的行和列代表不同的实体,而后者的行和列代表相同的实体。许多聚类算法以相异度矩阵为基础。如果数据是用数据矩阵的形式表现的,在使用该类算法之前要将其转化为相异度矩阵。
二、不同数据类型的相异度计算方法
聚类算法的基本出发点在于根据对象间相似度将对象划分为不同的类。对于n个数据对象,其可能具有m个属性变量,其中,属性变量可能是区间标度变量、二元变量、 标称变量、序数型变量、比例标度变量等等,对于不同类型的属性变量以及由各种类型变量组成的混合类型变量的相似度计算,需要采用特定的方法。
(一)区间标度变量
基本呈直线比例的连续变量。典型的例子包括重量和高度、大气温度等。对于这类变量。通常度量标准有两种:距离和相似性系数。
1、距离法
距离是指:把一个观测看做M维空间中的一个点,并在空间中定义距离。基于距离的聚类算法是把距离较近的点可以归入同一类,距离远的点归入不同的类。常见的距离度量方法有欧几里得距离、切比雪夫距离、曼哈顿距离、兰氏距离等方法。
(1)欧几里得距离
其意义就是两个元素在欧氏空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。
-
二维平面上点a(x1,y1)与b(x2,y2)间的欧氏距离:
-
三维空间点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
-
n维空间点a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的欧氏距离(两个n维向量):
用R语言计算距离主要是dist函数。若X是一个M×N的矩阵,则dist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。
a=matrix(rnorm(15,0,1),c(3,5))
a
[,1] [,2] [,3] [,4] [,5]
[1,] -1.3687632 -0.1256902 1.831776 0.04040039 0.7215346
[2,] -0.9527400 0.1411766 1.869298 0.48506072 -0.4510057
[3,] -0.5019286 -0.5775474 -0.266830 -1.25701475 0.6687304
dist(a,p=2)
1 2
2 1.348434
3 2.654392 3.093780
第一个行与第二行的距离为1.348434;第二行与第三行的距离为3.093780;第一行与第三行的距离为2.654392。
(2)标准化的欧几里得距离
引入标准化欧式距离的原因是各个维度之间的尺度不一样。例如如果向量中第一维元素的数量级是100,第二维的数量级是10,比如v1=(100,10,30),v2 = (500,40),则计算欧式距离:
欧式距离会给第一维度100权重,这会压制第二维度的影响力,影响聚类效果。因此需要对所有维度分别进行处理,而标准化欧式距离即是将集合X={xi} 先进行归一化,映射到正太分布N(0,1)的区间。两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式为:
其中Sk是分量的标准差。
&#x