拓端tecdat|R语言编程代写最优聚类数目k改进kmean聚类算法
原文链接:http://tecdat.cn/?p=7237
在本文中,我们将探讨应用聚类算法(例如k均值和期望最大化)来确定集群的最佳数量时所遇到的问题之一。从数据集本身来看,确定集群数量的最佳值的问题通常不是很清楚。在本文中,我们将介绍几种技术,可用于帮助确定给定数据集的最佳k值。
我们将在当前的R Studio环境中下载数据集:
预处理
由于此数据集的特征向量较低,因此我们将不关注特征选择方面,而是将使用所有可用特征。
一旦完成预处理,以确保数据已准备就绪,可用于进一步的应用。
聚类算法– k表示在其中找到最佳聚类数的示例
让我们尝试为该数据创建聚类。
让我们从k = 3开始并检查结果。
当我们检查(between_SS / total_SS)时,发现它很低。该比率实际上说明了群集之间数据点的平方总和。我们想要增加此值,并且随着群集数量的增加,我们看到它增加,但是我们不想过度拟合数据。因此,我们看到在k = 401的情况下,我们将拥有402个完全适合数据的簇。因此,我们的想法是找到一个k值,对于该值,模型不会过拟合,并且同时根据实际分布对数据进行聚类。现在让我们探讨如何解决找到最佳数目的群集的问题。
肘法
如果将集群解释的方差百分比相对于集群数量作图,则第一个集群会添加很多信息(说明很多方差),但在某个点上边际增益会下降,从而在图形。此时选择簇的数量,因此选择“肘部标准”。
该图可以在下面看到:
因此,对于k = 4,与其他k相比,between_ss / total_ss比率趋于缓慢变化且变化较小。因此对于该数据,k = 4应该是群集数量的一个不错的选择,
k均值的贝叶斯推断标准
k均值模型“几乎”是高斯混合模型,因此可以构造高斯混合模型的似然性,从而确定信息标准值。
可以在下面看到该图,其中k = 3和k = 4是可用的最佳选择。
从这两种方法可以看出,我们可以在一定程度上确定对于聚类问题而言,聚类数的最佳值是多少。几乎没有其他技术可以使用。
在此有一个重要的要点,即对于每个群集大小,此方法始终考虑大多数索引。因此,重要的是要了解哪些索引与数据相关,并根据该索引确定最佳选择是建议的最大值还是任何其他值。
正如我们在下面查看“第二差分D-index”图所看到的,很明显,最佳聚类数是k = 4。