聚类分析

官方医学老师·24 页·深入(追求细节与边界)·0 次浏览·2 天前
无监督学习算法边界图解教学

聚类分析

搞懂距离度量、聚类算法、效果评估,附算法边界与常见踩坑

按 空格/→ 演示下一步

1 / 24 页

全部页面点击任意一页,跳回舞台从这页播放

无监督学习算法边界图解教学

聚类分析

搞懂距离度量、聚类算法、效果评估,附算法边界与常见踩坑

1第 1 页 · 聚类分析

什么是聚类分析

前页已经提过聚类分析,但它具体做什么?想象整理衣柜:没人规定怎么分,你按颜色、季节或款式自己定标准,把相似的衣服归到一起——聚类分析就是让算法替你完成这件事。

无监督方法
没有标签,算法自行从数据中发现分组结构
相似度度量
用距离或相似度判断两个对象有多像
簇内紧凑簇间分离
好的聚类簇内相似度高,簇间差异明显
聚类≠分类
分类有已知类别,聚类类别数与含义事先未知
整理衣柜自己定分类标准对应 →聚类分析

你(算法)自己定义'相似',按颜色/季节把衣服(数据)归成几堆(簇),没人提前告诉你类别

2第 2 页 · 什么是聚类分析

聚类 vs 分类

两个常被混用的词,核心区别在于"有没有答案"——一个闭眼找结构,一个睁眼做预测。

聚类(Clustering)
  • 无监督学习,不给标准答案
  • 目的:探索数据中隐藏的分组
  • 输入:只有特征,没有标签
  • 输出:算法自动产生的"簇"
分类(Classification)
  • 有监督学习,提供带标签样本
  • 目的:预测新样本属于哪一类
  • 输入:特征 + 已知类别标签
  • 输出:预定义的类别标签
有标签样本要做预测→分类;无标签想发现隐藏结构→聚类。判据就一句:训练数据有没有 y。
3第 3 页 · 聚类 vs 分类

聚类分析的基本思想

上一页我们看到,聚类没有标签也能分组。那它凭什么判断哪些该归一堆、哪些该分开?答案藏在一个我们日常整理东西时就在用的直觉里。

类内相似
同一簇内样本彼此接近,像口味相近的人自然凑到一起
类间相异
不同簇的样本彼此远离,让组与组之间界限分明
度量先行
得先定义『怎么算接近』,相似和相异才有可操作的判据
整理衣柜对应 →聚类原则

T恤归一堆、外套归一堆——同类挨着摆、异类隔开放

s(i)=b(i)a(i)max{a(i),b(i)}s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}}
4第 4 页 · 聚类分析的基本思想

Q型聚类与R型聚类

样品聚类与指标聚类的应用场景

Q型聚类与R型聚类
样品聚类与指标聚类的应用场景
5第 5 页 · Q型聚类与R型聚类

距离的概念

上一页我们把聚类归结为'按远近分组'。那'远'和'近'用什么尺子量?最直观的是几何距离,但真实数据常让它失效——这一页看它从几何走向统计的扩展。

欧氏距离
最直觉的'直线距离',默认各维度独立、同方差、各方向同性
几何距离的边界
维度相关或方差悬殊时,'直线近'不等于'实际近',几何距离会骗人
马氏距离
用协方差矩阵的逆加权,等价于'白化'数据后再算欧氏距离
平原上两点的直线距离对应 →马氏距离

平原假设各向同性;马氏距离按协方差'重塑空间',把椭球拉成球后再量距离——这正是白化的几何含义

d(x,y)=i=1p(xiyi)2,DM=(xy)TΣ1(xy)d(x,y)=\sqrt{\sum_{i=1}^{p}(x_i-y_i)^2},\quad D_M=\sqrt{(\mathbf{x}-\mathbf{y})^T\boldsymbol{\Sigma}^{-1}(\mathbf{x}-\mathbf{y})}
6第 6 页 · 距离的概念

常用距离公式

欧氏距离、马氏距离、兰氏距离等

常用距离公式
欧氏距离、马氏距离、兰氏距离等
7第 7 页 · 常用距离公式

相似系数

上页的距离回答'差多远',但很多场景我们更想直接问'多像'——比如两篇文章是否谈同一话题,长度差异不重要,方向一致才关键。这就轮到相似系数登场。

夹角余弦
看两向量方向是否一致,与长度无关,文本聚类最常用
相关系数
先剥掉各自均值再算余弦,等价于去中心化后的夹角余弦
与距离互为镜像
相似越大距离越小,常用 1-d 或 1/(1+d) 互换
两个人追同一部剧对应 →夹角余弦

一人追100集一人追10集,都冲着同一剧情——方向一致即相似

$\cos\theta=\dfrac{\sum x_i y_i}{\sqrt{\sum x_i^2}\cdot\sqrt{\sum y_i^2}}$
8第 8 页 · 相似系数

系统聚类法原理

