我的 IBM 登录 订阅

什么是 K 均值聚类?

2024 年 6 月 26 日

作者

Eda Kavlakoglu

Program Manager

Vanna Winland

AI Advocate & Technology Writer

K 均值聚类是一种用于数据聚类的无监督学习算法,它将未标记的数据点分组到不同的组或集群中。

它是机器学习中最常用的聚类方法之一。与监督学习不同,该算法使用的训练数据是未标记的,即数据点没有定义的分类结构。

虽然存在多种类型的聚类算法,包括排他性、重叠性、层次性和概率性,但 K 均值聚类算法是排他性或“硬”聚类方法的一个示例。这种分组形式规定一个数据点只能存在于一个集群中。这种类型的集群分析通常用于数据科学中的市场细分、文档聚类、图像分割和图像压缩。K 均值算法因其高效、有效、简单等特点,在聚类分析中被广泛应用。

K 均值是一种基于中心点的迭代聚类算法,它根据中心点之间的距离将数据集划分为相似的组。中心点或集群中心是集群内所有点的平均值或中位数,具体取决于数据的特征。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

K 均值聚类如何工作?

K 均值聚类是一个迭代过程,用于最小化数据点与其集群质心之间距离的总和。

K 均值聚类算法通过使用数学距离度量(通常为欧几里得距离)将数据点划分至集群。其目标是最小化数据点与其分配集群之间距离的总和。距离质心最近的数据点被分到同一类别。K 值越高或集群数量越多,表示集群越小,细节越多,而 k 值越低,表示集群越大,细节越少。

初始化 K

传统的 K 均值聚类算法需要几个步骤。第一步是初始化 k 个中心点,其中 k 指为特定数据集选择的集群数。这种方法采用随机选择或初始中心点采样的方法。

分配质心

下一步包括基于期望最大化机器学习算法的两步迭代过程。1 期望步骤根据距离(通常是欧几里得距离)将每个数据点分配给其最近的中心点。最大化步骤则计算每个集群中所有点的均值,并重新分配集群中心或中心点。这个过程不断重复,直到中心点位置达到收敛点或达到最大迭代次数。

K 值聚类算法虽然简单,但对初始条件和异常值十分敏感。优化质心初始化和集群的数量 k  对于获得最有意义的集群至关重要。通过使用评估指标和初始质心采样的方法,来评估和优化算法的聚类组件。

专家荟萃 | 播客

解码 AI:每周新闻摘要

加入我们的世界级专家团队,包括工程师、研究人员、产品负责人等,他们将穿透 AI 的喧嚣,为您带来最新的 AI 新闻和见解。

集群评估指标

优质集群至少包含两个属性:

  1. 集群内的所有数据点都应相似。
  2. 各个集群应该彼此不同。

这些属性是通过最小化集群内距离和最大化数据集中所有数据点的集群间距离来实现。换句话说,集群之间越紧凑、越孤立,效果越好。K 均值聚类分析算法旨在最小化误差平方和 (SSE)。2 计算每个点到其最近中心点的欧几里德距离平方的 SSE,可以通过测量每个集群内的总体变化来评估集群分配的质量。

集群评估指标用于检查集群质量,并从不同角度分析聚类结果。这有助于选择最佳集群数量和质心初始化。以下评估指标是衡量聚类内和聚类间距离的常用方法。

惯性

K 均值聚类算法旨在选择最小化惯性的中心点或集群中心,惯性是一种基于距离试题评估数据集聚类效果的指标。惯性通过测量数据点与其中心点之间的距离,对该距离进行平方运算,然后将集群中数据点的平方相加计算得出。这一和或惯性值就是集群内距离。总和越低越好,因为这意味着集群中的数据点更加紧凑或更加相似。3

Dunn 指数

第二个属性通过 Dunn 指数来衡量。Dunn 指数表示最小集群间距离和最大集群内距离之间的关系。集群间距离较高的集群质量更高,因为这意味着集群彼此之间尽可能不同。4

优化 K 均值性能

在使用 K 均值时,优化非常重要,能够获得最佳聚类结果。

由于随机初始化步骤,K 均值算法具有不确定性。这意味着,即使在相同的数据上执行两次算法,集群分配的结果也可能会有所不同。为了获得最佳的聚类结果,正确选择初始质心和最佳集群数量可以提高 K 均值算法的准确性和速度。

初始化集群质心

每个集群都由一个质心表示,质心是代表集群中心的数据点。K 均值通过最小化集群中数据点及其质心或  K  平均值之间的距离,将相似的数据点分组到集群中。K 均值算法旨在最小化数据点与其分配的集群质心之间的总距离。该算法以迭代方式运行,初始分区选择会对最终的集群结果产生很大影响。

