1.聚类的定义
聚类(Clustering)
是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得 同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大 。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
聚类和分类的区别
聚类(Clustering)
:是指把相似的数据划分到一起,具体划分的时候并不关心这一类的标签,目标就是把相似的数据聚合到一起,聚类是一种 无监督学习(Unsupervised Learning)
方法。分类(Classification)
:是把不同的数据划分开,其过程是通过训练数据集获得一个分类器,再通过分类器去预测未知数据,分类是一种 监督学习(Supervised Learning)
方法。
2.聚类的方法以及原理
数据聚类方法
数据聚类方法主要可以分为 划分式聚类方法(Partition-based Methods)
、 基于密度的聚类方法(Density-based methods)
、 层次化聚类方法(Hierarchical Methods)
等
划分式聚类方法
划分式聚类方法需要事先指定簇类的数目或者聚类中心,通过反复迭代,直至最后达到”簇内的点足够近,簇间的点足够远”的目标。经典的划分式聚类方法有 k-means
及其变体 k-means++
、 bi-kmeans
、 kernel 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)
聚类方法比较:
参考文档:
2. 常用聚类算法 – 知乎
Be First to Comment