K-Means 聚类:R 用于数据分析的概念和实现

K-Means 聚类:R 用于数据分析的概念和实现

机器学习中的聚类算法是无监督技术(即输入数据没有标记响应)。他们的目标是根据数据的相似性绘制数据模式并将数据观察聚类到不同的组中。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 种不同类型的鸢尾花(Iris setosaversicolorvirginica)的150 个花卉观察结果。我们将在我们的算法测试中使用它。

第 3 步:消除目标变量

由于在这个数据集中已经完成了观察的分类,我们需要从我们的代码中删除目标变量,因为我们希望我们的算法能够做到这一点。为此,我将 iris 的前四列加载到我的数据框“data”中。

如何确定 K 使用什么值?

第四步:肘方法

虽然有很多方法可以决定要选择的集群数量,但Elbow point(虽然不是很准确,我们看到原因)被广泛使用。这个想法是通过将每个集群内的变化相加来评估聚类的质量(跟踪这个并从不同的起点重新开始),具有最小方差的参数获胜。肘方法绘制了变异减少与簇数 (K) 的关系,肘点是 K 的一个数字,在此之后变异不是很陡峭,是我们最好的 K。

我们没有内置函数来测量我们观察中的方差程度。但是,有一个 Rpubs 文档为我们创建了 wssplot(组内平方和图)函数来实现我们的肘方法。

该图显示 K = 2 处的锐边,表明我们数据集的最佳聚类数为 2。

WSS 图(作者提供的图片)

第 5 步:实现k – means

就像看起来一样简单,kmeans() 只需要我们输入我们的数据帧并指定 K函数。

kmean <- kmeans(data, 2) 
kmean$centers

kmean$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,并强调了它的一些优缺点。

作者:Maria Gulzar

免责声明:凡未注明来源或者来源为网络的信息均转自其它平台,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。网站只负责对文章进行整理、排版、编辑,不承担任何法律责任。若有侵权或异议请联系我们删除,谢谢。

发表评论

您的电子邮箱地址不会被公开。