随机初始化可能产生不一致的结果。中心点初始化方法可减少这些风险。NUS Computing 的一项研究解释并比较了这些方法,例如常用的 K 均值++ 和随机初始化。5

K 均值++

K 均值++ 是一种 K 均值算法,用于优化初始集群中心点的选择。由研究人员 Arthur 和 Vassilvitskii 开发的 K 均值++ 改进了最终集群分配的质量。6

使用 K 均值方法进行初始化的第一步是从数据集中选择一个质心。对于每个后续质心,计算每个数据点与其最近的集群中心的距离。根据数据点距离先前选定的最近质心的比例,选择下一个质心。该过程将以迭代方式执行,直到初始化所需数量的集群中心。

这是一篇来自 IBM Developer 的教程,介绍了使用 K 均值++ 方法进行初始化。

选择最佳集群数量

理想情况下,K 均值算法会以迭代方式执行,直到达到最佳集群数量。一旦质心达到收敛点,迭代次数就达到上限。

肘部法

实现最佳集群数量的方法之一是肘部法。肘部法是一种通过图形方法来确定 K 均值聚类算法中最优集群数据的技术。它通过测量每个数据点与其集群中心之间的欧几里得距离,并根据“集群内平方和”(WCSS) 的变化趋于平稳的集群的数量。该值表示每个集群内的总方差,并与集群的数量一起绘制在图表中。7

肘部法的第一步是计算每个集群 (K) 的 WCSS 值。然后,沿 y 轴绘制 WCSS 值,并在 x 轴上绘制集群的数量。随着集群数量的增加,绘图中的点应形成一致的模式。从该模式中,可以生成最佳集群数量的范围。8 在决定集群数量时,还需考虑计算成本。集群数量越多,所需的处理能力越高,尤其是对于大型数据集。

这种方法并不一定是最优的,尤其是在处理高维或形状不规则的数据集时。另一种选择最佳集群数的方法是轮廓分析。9

在机器学习中的应用

K 均值聚类算法几乎应用于所有领域和行业。它通常适用于维度较少、数据为数值型且易于分割的机器学习数据。

研究人员已将 K 均值聚类与 CNNRNN 等深度学习方法相结合,以提升计算机视觉、NLP 以及其他领域中各种机器学习任务的性能。下面列出了常见的 K 均值聚类应用:

客户细分: 根据反映相似性的共同特征将公司的客户划分为多个群组。这种策略使公司能够针对特定的集群或客户群开展特定的广告活动。

文档分类:为文档分配到不同的类或类别的过程。许多组织使用此方法来审核内容。查看此 Watson Discover 文档,以构建文档分类器。

图像分割:一种计算机视觉技术,可将数字图像划分为不同的像素集。本研究深入探讨了如何使用 K 均值模型来帮助识别医学图像中的边界。10

推荐引擎:网络上的各种应用程序都使用推荐引擎。主成分分析和 K 均值聚类技术常用于为电子商务企业的产品推荐系统。11

使用 python 训练 K 均值模型

要进行实践学习,请查看此教程,它介绍了在 Python 中使用 IBM® Watson Studiowatsonx.ai 上执行 K 均值聚类的基础知识。

本教程使用 scikit-learn (sklearn) 库中的模块来执行 K 均值聚类。该模块包含内置优化技术,可通过其类参数进行操作。模块的类是这样的:

class sklearn.cluster.KMeans(n_clusters=8*init='k-means++'n_init='auto'max_iter=300tol=0.0001verbose=0random_state=Nonecopy_x=Truealgorithm='lloyd')12

这些参数包括要形成的集群数量和要生成的质心数量 (n_clusters)。有两种初始化方法可用:K 均值++ 和 random。它还包括用于设置最大迭代次数的属性。每次迭代首先将数据集分区为  n_clustersparameter 的值。

这些库用于生成测试数据集并执行聚类分析:

import pandas as pd 
import sklearn
import matplotlib.pyplot as plt
import seaborn as sns
import numpy

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

优缺点

优势

K 均值聚类在机器学习应用中常见优点包括:

简单:K 均值聚类法易于理解和实践。它是最受欢迎的无监督机器学习技术。

快速:K 均值聚类采用计算简单的迭代方法设计。与层次聚类相比,K 均值聚类算法更快,前者需要构建树状集群结构,并且计算所有数据点之间的成对距离。

可扩展:K 均值还易于扩展到大规模数据集,并且可以适用于不同形状和大小的聚类,是聚类分析的理想选择。与其他方法相比,由于其算法计算效率极高,它具有更强的可扩展性,更适合大型数据集。

