Kmeans聚类算法

功能及可应用领域

聚类分析将大量数据划分为性质相同的子类,便于了解数据的分布情况。因此,它广泛
应用于模式识别、图像处理、数据压缩等许多领域,例如:

  • 在市场分析中,通过聚类分析能帮助决策者识别不同特征的客户群,以及各客户群的
    行为特征;
  • 在生物工程研究中,聚类分析能够用于推导动植物的分类,按照功能对基因进行划分
    并获取种群中的固有结构特征;
  • 在非关系数据库领域(如空间数据库领域),聚类分析能够识别具有相同地理特征的区
    域以及该区域的环境和人的特征;
  • w e b 信息检索领域,聚类分析能够对web文档进行分类,提高检索效率。

等等,这里就不一一列举了。

输入数据及要求

在进行 K m e a n s 聚类时,必须对数据进行预处理。

  • 注意数据属性在向量空间的规范化。
  • 缺失属性值的处理:直接删除。
  • 对噪声的处理:在训练的过程中对噪声的元组直接删除掉。
  • 聚类变量值不应有数量级上的差异。
  • 对分类型变量的处理。由于 K m e a n s 聚类算法的距离计算是基于数值的,为符合计
    算要求需要对分类型聚类变量进行预处理。(下文我们有专门的章节来介绍分类型变量的处
    理)

算法原理

K m e a n s 聚类也称快速聚类,属于覆盖型数值划分聚类算法。它得到的聚类结果,每
个样本点都唯一属于一个类,而且聚类变量为数值型,并采用划分原理进行聚类。

K m e a n s 聚类涉及两个主要方面的问题:

  • 如何测度样本的“亲疏程度”;
  • 如何进行聚类。

下面将重点讨论这些问题。

K m e a n s 对“亲疏程度”的测度

通常,“亲疏程度”的测度一般都有两个角度:第一,数据间的相似程度;第二,数据
间的差异程度。衡量相似程度一般可采用简单相关系数或等级相关系数等,差异程度则一般
通过某种距离来测度。 K m e a n s 聚类方法采用的是第二个测度角度。

为有效测度数据之间的差异程度, K m e a n s 聚类算法将所收集到具有 p 个变量的样本
数据,看成 p 维空间上的点,并以此定义某种距离。通常,点与点之间的距离越小,意味
着它们越“亲密”,差异程度越小,越有可能聚成一类;相反,点与点之间的距离越大,意
味着它们越“疏远”,差异程度越大,越有可能分属不同的类。

由于 K m e a n s 聚类方法所处理的聚类变量均为数值型,因此,它将点与点之间的距离
定义为欧氏距离( E u c l i d e a n d i s t a n c e ),即数据点 x y 间的欧氏距离是两个点的 p 个变量
之差的平方和的算术平方根,数学定义为

E u c l i d ( x , y ) = i = 1 p ( x i y i ) p .

除此之外,常用的距离还包括平方欧氏距离( S q u a r e d E u c l i d e a n d i s t a n c e )、切比雪
夫( C h e b y c h e v )距离、 B l o c k 距离、明考斯基( M i n k o w s k i )距离等。这里我们就不做
介绍了。

改进后的“亲疏程度”的测度

由于 K m e a n s 聚类算法采用欧氏距离来表示样本间的“亲疏程度”,而欧式距离在计算
距离时采用的是循环的思想对样本的各个分量计算距离,因此在解决大数据集的聚类问题方
面存在效率低,占用内存大的缺陷。由于计算机的内存有限,无法存储超过内存容量的大数
据集。因此,尽管 K m e a n s 聚类算法在理论上无懈可击,但却无法通过计算机实现。为此,
我们提出了一种巧妙的数据存储方案,即 C F 树( C l u s t e r i n g F e a t u r e T r e e )。

C F 树是一种数据的压缩存储方式。树中每个节点只存储聚类过程计算距离所必须的汇
总统计量。

K m e a n s 聚类算法中,关于树节点 i ,即第 i 类的汇总统计量包括 C F i = { N i , L S i , S S i 2 } ,依次为节点所包含的样本量,数值型变量值的向量和,数值型变量值的平方和。可见,节点并没有存储原始数据本身,因而大大减少了存储的数据量,使得大数据集聚类具有实现的可能。

下面我们来推导用 C F 树来存储的数据集的欧氏距离( E u c l i d e a n d i s t a n c e )。

对于任意两个 C F 树,树一: { X i | X 1 , X 2 , . . . , X N 1 } ;树二: { Y i | Y 1 , Y 2 , . . . , Y N 1 } ,则两个树之间的距离:

D = i = 1 N 1 j = 1 N 2 ( X i Y j ) 2 N 1 N 2 = i = 1 N 1 j = 1 N 2 ( X i 2 2 X i Y j + Y j 2 ) N 1 N 2 = i = 1 N 1 ( N 2 X i 2 2 X i j = 1 N 2 Y j + j = 1 N 2 Y j 2 ) N 1 N 2 = N 2 i = 1 N 1 X i 2 2 i = 1 N 1 X i j = 1 N 2 Y j + N 1 j = 1 N 2 Y j 2 N 1 N 2 = i = 1 N 1 X i 2 N 1 + j = 1 N 2 Y j 2 N 2 2 i = 1 N 1 X i j = 1 N 2 Y j N 1 N 2

下面我们定义 C F 树的存储结构:

C F = { N , i = 1 N X i , i = 1 N X i 2 } = { N , L S , S S } ,

其中 N 代表存储的样本个数, L S 代表数值型变量值的向量和, S S 代表数值型变量值的平
方和。

假设现在有两个 C F 树:

C F 1 = { N 1 , X 1 + X 2 + . . . + X N 1 , X 1 2 + X 2 2 + . . . + X N 1 2 } = { N 1 , L S 1 , S S 1 }

C F 2 = { N 2 , Y 1 + Y 2 + . . . + Y N 2 , Y 1 2 + Y 2 2 + . . . + Y N 2 2 } = { N 2 , L S 2 , S S 2 }

猜你喜欢

转载自blog.csdn.net/wumian0123/article/details/81633767