# 聚类(Clustering)

# 一、聚类的概念

  • 聚类是一种 无监督学习方法
  • 目标是:将相似的数据点分在同一个 “簇”(cluster)中
  • 没有预先的标签,完全基于数据之间的 “相似性” 划分

# 二、聚类的用途

  • 文档分组、客户画像、基因数据分析、股票走势分群等
  • 聚类可以帮助我们发现数据中的 “自然结构”

# 三、相似性度量方法

用于计算两个数据点之间的 “相似程度”(或 “距离”):

距离类型定义说明
曼哈顿距离(L1)( d(i,j) = \sumx_i - x_j)抗异常值
欧几里得距离(L2)( d(i,j) =(xixj)2\sqrt{\sum (x_i - x_j)^2} )几何直观
闵可夫斯基距离(Lq)广义形式,q 可调节L1 和 L2 的推广

# 四、聚类的主要类型

# 1️⃣ 划分式聚类(Partitional Clustering)

直接将数据一次性划分为 k 个簇,每个点只能属于一个簇。

# 🔑 核心逻辑:

假设我们知道有 k 个簇,目标是让簇内相似度最大,簇间相似度最小。

# 🛠 关键点:

  1. 从整体出发:不看谁和谁特别像,而是一次性给所有点 “分组”

  2. 设定目标函数(如 K-Means 中最小化 SSE)

  3. 迭代优化:不断调整划分,使目标函数越来越好

# 🌀 类比理解:

把一堆人平均分成 k 个房间,通过不断调换位置来让 “同一房间的人兴趣最相似”

  • 每个点只属于一个簇
  • 代表方法:K-Means

# 2️⃣ 层次聚类(Hierarchical Clustering)

构建一个嵌套的簇结构,形成 “树状图(dendrogram)”,你可以在任何层级切断这棵树来得到你想要的簇数。

# 🔑 核心逻辑:

从最小单位(每个点)出发,优先合并 / 分裂最近的样本,逐步构造出整棵 “聚类树”。

# 🛠 关键点:

  1. 从局部关系开始:谁最像就先合并谁

  2. 不设定簇数,而是构建一棵层次结构(树)

  3. 可以从任意层切断来选择你要的簇数(后验决定)

# 🌀 类比理解:

把每个人看作一个独立社交圈,然后让 “最熟的人” 先组合,逐步扩展到大家都成一个大圈

  • 生成树状结构(dendrogram)
  • 方法:
    • 凝聚式(Agglomerative,自底向上)
    • 分裂式(Divisive,自顶向下)

# 五、K-Means 聚类算法详解

# 基本流程:

  1. 设定簇数 (k),随机初始化中心点
  2. 将每个点分配给最近的中心(按距离)
  3. 重新计算每个簇的中心(所有点均值)
  4. 重复步骤 2-3,直到收敛

# 算法特点:

  • 简单、易于实现
  • 对初始中心敏感
  • 时间复杂度:O(n × k × i × d)

# 六、层次聚类详解(Agglomerative)

# 步骤:

  1. 每个点单独作为一簇
  2. 计算所有簇之间的距离
  3. 合并距离最近的两个簇
  4. 重新计算新簇与其他簇之间的距离
  5. 重复,直到只剩一个簇或达到期望数量

# 距离更新策略:

  • Single Linkage:最短点对距离
  • Complete Linkage:最长点对距离
  • Average Linkage:平均点对距离

# 七、聚类结果评估(预告)

聚类没有标签,但仍可评估效果:

  • 外部指标:Homogeneity、Completeness、V-measure(需要真实标签)
  • 内部指标:SSE、Silhouette Coefficient(不依赖标签)
  • 相对指标:比较多个聚类结果

# ✅ 总结

聚类就是通过 “距离函数” 判断数据点间的相似性,再将相似的点归为一组。常用算法包括 K-Means 和层次聚类,评估方法依赖具体任务与数据特性。

# 📌 二、聚类评估与簇数选择


