K 均值聚类
K 均值聚类是 无监督学习在所有无监督学习算法中,K 均值聚类可能是使用最广泛的,这要归功于它的强大功能和简单性。 K-means 聚类到底是如何工作的?
简而言之,K 均值聚类的工作原理是 创建参考点(质心) 对于所需的班级数量,然后 将数据点分配给类簇 基于最接近的参考点。 虽然这是 K 均值聚类的快速定义,但让我们花一些时间更深入地研究 K 均值聚类,并对其运行方式有一个更好的直观了解。
定义聚类
在研究用于执行 K 均值聚类的确切算法之前,先来看看什么定义聚类:
集群只是项目组,而集群只是将项目放入这些组中。 从数据科学的意义上来说, 聚类算法 目标是做两件事:
- 确保集群中的所有数据点尽可能彼此相似。
- 确保不同集群中的所有数据点尽可能彼此不同。
聚类算法根据某种相似性度量将项目分组在一起。 这通常是通过查找数据集中不同可能组的“质心”来完成的,尽管不完全如此。 有多种不同的聚类算法,但所有聚类算法的目标都是相同的,即确定数据集固有的组。
K均值聚类
K-Means 聚类是最古老和最常用的聚类算法之一,它的运行基于 向量量化。 选取空间中的一个点作为原点,然后从原点绘制到数据集中所有数据点的向量。
一般来说,K-means 聚类可以分为五个不同的步骤:
- 将所有实例放入子集中,子集的数量等于 K。
- 找到新创建的簇分区的平均点/质心。
- 根据这些质心,将每个点分配给特定的簇。
- 计算每个点到质心的距离,并将点分配给距质心距离最小的簇。
- 将点分配给簇后,找到簇的新质心。
重复上述步骤直至训练过程完成。
在初始阶段,质心放置在数据点之间的某个位置。
或者,在放置质心之后,我们可以将 K 均值聚类视为在两个不同阶段之间来回交换:标记数据点和更新质心。
在第二步中,使用欧几里德距离等距离度量来计算给定点最接近哪个质心,然后将这些点分配给该质心的类。
在数据点标记阶段,每个数据点都被分配一个标签,将其放置在属于最近质心的簇中。 最近的质心通常使用平方欧几里得距离来确定,尽管可以根据输入聚类算法的数据类型使用其他距离度量,例如曼哈顿距离、余弦和杰卡德距离。
第三步,将质心移动到所有数据点的平均值。 然后重新分配班级。
在质心更新步骤中,通过查找当前包含在簇内的所有数据点之间的平均距离来计算质心。
如何选择正确的“K”值
考虑到 K 均值聚类是一种无监督算法,并且事先不知道类的数量,那么如何确定适当的类数/正确的 K 值?
一种选择正确 K 值的技术称为“肘部技术”。 肘部技术包括对一系列不同的 K 值运行 K 均值聚类算法,并使用准确度度量(通常是误差平方和)来确定哪些 K 值可提供最佳结果。 误差平方和是通过计算簇的质心与该簇中的数据点之间的平均距离来确定的。
术语“肘形技术”来自这样一个事实:当您针对不同的 K 值绘制 SSE 时,所得线图通常会具有“肘形”形状,其中 SSE 对于 K 的前几个值快速下降,但随后趋于平稳。 在这种情况下,位于弯头处的 K 值是 K 的最佳值,因为在该值之后收益会迅速递减。
小批量 K 均值聚类
随着数据集变大,计算时间也会增加。 在大规模数据集上运行时,基本 K 均值聚类可能需要很长时间才能完成,因此,对 K 均值聚类进行了调整,以降低算法的空间和时间成本。
小批量 K 均值聚类 是 K 均值聚类的变体 其中所考虑的数据集的大小是有上限的。 普通 K 均值聚类同时对整个数据集/批次进行操作,而小批量 K 均值聚类 将数据集分解为子集。 小批量是从整个数据集中随机采样的,对于每次新的迭代,都会选择一个新的随机样本并用于更新质心的位置。
在小批量 K 均值聚类中,聚类是通过小批量值和学习率的组合来更新的。 学习率随着迭代而降低,它是放置在特定簇中的数据点数量的倒数。 降低学习率的效果是,在经过多次迭代后,簇没有变化时,新数据的影响减少,达到收敛。
关于小批量 K 均值聚类有效性的研究结果表明,它可以成功地减少计算时间,同时稍微权衡聚类质量。
K-Means 聚类的应用
K 均值聚类可以安全地用于数据点可以分为不同组/类的任何情况。 以下是 K 均值聚类的一些常见用例示例。
K-means 聚类可应用于文档分类,根据主题、标签、单词用法、元数据和其他文档特征等特征对文档进行分组。 它还可用于根据帖子和评论等活动模式将用户分类为机器人或非机器人。 K 均值聚类还可用于根据监测健康状况时的关注程度、合并症、年龄、患者病史等特征将人们分组。
K 均值聚类还可以用于更多开放式任务,例如创建推荐系统。 Netflix 等系统的用户可以根据观看模式进行分组,并推荐相似的内容。 K 均值聚类可用于异常检测任务,突出显示潜在的欺诈或缺陷商品实例。