九道门KMeans聚类R用于数据分析的
2023/4/27 来源:不详机器学习中的聚类算法是无监督技术(即输入数据没有标记响应)。他们的目标是根据数据的相似性绘制数据模式并将数据观察聚类到不同的组中。K-Means聚类是实现聚类算法成功汇总高维数据的一种方法。小白必入数据分析群,等你加入哦~
K-means聚类将一组观测值划分为固定数量的聚类,这些聚类最初是根据它们的相似特征指定的。
然而,在小组观察中出现的问题是:
1)事物彼此相似是什么意思?
2)我们如何确定事物足够接近与组合在一起?
回答这两个问题,决定最佳的K,理解K-means概念,并在R数据集上实现它是这篇文章的范围。
一旦我们定义了a,我们需要的集群数量,b,定位集群的初始猜测和c距离度量,我们就可以应用K-means来获得集群质心的最终估计和分配每个质心的观察。
理解算法:
为了便于理解,我们假设有一个总共有10个观测值的数据集。查看数据,我们可以得出结论,数据可以很容易地分为3个不同的集群,因此我们对此进行了处理。
首先,我们选择要对数据进行分类的聚类数量(即K-means中的K)。在这里,让我们决定K=3,因为这在视觉上是可推论的;稍后我们将介绍确定K的技术方法。
示例数据集
下一步是随机决定三个不同的初始数据点,它们在我们的图中充当我们的集群或“质心”,如下图中的彩色三角形所示。然后我们测量“1”数据点与三个质心之间的距离,并为其分配最接近质心的颜色。这将重复进行,直到所有数据点都已分配给任何一个质心。
选择随机K个质心
接下来,我们计算每个聚类的平均值w.r.t每个质心的数据点,这个平均值现在是每个质心的新位置,我们将它们重新放置在图表上,如下所示。我们计算每个点与所有质心的距离并相应上色的部分将再次重复,直到质心的位置不再改变。下图是我们期望在没有更多变化的情况下得到的结果。
将质心重新定位到它们的聚类点
这就是K-means如何根据距离度量将我们的数据集拆分为指定数量的集群。我们在二维图中使用的距离度量是欧几里得距离((x+y)的平方根)。
在R中实现K-means:
第1步:安装相关包并调用它们的库
第2步:加载和理解数据集
Iris是一个内置的R数据集,包含来自3种不同类型的鸢尾花(Irissetosa、versicolor和virginica)的个花卉观察结果。我们将在我们的算法测试中使用它。
第3步:消除目标变量
由于在这个数据集中已经完成了观察的分类,我们需要从我们的代码中删除目标变量,因为我们希望我们的算法能够做到这一点。为此,我将iris的前四列加载到我的数据框“data”中。
如何确定K使用什么值?
第4步:肘方法
虽然有很多方法可以决定要选择的集群数量,但Elbowpoint(虽然不是很准确,我们看到原因)被广泛使用。这个想法是通过将每个集群内的变化相加来评估聚类的质量(跟踪这个并从不同的起点重新开始),具有最小方差的参数获胜。肘方法绘制了变异减少与簇数(K)的关系,肘点是K的一个数字,在此之后变异不是很陡峭,是我们最好的K。
我们没有内置函数来测量我们观察中的方差程度。但是,有一个Rpubs文档为我们创建了wssplot(组内平方和图)函数来实现我们的肘方法。
该图显示K=2处的锐边,表明我们数据集的最佳聚类数为2。
第5步:实现k-means
就像看起来一样简单,kmeans()只需要我们输入我们的数据帧并指定K函数。
kmean-kmeans(data,2)kmean$centerskmean$clusters将返回一个范围从1到2的数字向量,描述哪些观测属于集群1和集群2。kmean$centers返回每个质心的位置。例如,簇1的平均值为Sepal.Length=5.00、Sepal.width=3.36、Petal.Length=1.56和Petal.width=0.29。
第6步:在集群中绘制我们的数据点
尽管这个图看起来很不错,并且清楚地将我们的观察分为2个集群,但我们已经知道我们的数据集总共有3个组。我们的肘方法在为我们提供正确的K方面并不完全准确。因此,根据经验,最好在肘点周围的K值之间进行迭代并自己决定最佳行动方案。
autoplot(kmean,data,frame=TRUE)
聚类后的数据图,K=2
第7步:Kmeans,K=3
既然我们已经决定改变K并查看数据模式,那么让我们看看结果如何变化。
kmean-kmeans(data,3)kmean$centers
第8步:绘制新的聚类图
我们看到kmean$clusters现在如何将观测值分成三个集群,并且kmean$centers也更新了质心值。下图显示了基于3个集群的分组。同样,K规格由我们决定;K确定技术可以为我们提供一个很好的估计。
聚类后的数据图,K=3
K-means是一种高效的机器学习技术
易于实施和应用具有很好的可解释性产生比分层聚类更紧密的聚类计算速度快然而,通过迭代方法手动选择K,依赖于初始集群和由于异常值导致的质心位置不准确是kmeans的一些缺点。这篇文章重点解释了kmeans的主要概念,讨论了一种决定K值的技术,在R中实现了kmeans,并强调了它的一些优缺点。