5中聚类方法介绍

Posted sisi-science

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5中聚类方法介绍相关的知识,希望对你有一定的参考价值。

概要

原文参考链接:https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

聚类是常用于机器学习中的将数据分组合并的方法。聚类是一种非监督学习方法,其目的旨在将数据按照不同的特征进行分类。在特征分类理论中,同一组的数据具有相似的特征。

如下将介绍在机器学习中常用的5种将数据聚类的方法并分析其优劣之处。

K-means

K-means 是聚类算法中最常见的算法之一。该算法需要设定一个群聚数量的初始值K,根据初始中心点,对数据中的每个点计算到每个中心点的距离,并将每个数据点分类给距离最近的中心点群,再根据群中的数据点的平均值重新设定中心点,然后用新的中心点进行重新分类,以上步骤进行多次循环迭代达到收敛状态即可得到算法的最终分类。对于初始中心点的设置,可以采用随机的方式,也可以根据数据的特性选取让数据快速收敛的中心点。在应用中,大多采取多次初始中心点的方式,比较不同的中心点迭代结果选取最佳的分类。

该算法只需计算数据点与中心点的距离,故计算量不大,算法能快速得到分类结果;另一方面该算法需要选取群聚数量初始值和中心点初始值,这些值都会影响算法的最终聚类结果,所以该算法不具有一致性。

Mean-shift 

Mean-shift算法旨在找到数据点的密集区,该算法也是围绕中心点进行聚类的,不同于上述K-means算法的是,k-means需要计算数据数量与中心点矢量的距离,而mean-shift是要在与中心点一定距离范围内找到最多的数据点,类似于拿一个一定大小的窗口去遍历数据,要找到一个区域该窗口能够容纳最多的数据点。该算法由如下方式实现:窗口内数据点的平均值总是会落在数据点比较密集的地方,根据窗口的大小和以平均值点作为中心点不停地迭代出新的中心点直到找到最终值,在迭代过程中如果由窗口重叠,保留包含含数据点更多的窗口的中心点,这样被窗口遍历过的点汇集成同一个聚类。

Mean-shift算法不需要选取群聚的数量,算法能自动找到。该算法的缺陷在于窗口的大小的选择影响了群聚的效果。

Density-Based spatical clustering of application with noise(DBSCAN)

DBSCAN算法类似于Mean-shift算法,区别在于该算法确定了一个群聚内的最少数据量,如果数据点的数量不能达到最少值,则视这些点为噪声。

Expectation-Maximization(EM) clustering using Gaussian mixture models(GMM)

GMM模型是以数据的分布为高斯分布,为了找到适合数据的高斯分布参数,采用EM的优化算法。该算法也需要设定群聚数量的初始值然后给每个群类随机选取高斯分布的参数,算法的目的是要找到合适数据的参数值,所以这是一个参数优化过程。根据给定的初始参数,计算每个数据点分配给每个群类的概率,概率最高的点视为新的群类中心点,并且将每个点重新分配给概率最高的群类;根据新的概率重新设定参数值进行计算并使群聚内的数据点的概率最大化;数次迭代后直至收敛。

Agglomerative Hierarchical clustering

该算法可分为两类:由上至下(top-down)和由下至上(bottom-up)的方式。由下至上把每个数据看程一个单独的聚类然后对点根据原则进行成对合并,经过逐级合并后最终能合并成一个大的聚类,需要获得不同数量的聚类只需要在合并过程中达到该数量后停止即可。该算法类似于一个建立二叉树的过程,该算法不需要设定聚类数量的初始值,甚至能根据不同的聚类数量获得群聚,该算法的劣势在于计算量比较大o(n3)

 

以上是关于5中聚类方法介绍的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中聚类方法的并行化

在R中聚类非常大的数据集

在python中聚类巨大的数据矩阵?

请问spss中聚类分析的操作步骤

一致性聚类(用于确定聚类算法中聚类的数目)

在 MySQL 数据库中聚类经纬度数据