缺点

与 K 均值聚类相关的一些常见挑战包括:

依赖输入参数:K 均值聚类依赖于正确设置的输入参数。初始化适当的中心点和聚类数量对于获得有意义的聚类结果至关重要。不当的中心点初始化可能会导致运行时间增加且集群分配质量低下。为了获得更好的聚类结果和更快的收敛时间,已经进行了大量的相关研究。

在某些数据集上可能表现欠佳:当数据集包含大小相似的聚类,且没有明显的异常值或密度变化时,K 均值的表现出色。当数据集包含许多变化或维度很高时,K 均值的表现不是很差。与某些数据集假设不一致的数据可能会导致 K 均值生成低质量的聚类。13 例如,大小不均匀的聚类可能会使中心点偏向较大的聚类,从而导致较小聚类的偏差和错误分类。为了解决这个问题,可以使用诸如高斯混合节点等概率模型来泛化 K 均值。

显著的异常值影响:异常值对 K 均值聚类的结果有显著影响。不同的聚类应该相距很远,但不要过于分散,以免使数据点出现偏差。在应用 K 均值之前考虑数据假设非常重要。K 均值对异常值特别敏感,因为它通过对聚类的值取平均值来确定中心点。这种敏感性使其很容易出现过度拟合的情况,从而将异常值纳入计算。

相关解决方案

相关解决方案

IBM watsonx.ai

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。

深入了解人工智能解决方案
AI 咨询与服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取后续步骤

一站式访问跨越 AI 开发生命周期的功能。利用用户友好型界面、工作流并访问行业标准 API 和 SDK,生成功能强大的 AI 解决方案。

深入了解 watsonx.ai 预约实时演示
脚注

1 Todd K. Moon,“期望最大化算法”,《IEEE 信号处理杂志》,https://ieeexplore.ieee.org/document/543975(ibm.com 外部链接)

2 Kevin Arvai,《Python 中的 K 均值聚类:实用指南》,https://realpython.com/k-means-clustering-python/#:~:text=Understanding%20the%20K%2DMeans%20Algorithm,-Conventional%20k%2Dmeans&text=The%20quality%20of%20the%20cluster,point%20to%20its%20closest%20centroid(ibm.com 外部链接)

3 “聚类:K 均值”,  https://www.codecademy.com/learn/dspath-unsystemed/modules/dspath-clustering/cheatsheet (ibm.com 外部链接)

4“Dunn 指数”,https://ruivieira.dev/dunn-index.html(ibm.com 外部链接)

5 Xiangyuan、Siyuan、Hao,“一项关于 K 均值初始化方法的调查”,https://www.comp.nus.edu.sg/~arnab/randalg20/HLW.pdf(ibm.com 外部链接)

6 Arthur、Vassilvitskii,“K 均值++:谨慎播种的优势”,Standford,https://theory.stanford.edu/~sergei/papers/kMeansPP-soda.pdf(ibm.com 外部链接)

7 Gutierrez,“无监督学习:评估聚类”,https://opendatascience.com/unsupervised-learning-evaluating-clusters/(ibm.com 外部链接)

8“在 IBM watsonx.ai 上使用 Python 进行 K 均值聚类”,https://developer.ibm.com/tutorials/awb-k-means-clustering-in-python/,第 4 步(ibm.com 外部链接)

9 Shutaywi、Kachouie,“轮廓分析在机器学习中的性能评估及其在聚类中的应用”,2021 年 6 月,https://www.mdpi.com/1099-4300/23/6/759(ibm.com 外部链接)

10 Dhanachandra、Manglem、Chanu,“使用 K 均值聚类算法和减法聚类算法的图像分割”,ScienceDirect 第 54 卷,第 764-771 页,https://www.sciencedirect.com/science/article/pii/S1877050915014143(ibm.com 外部链接)

11 Bagus Mulyawan 等人,“使用 K 均值聚类方法基于客户分类进行产品推荐”,《2019 年 IOP 会议系列:材料科学和工程》508 012123,https://iopscience.iop.org/article/10.1088/1757-899X/508/1/012123/pdf#:~:text=The%20K%2DMeans%20algorithm%20is,group%20customer%20based%20on%20attributes(ibm.com 外部链接)

12 scikit-learn,https://github.com/scikit-learn/scikit-learn/blob/5491dc695/sklearn/cluster/_kmeans.py#L1193 (ibm.com 外部链接)

13“K 均值假设的演示”,https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_assumptions.html(ibm.com 外部链接)