# ✅ 1. 评估指标(如何判断聚类效果好不好)

# 🔹 外部指标(需要真实标签):

用于比较聚类结果与真实分类标签的一致性:

  • Homogeneity(同质性):每个簇是否只包含一个真实类
  • Completeness(完整性):每个类是否被完整地分在一个簇中
  • V-measure:Homogeneity 与 Completeness 的调和平均(类似 F1 分数)

# 🔹 内部指标(无需标签):

用于衡量聚类结构本身的紧凑性与分离性:

  • SSE(Sum of Squared Errors)平方误差和
    • 衡量簇内点到簇中心的距离平方之和
    • 越小表示簇越紧凑
  • Silhouette 系数(轮廓系数)
    • 衡量点在 “本簇中的紧密程度” 和 “与最近其他簇的区分度”

# 🔹 相对指标:

  • 用于比较两个聚类结构哪一个更优(可以带标签,也可以不带)

# ✅ 2. Silhouette 系数(轮廓系数)

# 📖 定义:

  • 衡量每个点在本簇内的 “紧密度” 和与其他簇的 “分离度”
  • Silhouette 值 (s) 计算方式如下:

s = \frac{b - a}

其中:

  • (a):该点与同簇中其他点的平均距离
  • (b):该点与最近邻簇中所有点的平均距离

# ✅ 取值范围与解释:

  • ( s \in [-1, 1] )
  • ( s \to 1 ):聚类良好(点靠近本簇中心,远离其他簇)
  • ( s \approx 0 ):点位于边界
  • (s < 0):聚类可能错误(点离本簇更远)

# 🛠 作用:

  • 用于评估聚类质量
  • 可帮助选择合适的簇数 (k):平均 Silhouette 值最大的 ( k ) 更合适

# 📉 降维部分总结:主成分分析(PCA)


# ✅ 一、为什么要降维?

  • 高维数据存在冗余、噪声、计算量大等问题
  • 降维目标:
    • 降低维度,提高效率
    • 便于数据可视化
    • 保留尽可能多的 “有用信息”
    • 消除变量间的冗余(相关性)

# ✅ 二、主成分分析(PCA)的核心思想

  • 将原始高维数据转换为一组 新的正交主成分
  • 每个主成分都是原始特征的 线性组合
  • 主成分按解释的 “数据方差” 大小排序
  • 只保留前几个主成分就能近似还原原数据

# ✅ 三、PCA 步骤流程

  1. 数据标准化(中心化)
  2. 构建协方差矩阵
  3. 计算特征值和特征向量
    • 特征向量:主成分方向
    • 特征值:对应方向上解释的方差
  4. 选择前 (k) 个主成分
  5. 将原始数据投影到主成分空间中

# ✅ 四、协方差矩阵 Cov (X)

  • 协方差衡量两个变量是否具有线性相关性
  • 矩阵结构如下(以 x, y, z 为例):

1
2
3
       | Var(x)   Cov(x,y)  Cov(x,z) |
Cov(X) =| Cov(y,x) Var(y) Cov(y,z) |
| Cov(z,x) Cov(z,y) Var(z) |

  • 协方差大表示变量冗余;PCA 就是找出能解释最多变异性的新轴

# ✅ 五、PCA 应用:Iris 数据集示例

  • 原始数据:4 个变量(萼片长宽、花瓣长宽)
  • 经过 PCA 后:
    • 前两个主成分可解释 95.8% 的数据方差
    • 可将 4 维数据映射到 2 维空间,方便可视化和聚类

# ✅ 六、PCA 的优势与局限

# ✅ 优势:

  • 不依赖标签,适用于无监督任务
  • 提升算法效率
  • 有效缓解 “维度灾难”
  • 可用于可视化与预处理

# ❌ 局限:

  • 只能捕捉线性关系
  • 不适用于类别型变量
  • 主成分不具备原始特征的语义解释性

# 📌 总结一句话:

PCA 是将高维空间的相关变量转换为低维空间中无关主成分,最大限度保留数据信息的降维技术。