功能及可应用领域
聚类分析将大量数据划分为性质相同的子类,便于了解数据的分布情况。因此,它广泛
应用于模式识别、图像处理、数据压缩等许多领域,例如:
- 在市场分析中,通过聚类分析能帮助决策者识别不同特征的客户群,以及各客户群的
行为特征;
- 在生物工程研究中,聚类分析能够用于推导动植物的分类,按照功能对基因进行划分
并获取种群中的固有结构特征;
- 在非关系数据库领域(如空间数据库领域),聚类分析能够识别具有相同地理特征的区
域以及该区域的环境和人的特征;
- 在
web
信息检索领域,聚类分析能够对web文档进行分类,提高检索效率。
等等,这里就不一一列举了。
输入数据及要求
在进行
Kmeans
聚类时,必须对数据进行预处理。
- 注意数据属性在向量空间的规范化。
- 缺失属性值的处理:直接删除。
- 对噪声的处理:在训练的过程中对噪声的元组直接删除掉。
- 聚类变量值不应有数量级上的差异。
- 对分类型变量的处理。由于
Kmeans
聚类算法的距离计算是基于数值的,为符合计
算要求需要对分类型聚类变量进行预处理。(下文我们有专门的章节来介绍分类型变量的处
理)
算法原理
Kmeans
聚类也称快速聚类,属于覆盖型数值划分聚类算法。它得到的聚类结果,每
个样本点都唯一属于一个类,而且聚类变量为数值型,并采用划分原理进行聚类。
Kmeans
聚类涉及两个主要方面的问题:
下面将重点讨论这些问题。
Kmeans
对“亲疏程度”的测度
通常,“亲疏程度”的测度一般都有两个角度:第一,数据间的相似程度;第二,数据
间的差异程度。衡量相似程度一般可采用简单相关系数或等级相关系数等,差异程度则一般
通过某种距离来测度。
Kmeans
聚类方法采用的是第二个测度角度。
为有效测度数据之间的差异程度,
Kmeans
聚类算法将所收集到具有
p
个变量的样本
数据,看成
p
维空间上的点,并以此定义某种距离。通常,点与点之间的距离越小,意味
着它们越“亲密”,差异程度越小,越有可能聚成一类;相反,点与点之间的距离越大,意
味着它们越“疏远”,差异程度越大,越有可能分属不同的类。
由于
Kmeans
聚类方法所处理的聚类变量均为数值型,因此,它将点与点之间的距离
定义为欧氏距离(
Euclideandistance
),即数据点
x
与
y
间的欧氏距离是两个点的
p
个变量
之差的平方和的算术平方根,数学定义为
Euclid(x,y)=∑i=1p(xi−yi)p−−−−−−−−−−⎷.
除此之外,常用的距离还包括平方欧氏距离(
SquaredEuclideandistance
)、切比雪
夫(
Chebychev
)距离、
Block
距离、明考斯基(
Minkowski
)距离等。这里我们就不做
介绍了。
改进后的“亲疏程度”的测度
由于
Kmeans
聚类算法采用欧氏距离来表示样本间的“亲疏程度”,而欧式距离在计算
距离时采用的是循环的思想对样本的各个分量计算距离,因此在解决大数据集的聚类问题方
面存在效率低,占用内存大的缺陷。由于计算机的内存有限,无法存储超过内存容量的大数
据集。因此,尽管
Kmeans
聚类算法在理论上无懈可击,但却无法通过计算机实现。为此,
我们提出了一种巧妙的数据存储方案,即
CF
树(
ClusteringFeatureTree
)。
CF
树是一种数据的压缩存储方式。树中每个节点只存储聚类过程计算距离所必须的汇
总统计量。
在
Kmeans
聚类算法中,关于树节点
i
,即第
i
类的汇总统计量包括
CFi={Ni,LSi−→−,SS2i}
,依次为节点所包含的样本量,数值型变量值的向量和,数值型变量值的平方和。可见,节点并没有存储原始数据本身,因而大大减少了存储的数据量,使得大数据集聚类具有实现的可能。
下面我们来推导用
CF
树来存储的数据集的欧氏距离(
Euclideandistance
)。
对于任意两个
CF
树,树一:
{Xi−→|X1−→,X2−→,...,XN1−→−}
;树二:
{Yi→|Y1→,Y2→,...,YN1−→−}
,则两个树之间的距离:
D=∑N1i=1∑N2j=1(Xi−→−Yj→)2N1⋅N2−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1∑N2j=1(Xi−→2−2Xi−→Yj→+Yj→2)N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1(N2Xi−→2−2Xi−→∑N2j=1Yj→+∑N2j=1Yj→2)N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=N2∑N1i=1Xi−→2−2∑N1i=1Xi−→∑N2j=1Yj→+N1∑N2j=1Yj→2N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1Xi−→2N1+∑N2j=1Yj→2N2−2∑N1i=1Xi−→∑N2j=1Yj→N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷
下面我们定义
CF
树的存储结构:
CF={N,∑i=1NXi−→,∑i=1NXi−→2}={N,LS−→,SS},
其中
N
代表存储的样本个数,
LS−→
代表数值型变量值的向量和,
SS
代表数值型变量值的平
方和。
假设现在有两个
CF
树:
CF1={N1,X1−→+X2−→+...+XN1−→−,X1−→2+1−→−,X1−→2+X2−→2+...+XN1−
X
N1−→−2}
=
{N1,LS1−→−,SS1}
,
L