聚类分析
聚类分析(Cluster analysis),也称为聚类(Clustering),目的是将一个对象(object) 集分成若干组,使得在相同组(也称为类(Clusters))的象相比于不同组中的对象更相似。聚类分析被广泛地应用于数据挖掘中,特别是初步的探索性数据分析。例如,图1 中的左图是二维散点图,根据相似度聚成三类,右图用红绿蓝三种颜色表示聚类结果。
聚类技术在图像分析、信息检索、生物信息、数据压缩和计算机图形学等领域被广泛地应用。下面以图形例举聚类的常见应用:
定义
一般地,将一个“类” 定义为一个数据对象集。而对于不同的类型,“类” 的概念有所不同,因此,重要的是对不同类模型的理解。常见的类模型有以下几种:
连接模型 : 例如,基于距离连接的层次聚类法(
hierarchical clustering
);中心模型 : 例如,
k-means
法使用一个类均值代表一个类;分布模型 : 例如,用概率分布代表一个类,典型的方法有基于
EM
算法的多元正态分布。
“聚类”实际上是给出一个类的集合,通常包括数据集的所有对象。同时,它可能也指出了类之间的 关系。例如,层次聚类法给出了类之间的层次结构。按照类结构特点,聚类也可以大致分为两种类型:Hard clustering
: 每一个对象确定地属于某一个类Soft clustering
: 每一个对象在某种程度上属于某个类,这里的“某种程度”,通常用概率表示。下面介绍三种常见的聚类算法。
层次聚类
层次聚类法,构建一个类的层次结构,产生一个从根到叶的树形结构,称为系统树图(dendrogram
)。层次聚类的策略通常分为两种,即:
- Agglomerative : 自下而上聚类
每一个对象初始时自成一类,然后递归地合并两个具有最短类间距的类成一个新类,从下往上生成类层次。
- Divisive : 自上而下聚类
所有对象初始时组成一个类,然后递归地将上层类按最大类间距分解成两个新类,从上往下生成类层次。最后,用户可以根据类层次结构自定义分类结果。图5是依两种策略的聚类过程示意图:
k-means
聚类
定义
假设由 n 个观测点组成的集合
k-means
聚类的目标是,将这
其中, μk,k=1,2,…,K 是各类的中心,其值为该类中的观测点的均值。那么,
k-means
聚类的目标是找到一个分割
S
,使得
算法实现
k-means
聚类算法由以下三步组成:
Initial step : 从数据集随机地选择 K 个观测,分别作为
K 个类的中心,其值记为 μ1,μ2,…,μK 。依次将 n 个观测分配到距离它们最近的类中。K 个类中心自然在它们各自代表的类中。设 γik∈{ 0,1} 表示观测 xi 分配到类的情况, i=1,2,…,n;k=1,2,…,K . 显然, ∑k=1Kγik=1