上一页搞定了距离怎么算——但算完距离只是工具。这一页要把距离用起来:面前摆着一堆散落的样品,究竟怎么一步步把它们组织成有结构的群体?

初始状态
n个样品就是n个类,每个样品独立成类
逐步合并
每一步找出距离最近的两类,合并成新的一类
重复迭代
每合并一次类的总数减1,反复执行
终止条件
所有样品归为一个大类时算法停止,共合n-1次
谱系图
用树状图记录每次合并的距离与层次
拼图游戏对应 →系统聚类过程

碎片散落=各自独立成类;最匹配两块先拼=合并最近两类;最终拼成完整图=归为一类

9第 9 页 · 系统聚类法原理

系统聚类法示意图

从左到右看:5个样本每次合并距离最近的一对,依次合并4次,最终归并成一个总类,形成一棵倒长的聚类树。

图解渲染中…
d=最小每一步都选当前距离最小的那对类合并{12345}根节点:所有样本最终归并为一个总类
10第 10 页 · 系统聚类法示意图

类间距离计算方法

上一节我们说系统聚类每一步都把'最近的两类'合并。可一旦每个类里装了好几个样本,两个类之间的'距离'该怎么定义?这一步选不同方法,聚出来的形状会差很多——有的拉成长链,有的挤成球。

最短距离法
取两类样本所有配对中最近的一对;倾向把散点串成长链(链状效应)
最长距离法
取所有配对中最远的一对;倾向形成直径较小、紧凑的球状簇
类平均法
两类所有样本对距离的平均值;折中两种极端,实践中使用最广
两个班级之间的"距离"对应 →两类样本的类间距离

最短=两班同学最近的一对;最长=最远的一对;类平均=所有同学两两配对的平均

Dmin=min{d(a,b)}, Dmax=max{d(a,b)}, Davg=1ABd(a,b)D_{\min}=\min\{d(a,b)\},\ D_{\max}=\max\{d(a,b)\},\ D_{\text{avg}}=\tfrac{1}{|A||B|}\sum\sum d(a,b)
11第 11 页 · 类间距离计算方法

八种合并策略对比

按「用什么定义合并」把8种方法分两支,逐支对比读

图解渲染中…
B用类与类之间的距离定义如何合并C用类自身的重心或方差定义合并B1单链接,取两类样本间最近一对B2全链接,取两类样本间最远一对
12第 12 页 · 八种合并策略对比

系统聚类法步骤

无论选用哪种合并策略,系统聚类都沿同一条循环主线推进:算距、合并、重算、迭代。

1
计算距离矩阵
对所有样本两两计算距离,生成初始距离矩阵 D(0),作为合并依据
2
合并最近类
在矩阵中找出距离最小的两个类,把它们合并为一个新类
3
重算距离
按选定的类间距离公式,重新计算新类与其余各类的距离,更新矩阵
4
重复迭代
回到第2步循环,直到所有样本归入一类,形成完整谱系图
13第 13 页 · 系统聚类法步骤

树状图的解读

如何从树状图确定最佳分类数

树状图的解读
如何从树状图确定最佳分类数
14第 14 页 · 树状图的解读

动态聚类法原理

系统聚类像「盖棺定论」——样本一旦归入某类就再不能翻身。动态聚类不一样:它允许样本在迭代中「跳槽」,不断调整直到稳定。

选初始中心
先选 k 个点作为各类起点,常见做法有随机选、按经验选或人为指定
就近归类
计算每个样本到各中心的距离,按最近原则分配到对应类
更新中心
用每类样本的均值(重心)替换原中心,代表该类新位置
迭代收敛
重复分配-更新两步,直到中心位置不再明显变化或达最大迭代次数
物业划片管理对应 →动态聚类迭代

指定几位楼长→业主归入最近楼长→楼长搬到所辖业主平均位置→稳定后定片

J=k=1KxiCkxiμk2,μk=1CkxiCkxiJ=\sum_{k=1}^{K}\sum_{x_i\in C_k}\|x_i-\mu_k\|^2,\quad\mu_k=\tfrac{1}{|C_k|}\sum_{x_i\in C_k}x_i
15第 15 页 · 动态聚类法原理

K-means算法步骤

K-means靠"分配-更新"循环把数据划成K簇,四步缺一不可。

1
初始化
随机选K个点作为初始聚类中心,k-means++可优化起点
2
分配
按距离最近原则,把每个样本划入某个簇
3
更新
用簇内样本的均值替换原中心位置
4
迭代
重复分配与更新,直到中心不再变化或达最大迭代次数
16第 16 页 · K-means算法步骤

K-means迭代过程

用流程图呈现K-means核心循环:分配→更新→判收敛,直到簇心不再移动。

图解渲染中…
s4菱形=决策点;中心位次未变即停止是/否分支变了就回头再跑一轮,没变就收敛
17第 17 页 · K-means迭代过程

初始中心的选择

K-means 迭代前必须先选 K 个起点。起点不同,最终分簇可能天差地别——这一步往往决定了结果的好坏。

