Press "Enter" to skip to content

聚类的方法、原理以及一般过程

1.聚类的定义

 

聚类(Clustering) 是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得 同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大 。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

 

聚类和分类的区别

聚类(Clustering) :是指把相似的数据划分到一起,具体划分的时候并不关心这一类的标签,目标就是把相似的数据聚合到一起,聚类是一种 无监督学习(Unsupervised Learning) 方法。
分类(Classification) :是把不同的数据划分开,其过程是通过训练数据集获得一个分类器,再通过分类器去预测未知数据,分类是一种 监督学习(Supervised Learning) 方法。

2.聚类的方法以及原理

 

数据聚类方法

 

数据聚类方法主要可以分为 划分式聚类方法(Partition-based Methods)基于密度的聚类方法(Density-based methods)层次化聚类方法(Hierarchical Methods)

 

 

划分式聚类方法

 

划分式聚类方法需要事先指定簇类的数目或者聚类中心,通过反复迭代,直至最后达到”簇内的点足够近,簇间的点足够远”的目标。经典的划分式聚类方法有 k-means 及其变体 k-means++bi-kmeanskernel k-means 等。

 

经典 k-means 源代码 ,下左图是原始数据集,通过观察发现大致可以分为4类,所以取k=4,测试数据效果如下右图所示。

 

 

基于密度的方法

 

k-means 算法对于凸性数据具有良好的效果,能够根据距离来讲数据分为球状类的簇,但对于非凸形状的数据点,就无能为力了,当 k-means 算法在环形数据的聚类时,我们看看会发生什幺情况。

 

 

层次化聚类方法

 

前面介绍的几种算法确实可以在较小的复杂度内获取较好的结果,但是这几种算法却存在一个 链式效应 的现象,比如:A与B相似,B与C相似,那幺在聚类的时候便会将A、B、C聚合到一起,但是如果A与C不相似,就会造成聚类误差,严重的时候这个误差可以一直传递下去。为了降低 链式效应 ,这时候层次聚类就该发挥作用了。

 

层次聚类算法 (hierarchical clustering)将数据集划分为一层一层的  clusters ,后面一层生成的  clusters 基于前面一层的结果。层次聚类算法一般分为两类:

Agglomerative 层次聚类 :又称自底向上(bottom-up)的层次聚类,每一个对象最开始都是一个  cluster ,每次按一定的准则将最相近的两个  cluster  合并生成一个新的  cluster ,如此往复,直至最终所有的对象都属于一个  cluster 。这里主要关注此类算法。
Divisive 层次聚类 : 又称自顶向下(top-down)的层次聚类,最开始所有的对象均属于一个  cluster ,每次按一定的准则将某个  cluster  划分为多个  cluster ,如此往复,直至每个对象均是一个  cluster

3.聚类的一般过程

 

距离误差和(SSE)

 

聚类方法比较:

 

 

参考文档:

 

1. 常用聚类算法综述 – 知乎

 

2. 常用聚类算法 – 知乎

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注