聚类算法详解
本文主要介绍常用的聚类算法,用简洁的语言描述各聚类算法的核心思想,帮助概念不清的同学理清思绪,文章写作思路如下:
(1)了解聚类算法的定义
(2)区分聚类算法与分类算法的不同
(3)了解聚类算法的常见方法,各种方法的核心思想与优缺点
一、聚类的定义
通俗地讲,“物以类聚,人以群分”就是对聚类算法核心思想的完美概括,且聚类的目标是类内对象相似性尽量高,类间对象差异性尽量高。但是具体如何将一个大的数据集聚成多个不同的小簇?不同的聚类方法会有不同的标准,所以,聚类算法的定义反映到标准描述上,就是按照某一标准将数据集划分成不同的簇,目标是簇内数据的相似性尽量高,簇间数据的差异性尽量高。
二、聚类算法与分类算法
(1)聚类算法:属于无监督学习,也就是说进行聚类之前并不关注数据的标签信息,聚类的过程完全依赖于基于某一标准下的数据之间的相似性
(2)分类算法:属于有监督学习,也就是在进行分类之前是需要关注数据的标签信息的,分类模型会根据已有的标签数据训练出一个分类器,然后将训练好的分类器应用到新的数据上面,从而实现对新数据打标签的过程。
三、常用聚类算法
(1)Kmeans(K均值)
1)原理:随机抽取数据空间中的K个点,以它们为中心,依次计算每个样本点与这K个中心点之间的距离,进而将每个样本点划分到离其最近的中心点,重新计算这K个簇的中心作为新的类中心,再计算各样本距离新的类中心的距离进行重新划分,不断迭代,直到类中心不再变化。
2)优点:简单、快速
3)缺点:
l 只适合球状数据的聚类,不适合对非球状数据进行聚类
l 算法结果不稳定,容易受到初始类中心的影响
l 由于会通过距离的远近衡量样本的相似性,故容易受到异常值的影响
(2)密度聚类(DBSCAN)
1)原理:密度聚类有两个参数,一个是半径eps,一个是密度阈值MinPts
l 以每个数据点为圆心,以eps为半径画一个圆,这个圆被称为该数据点的eps邻域
l 对以上圆内包含的点进行计数,如果一个圆里边的点的数目超过了给定的密度阈值MinPts,则将该圆的圆心记为核心点;如果某个点的 eps 邻域内点的个数小于密度阈值但是落在核心点的邻域内,则称该点为边界点;如果某个点既不是核心点也不是边界点,则其就是噪声点。
l 核心点的eps邻域内的所有点,均是该核心点的直接密度直达,密度直达具有传递性,由密度直达的传递性可以推导出密度可达,即如果点B可以由点A密度直达,点C可以由点B密度直达,则点C可以由点A密度可达。
l 对于点A,如果点B和点C均可由点A密度可达,则称点B与点C密度相连,将密度相连的点连接在一起,就形成了聚类簇,即密度聚类的结果。
2)优点:
l 与Kmeans相比,密度聚类不需要事先确定类的数量,而且可以发现任意形状的簇类
l 密度聚类对异常值有较好的鲁棒性,也可以用来检测异常值
l 密度聚类对于数据库中样本的顺序不敏感,但是,对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动。
l 密度聚类被设计与数据库一同使用,可以加速区域的查询。例如,使用R*树
3)缺点:
l 密度聚类不能很好反映高维数据
l 密度聚类不能很好反映数据集以变化的密度,不适于数据集中样本密度差异很小的情况;
l 密度聚类是直接对整个数据集进行操作,所需的内存空间和I/O消耗都相当大,因此,在计算资源有限而数据量又非常庞大的情况下,密度聚类的效率将受到很大影响。
l 密度聚类使用了全局性表征密度的参数,因此,当各个类的密度不均匀,或类间的距离相差很大时,聚类的质量较差。
l 密度聚类不是完全确定的,边界点从不同的簇中获得,可以使不同簇的一部分,取决于数据处理。
l 密度聚类的质量取决于regionQuery(P,eps)函数中距离的测量。最常用的距离度量是欧式距离,尤其是在高维数据中,由于所谓的维数灾难,这种度量基本上是无用的,很难为eps找到一个恰当的值。虽然目前有一些基于欧式距离的算法,但是如果不能对数据和规模有很好的了解,也很难找一个有意义的距离阈值esp。
l 当密度差异大时,由于选取的MinPts-Eps组合不能同时适合所有的簇,密度聚类不能很好的进行数据聚类。
l 输入参数敏感,确定参数Eps , MinPts困难,若选取不当 ,将造成聚类质量下降。
l 由于经典的密度聚类算法中参数Eps和MinPts在聚类过程中是不变的,使得该算法难以适应密度不均匀的数据集。
(3)层次聚类(AGNES)
1)原理:将数据集一层一层的进行划分,后面的划分结果是依赖于前一层的划分结果的。可以分为两类:
自底向上的层次聚类(凝聚法):先将每个观测对象看做单独的一个类,然后按照距离的远近将最相近的两个类合并成一个大类,依次反复,直到所以有的观测对象都聚成一个大类;
自顶向下的层次聚类(分裂法):先将所有的观测对象看做一个大类,然后按照距离的远近将大类不断划分成多个小类,依次反复,直到所有的观测对象都变成单独的一个类;

2)优点:
l 可以发现任意形状的簇类
l 不需要事先确定类的数量
l 原理简单
3)缺点:
l 计算复杂度高
l 可能聚成链状
(4)模型聚类:高斯混合模型
1)原理:高斯混合聚类是将高斯分布、极大似然估计、贝叶斯公式等思路混合在一起的方法,其假设每个簇都符合不同的高斯分布,即每个簇内的数据都有不同的分布。所以,首先要假设出k个高斯分布,然后计算每个样本属于每个分布的概率,将每个样本都划分到其最大概率所属的分布下,将所有样本都划分完毕后即到了第一轮的聚类结果,然后会根据数据重新更新各个高斯分布的参数,接着基于新的分布,计算每个样本属于各个分布的概率,对各样本重新进行划分,不断更新迭代,直到模型收敛到最优。
2)优点:
l 是混合模型学习算法中速度最快的算法。
l 由于此算法仅最大化可能性,因此,不会使均值趋于零,也不会使聚类大小具有可能适用或不适用的特定结构。
l 对圆形聚类没有偏见。即使是非线性数据分布,它也能很好地工作,具有较强的鲁棒性。
3)缺点:
l 当每个混合模型的点数不足时,估计协方差矩阵将变得困难,并且除非对协方差进行人为正则化,否则该算法会发散并寻找无穷大似然函数值的解。
l 该算法将始终使用它可以使用的所有分量,所以在没有外部提示的情况下,需要留存数据或者信息理论标准来决定用多少个分量。
l 适合聚类球状类簇,不能发现一些混合度较高,非球状类簇。
l 需要指定簇个数。
————————————————
参考链接:[https://blog.csdn.net/weixin_41690708/article/details/95480399](https://blog.csdn.net/weixin_41690708/article/details/95480399)
参考链接:[https://blog.csdn.net/qingtianhaoshuai/article/details/123861759](https://blog.csdn.net/qingtianhaoshuai/article/details/123861759)