# 聚类(Clustering)
# 一、聚类的概念
- 聚类是一种 无监督学习方法
- 目标是:将相似的数据点分在同一个 “簇”(cluster)中
- 没有预先的标签,完全基于数据之间的 “相似性” 划分
# 二、聚类的用途
- 文档分组、客户画像、基因数据分析、股票走势分群等
- 聚类可以帮助我们发现数据中的 “自然结构”
# 三、相似性度量方法
用于计算两个数据点之间的 “相似程度”(或 “距离”):
距离类型 | 定义 | 说明 | ||
---|---|---|---|---|
曼哈顿距离(L1) | ( d(i,j) = | x_i - x_j | ) | 抗异常值 |
欧几里得距离(L2) | ( d(i,j) = ) | 几何直观 | ||
闵可夫斯基距离(Lq) | 广义形式,q 可调节 | L1 和 L2 的推广 |
# 四、聚类的主要类型
# 1️⃣ 划分式聚类(Partitional Clustering)
直接将数据一次性划分为 k 个簇,每个点只能属于一个簇。
# 🔑 核心逻辑:
假设我们知道有 k 个簇,目标是让簇内相似度最大,簇间相似度最小。
# 🛠 关键点:
从整体出发:不看谁和谁特别像,而是一次性给所有点 “分组”
设定目标函数(如 K-Means 中最小化 SSE)
迭代优化:不断调整划分,使目标函数越来越好
# 🌀 类比理解:
把一堆人平均分成 k 个房间,通过不断调换位置来让 “同一房间的人兴趣最相似”
- 每个点只属于一个簇
- 代表方法:K-Means
# 2️⃣ 层次聚类(Hierarchical Clustering)
构建一个嵌套的簇结构,形成 “树状图(dendrogram)”,你可以在任何层级切断这棵树来得到你想要的簇数。
# 🔑 核心逻辑:
从最小单位(每个点)出发,优先合并 / 分裂最近的样本,逐步构造出整棵 “聚类树”。
# 🛠 关键点:
从局部关系开始:谁最像就先合并谁
不设定簇数,而是构建一棵层次结构(树)
可以从任意层切断来选择你要的簇数(后验决定)
# 🌀 类比理解:
把每个人看作一个独立社交圈,然后让 “最熟的人” 先组合,逐步扩展到大家都成一个大圈
- 生成树状结构(dendrogram)
- 方法:
- 凝聚式(Agglomerative,自底向上)
- 分裂式(Divisive,自顶向下)
# 五、K-Means 聚类算法详解
# 基本流程:
- 设定簇数 (k),随机初始化中心点
- 将每个点分配给最近的中心(按距离)
- 重新计算每个簇的中心(所有点均值)
- 重复步骤 2-3,直到收敛
# 算法特点:
- 简单、易于实现
- 对初始中心敏感
- 时间复杂度:O(n × k × i × d)
# 六、层次聚类详解(Agglomerative)
# 步骤:
- 每个点单独作为一簇
- 计算所有簇之间的距离
- 合并距离最近的两个簇
- 重新计算新簇与其他簇之间的距离
- 重复,直到只剩一个簇或达到期望数量
# 距离更新策略:
- 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 [-1, 1] )
- ( s 1 ):聚类良好(点靠近本簇中心,远离其他簇)
- ( s 0 ):点位于边界
- (s < 0):聚类可能错误(点离本簇更远)
# 🛠 作用:
- 用于评估聚类质量
- 可帮助选择合适的簇数 (k):平均 Silhouette 值最大的 ( k ) 更合适
# 📉 降维部分总结:主成分分析(PCA)
# ✅ 一、为什么要降维?
- 高维数据存在冗余、噪声、计算量大等问题
- 降维目标:
- 降低维度,提高效率
- 便于数据可视化
- 保留尽可能多的 “有用信息”
- 消除变量间的冗余(相关性)
# ✅ 二、主成分分析(PCA)的核心思想
- 将原始高维数据转换为一组 新的正交主成分
- 每个主成分都是原始特征的 线性组合
- 主成分按解释的 “数据方差” 大小排序
- 只保留前几个主成分就能近似还原原数据
# ✅ 三、PCA 步骤流程
- 数据标准化(中心化)
- 构建协方差矩阵
- 计算特征值和特征向量
- 特征向量:主成分方向
- 特征值:对应方向上解释的方差
- 选择前 (k) 个主成分
- 将原始数据投影到主成分空间中
# ✅ 四、协方差矩阵 Cov (X)
- 协方差衡量两个变量是否具有线性相关性
- 矩阵结构如下(以 x, y, z 为例):
1 | | Var(x) Cov(x,y) Cov(x,z) | |
- 协方差大表示变量冗余;PCA 就是找出能解释最多变异性的新轴
# ✅ 五、PCA 应用:Iris 数据集示例
- 原始数据:4 个变量(萼片长宽、花瓣长宽)
- 经过 PCA 后:
- 前两个主成分可解释 95.8% 的数据方差
- 可将 4 维数据映射到 2 维空间,方便可视化和聚类
# ✅ 六、PCA 的优势与局限
# ✅ 优势:
- 不依赖标签,适用于无监督任务
- 提升算法效率
- 有效缓解 “维度灾难”
- 可用于可视化与预处理
# ❌ 局限:
- 只能捕捉线性关系
- 不适用于类别型变量
- 主成分不具备原始特征的语义解释性
# 📌 总结一句话:
PCA 是将高维空间的相关变量转换为低维空间中无关主成分,最大限度保留数据信息的降维技术。