随机选取
从样本中随机抽 K 个点作为初始中心,最朴素也最不稳定
局部最优陷阱
起点不好时迭代会收敛到次优解,不同随机种子结果差异显著
K-means++ 思想
让初始中心尽量分散:先随机选一个,后续按距离平方成比例抽取
距离平方概率
离现有中心越远的点,被选为新中心的概率越高,避免中心扎堆
其他策略
Forgy 随机选点、随机划分、层次预聚类等,各有适用场景
选代表下基层调研对应 →K-means++ 选初始中心

第一个代表随便派,之后每个代表都优先派到离现有代表最远的地方,保证覆盖不同区域

P(xi)=D(xi)2j=1nD(xj)2P(x_i) = \frac{D(x_i)^2}{\sum_{j=1}^{n} D(x_j)^2}
18第 18 页 · 初始中心的选择

K值的确定方法

选完初始中心,又来一个坎:K 本身怎么定?数据没有标签,分几类合理本就是个谜。三种方法从不同角度帮你「猜」K。

肘部法则
画 K 与 SSE 的关系曲线,找下降突然变缓的拐点;像手臂弯曲的肘关节,故名
轮廓系数
a 为同簇平均距离,b 为最近邻簇平均距离,综合分越接近 1 聚类越合理
Gap 统计量
对比真实聚类紧度与均匀参考分布的组内离散度,Gap 最大即最佳 K
租办公室选楼层对应 →肘部法则

低层挤,加层改善大;到某层后再加改善微弱,多花的钱就不值——那个拐点就是肘部

s(i) = \frac{b(i) - a(i)}{\max\{a(i),\, b(i)\}
19第 19 页 · K值的确定方法

系统聚类 vs K-means

都是聚类,却走向完全不同的路:一个自底向上垒塔,一个迭代画圈。选错方法,结果可能天差地别。

系统聚类
  • 层次方法,自底向上逐层合并
  • 无需指定K,画完树再决定
  • 输出一棵完整树状图
  • 适合小数据,结果确定可复现
K-means
  • 划分方法,迭代重画簇的边界
  • 必须先给定K才开跑
  • 直接给出K个簇的归属
  • 适合大数据,但受初始中心影响
不知分几类、想看层次结构 → 系统聚类;已知K、追求效率、面对大数据 → K-means。
20第 20 页 · 系统聚类 vs K-means

聚类质量评价

前面我们学会了怎么跑K-means、怎么画树状图,但跑完以后呢?分出来的结果到底靠不靠谱?不同K值选出来的方案到底谁更好?这就需要一套客观的评价标准。

类内离差
每个类内样本到中心点距离的平方和,越小说明类内越紧凑
轮廓系数
综合类内凝聚度与类间分离度,取值[-1,1],越大越好
调整兰德指数
对比聚类结果与真实标签的吻合度,已修正随机因素,越大越好
分小组做项目对应 →聚类质量评价

类内离差=组内分歧大小;轮廓系数=本组比邻组更合拍的程度;ARI=新分组与标准答案的吻合率

s(i)=b(i)a(i)max{a(i), b(i)}s(i) = \frac{b(i) - a(i)}{\max\{a(i),\ b(i)\}}
21第 21 页 · 聚类质量评价

知识点自测

3道选择题验证核心理解

知识点自测
3道选择题验证核心理解
22第 22 页 · 知识点自测

课程总结

  • 聚类是无监督分组,没有标准答案,合理性靠业务解读
  • 度量选择就是定义问题——距离公式决定了你看见什么形状
  • 系统聚类给层级全貌,K-means求快速收敛,各有所长
  • K-means 对初始中心与 K 值敏感,多次运行取最优是常规做法
  • 没有最优聚类,只有内紧外稳、指标与业务共同支撑的合理聚类
延伸主题:DBSCAN 密度聚类谱聚类原理与适用场景聚类结果的业务验证方法
23第 23 页 · 课程总结

课后思考

三道课后思考题,先自己琢磨再看参考答案,带着问题继续深入。

1为什么「类间距离最小、类内距离最大」可以作为聚类的目标?这背后隐含了对数据结构的什么假设?

参考答案它默认簇是「球状、紧凑、大小相近」的。若数据是环状、大小悬殊或条带状,这一准则会把同一类拆散,把不同类强行合并。

2若要按「消费习惯」把客户分成若干群,你会选系统聚类还是 K-means?为什么?

参考答案看数据量与 K 是否已知。样本少、不知道几类——系统聚类看树状图;样本大、领域经验能定 K——K-means 更快。可先用肘部法则估计 K。

3如果同份数据用不同距离公式得到完全不同的聚类结果,那么「真实的类」到底存不存在?

参考答案聚类无监督,没有「正确答案」。距离公式就是你对「相似」的定义——选哪个,取决于业务语义,而非数学对错。这也是评价指标的用武之地。

24第 24 页 · 课后思考