聚类

什么是聚类?

聚类及其应用讲解

聚类或聚类分析是一种在机器学习和数据分析中使用的无监督学习方法,它对您的数据进行组织,以使同一组(或聚类)中的数据点彼此之间比在其他组中的数据点更相似。聚类通过揭示未标注数据的模式和趋势或对其进行预测来帮助理解大型复杂数据集。

聚类的工作原理

聚类涉及几个关键步骤,包括数据准备、定义相似性度量、选择正确的聚类算法以及评估和细化聚类。

显示聚类步骤的工作流图:数据准备、相似性度量定义、聚类算法选择和聚类评估。

聚类的关键步骤。

聚类的工作原理是度量数据点之间的相似性并进行分组,使一个聚类中的数据点比在任何其他聚类中的数据具有更高的相似性度量。“相似性”的概念根据情形和数据而变化,这是无监督学习的基本原理。在聚类中可以使用各种相似性度量,包括欧几里德、概率、余弦距离和相关性。

聚类结果以二维形式显示,其中各个簇用不同颜色表示。

使用 spectralcluster 函数创建的分为三个簇的数据散点图。(请参阅 MATLAB 代码。)

聚类算法的类型

聚类算法大致分为两种:

  • 硬聚类:每个数据点仅属于一个簇,例如常见的 k 均值方法
  • 软聚类:每个数据点可以属于多个簇,例如在高斯混合模型中
<i>k</i> 均值聚类分析方法显示数据点的离散簇,并添加星型来表示质心。

k 均值聚类,它以质心(每个成员的平均值,用星型描述)来表示组。

高斯混合模型显示数据点的两个簇,其中等压线状的线描述数据隶属于各簇的概率。

高斯混合模型,它分配数据隶属于各簇的概率,表示与不同簇的关联强度。

现有几种聚类算法,每种聚类算法都有一种独特的数据分组方法。这些方法在机制和理想用例上有很大不同。机器学习中最常用的聚类算法类型有:

  • 层次聚类通过创建聚类树来构建一个多级聚类层次结构。
  • k 均值聚类根据到簇质心的距离将数据划分为 k 个不同簇。
  • 高斯混合模型将簇形成为多元正态密度分量的混合。
  • 基于密度的空间聚类 (DBSCAN) 将高密度区中临近的点进行组合,跟踪低密度区中的离群值。它可以处理任意非凸形状。
  • 自组织映射使用学习数据的拓扑和分布的神经网络。
  • 谱聚类将输入数据变换为基于图的表示形式,其中的簇比原始特征空间中的簇分离效果更好。簇的数量可以通过研究图的特征值来估计。
  • 隐马尔可夫模型可用于发现序列中的模式,如生物信息学中的基因和蛋白质。
  • 模糊 c 均值 (FCM) 将数据分成 N 个簇,数据集中的每个数据点在一定程度上都属于每个簇。

无监督学习的聚类

无监督学习是一种机器学习算法,可在没有人工干预的情况下从未标注数据进行推断。聚类是最常见的无监督学习方法。它应用聚类算法来探索数据并发现数据中隐藏的模式或分组,而无需事先获得任何组标签信息。使用这些组和模式,聚类帮助从未标注数据中提取有用的深入信息,并揭示其中的内在结构。

原始照片显示一只浅棕色的狗躺在黑白图块地板上;使用聚类处理后的图像将狗与地板分离。

使用聚类进行图像分割,分离出地板上具有某个模式的背景。

为什么聚类如此重要

聚类是人工智能的一个重要领域。它通过从数据中挖掘有价值的深入信息和揭示不太明显的模式和关系,在各个领域发挥着重要作用。对于未标注数据,数据点之间的内在关系是隐藏的,但却是揭示有用的深入信息所必需的。聚类有助于发现这些关系并将未标注数据组织成有意义的各组。

通过对相似的项进行分组,聚类可降低数据的复杂性,让您可以专注于组的行为,而不是被众多的单个数据点淹没。因此,聚类可用于探索性数据分析和半监督学习。在半监督学习中,聚类用作有监督学习之前的预处理步骤,以减少机器学习模型要处理的数据量,并提高预测建模的准确度。

聚类也经常用于异常检测、图像分割和模式识别等应用。具体而言,聚类可应用于以下领域以识别模式和序列:

  • 在数据压缩方法中,簇可以表示数据而不是原始信号。
  • 在分割算法中,簇表示图像区域和激光雷达点云。
  • 聚类有助于识别数据集中的离群值或异常值情况。
  • 在医学成像中,聚类算法可将图像分成若干感兴趣区域,例如用于区分健康组织和肿瘤,或将大脑图像分割成白质、灰质和脑脊液区域。
  • 聚类在地理信息系统 (GIS) 中用于分析卫星图像或航空照片,以识别城市蔓延或土地使用模式,或监控城市区域随时间的变化。
  • 遗传聚类和序列分析在生物信息学领域也有应用。
