菜单

聚类

相关源文件

聚类是一种基本且无监督的机器学习技术,它可以在没有事先标签的情况下将相似的数据点分组。本 Wiki 页面提供了聚类概念、算法以及在 ML-For-Beginners 课程中实现的技能概述,特别关注 K-均值聚类。有关将聚类应用于音乐数据的专门应用,请参阅课程第 5 部分的详细实现。

什么是聚类?

聚类是一种无监督学习,它通过将相似的项目分组来识别无标签数据中的模式。与使用标签数据进行预测的有监督学习不同,聚类算法根据数据本身的属性来发现固有的分组。

从技术角度讲,聚类算法识别的组具有

  • 类内相似性最大化(一个簇内的点相似)
  • 类间相似性最小化(簇彼此之间是分开的)

来源:5-Clustering/1-Visualize/README.md1-95

聚类算法概述

该课程涵盖了几种重要的聚类算法,每种算法都有独特的特性,适用于不同类型的数据和问题。

算法类型特性最佳用途示例算法
层级基于点之间距离的簇具有层级关系的数据凝聚聚类
基于质心围绕中心点进行聚类分离良好、球状的簇K-均值
基于分布簇成员的概率模型重叠的簇高斯混合模型
基于密度将密集区域与稀疏区域分隔开不规则或嵌套的簇DBSCAN, OPTICS
基于网格将空间划分为网格单元非常大的多维数据集STING

算法的选择取决于数据特征,例如

  • 几何形状(平面 vs. 非平面)
  • 推断方法(转导 vs. 归纳)
  • 密度变化
  • 要求的约束

来源:5-Clustering/1-Visualize/README.md30-97

几何和距离的关键概念

在选择聚类算法时,理解其底层的数学概念至关重要。

  • 平面 vs. 非平面几何:指数据存在于欧几里得空间(平面)还是需要非欧几里得测量(非平面)。

  • 欧几里得 vs. 非欧几里得距离:确定如何测量点之间的相似性。

    • 欧几里得:平面空间中的直线距离
    • 非欧几里得:沿着曲线测量的距离
  • 质心 vs. 聚类中心:表示簇“中心”的不同方式。

    • 质心:所有点的平均位置(用于 K-均值)
    • 聚类中心:簇中最具代表性的点

来源:5-Clustering/1-Visualize/README.md45-70

K-Means 聚类

K-均值是最广泛使用的聚类算法,也是课程的重点。它将数据划分为 'k' 个簇,其中每个数据点都属于离其均值最近的簇。

K-均值的工作原理

K-均值算法遵循一个简单的三步迭代过程:

从技术上讲,该过程是:

  1. 通过从数据集中采样来初始化 k 个中心点。
  2. 将每个样本分配给最近的质心。
  3. 通过取分配给前一个质心的所有样本的平均值来创建新质心。
  4. 计算新质心与旧质心之间的差异。
  5. 重复步骤 2-4,直到质心稳定。

K-均值导致数据空间被划分成类似 Voronoi 图的区域,其中每个区域代表一个簇。

来源:5-Clustering/2-K-Means/README.md14-31

选择最优的 k 值

K-均值的一个挑战是确定最优簇数(k)。课程教授了两种主要方法:

  1. 肘部法则:计算不同 k 值下,数据点到其分配的质心的平方距离之和(WCSS)。绘制 WCSS 与 k 的关系图,并寻找“肘部点”,即增加更多簇产生的收益递减的点。

  2. 轮廓系数:衡量一个对象与其自身簇的相似度以及与其它簇的相似度。得分范围为 -1 到 1,其中:

    • 得分接近 1 表示簇分离良好。
    • 得分接近 0 表示簇重叠。
    • 得分接近 -1 表示点被错误分类。

来源:5-Clustering/2-K-Means/README.md131-182

关键指标和概念

在实现 K-均值时,有几个技术概念很重要:

  • WCSS(类内平方和):衡量一个簇内所有点到质心的平均平方距离。
  • 惯性:K-均值最小化的一个指标,衡量簇的内部一致性。
  • 方差:在聚类语境下,指数据点距离簇中心的离散程度。

来源:5-Clustering/2-K-Means/README.md152-222

实现考量

在实际应用聚类技术时,应解决几个问题:

数据准备

在应用聚类算法之前,

  1. 探索数据分布:使用箱线图、散点图和分布图等可视化工具。
  2. 处理异常值:极端值会显著影响聚类结果。
  3. 标准化特征:当特征具有不同的尺度时,对其进行标准化,以避免偏向于尺度较大的特征。
  4. 维度:如果数据集有很多特征,请考虑降低维度。

来源:5-Clustering/2-K-Means/README.md37-86

评估挑战

与有监督学习不同,聚类结果的评估具有挑战性,因为没有真实标签可供比较。课程推荐:

  1. 使用内部验证指标,如轮廓系数。
  2. 尽可能进行簇的可视化检查。
  3. 利用领域知识来解释簇的含义。
  4. 理解局限性(例如,K-均值假定簇是球形的)。

来源:5-Clustering/2-K-Means/README.md183-222

常见陷阱与解决方案

应用聚类技术时,可能会遇到一些问题:

  1. 方差问题:当特征具有不同的尺度或分布时,簇可能会被方差较大的特征所主导。

    • 解决方案:应用特征缩放(标准化或归一化)。
  2. 不合适的 k 值选择:选择了错误的簇数。

    • 解决方案:使用肘部法则和轮廓系数来指导选择。
  3. 算法限制:每种算法都有固有的偏见(例如,K-均值偏好球状簇)。

    • 解决方案:根据数据特征尝试不同的算法。
  4. 对异常值的敏感性:某些算法(如 K-均值)对异常值敏感。

    • 解决方案:预处理数据以移除异常值,或使用基于密度的算法。

来源:5-Clustering/2-K-Means/README.md216-235

仓库实现

在 ML-For-Beginners 仓库中,聚类是使用尼日利亚 Spotify 音乐数据集实现的。该实现遵循以下步骤:

  1. 数据探索:可视化音乐特征(舞蹈性、原声性、能量等)。
  2. 数据准备:过滤和特征选择。
  3. K-均值实现:应用 K-均值算法对相似歌曲进行分组。
  4. 评估:使用轮廓系数和肘部法则验证结果。

来源:5-Clustering/README.md1-29 5-Clustering/2-K-Means/README.md1-246

结论

聚类是一种强大的无监督学习技术,用于发现无标签数据中的模式。该课程侧重于 K-均值作为主要的聚类算法,同时介绍了适用于所有聚类方法的概念。在实现聚类解决方案时,仔细考虑数据特征、算法选择和评估指标对于获得有意义的结果至关重要。