用苏木精-伊红染成紫色的组织的原始图像,以及分割为三类的组织处理图像。

左图:用苏木精-伊红染色的组织的原始图像。右图:MATLAB 将图像分成三个簇,从而将组织分割为三个类。

使用 MATLAB 进行聚类

使用 MATLAB® 和 Statistics and Machine Learning Toolbox™,您可以通过应用所选的聚类方法并将数据分成若干组或簇来识别模式和特征。使用 Image Processing Toolbox™,您可以对图像数据执行聚类。

数据准备

为了获得准确高效的聚类结果,对数据进行预处理并处理缺失值和离群值至关重要。您可以使用内置函数以编程方式或使用数据清洗器以交互方式来清洗和预处理您的数据。

聚类算法

MATLAB 支持所有常见的聚类算法,您可以使用内置函数(例如 kmeans 函数)来应用这些算法。您可以使用数据聚类实时编辑器任务以交互方式执行 k 均值聚类和层次聚类。使用该任务,您可以为实时脚本自动生成 MATLAB 代码。

您也可以使用 KNN Search 模块在 Simulink 中执行最近邻聚类。该模块接受一个查询点,并使用最近邻搜索器对象返回观测数据中的 k 个最近邻点。

显示三个鸢尾花物种的花瓣宽度和长度测量值的二维绘图,以及显示使用 GMM 聚类得到的三个簇的图。

左图:三种鸢尾花物种的几个标本的花瓣测量值的 MATLAB 散点图。右图:使用高斯混合模型 (GMM) 聚类方法将花瓣测量值分割成三个簇。(请参阅统计和机器学习示例。)

可视化和评估聚类结果

当数据不包含指示适当簇数的自然划分时,您可以使用不同评估标准(如间距或轮廓)来确定数据与特定簇数的拟合程度。您还可以可视化簇以检查聚类结果。例如,您可以使用树状图进行聚类可视化。

两个簇中的所有点都具有大轮廓值(0.8 或更大),表明簇分离良好。

使用 silhouette 函数创建的 MATLAB 图,显示数据分成大小相等的两个簇。(请参阅 MATLAB 代码。)

图像的聚类

通过根据颜色或形状的相似性对像素区域进行聚类,您可以对图像执行图像分割(使用 imsekmeans 函数)和三维体分割(使用 imsekmeans3 函数)。您可以使用特定聚类算法创建分割的标注图像。例如,在医学成像中,您可以检测并标注图像中的像素或三维体的体素,它们表示患者大脑或其他器官中的肿瘤。通过利用 MATLAB 工具,您可以为从疾病诊断到土地利用分类的广泛应用处理和分析图像。

四个黑白图像:测试图像、分割图像、肿瘤检测和标注图像。

在 MATLAB 中使用模糊 c 均值聚类从 MR 图像中检测脑肿瘤。(请参阅 Fuzzy Logic Toolbox 示例。)

聚类常见问题

聚类是一种无监督学习方法,它将数据组织为若干组,使同一组内的数据点彼此更相似,而与其他组的数据点差异更大,从而帮助在无标签数据中发现模式和趋势。

聚类是一种基于相似性对无标签数据进行分组的无监督技术,而分类是使用有标签数据来分配类别的监督学习方法。

常见的聚类算法包括层次聚类、k均值、高斯混合模型、DBSCAN、自组织映射、谱聚类、隐马尔可夫模型和模糊C均值。

硬聚类将每个数据点仅分配到一个簇(例如 k均值),而软聚类允许每个数据点以不同程度的隶属度属于多个簇(例如高斯混合模型)。

聚类常用于数据压缩、图像分割和激光雷达概述分割、异常检测、医学影像(肿瘤检测和组织分割)、地理信息系统以及生物信息学中的基因序列分析。

MATLAB 提供了所有主流聚类算法的内置函数、交互式工具(如 Cluster Data Live Editor task 和 Data Cleaner app)、可视化功能,以及用于确定最佳簇数的评估方法,例如轮廓分析。

可以使用 gap 分析或轮廓分析等评估指标来判断数据与簇的契合程度,并使用树状图等工具可视化结果以检查聚类质量。

可以,聚类可以通过基于颜色或形状的相似性将像素区域分组来对图像进行分割,在医学影像中用于肿瘤检测,在地理系统中用于土地利用分类。