一、k-means 00:03
k-means算法是常见的聚类算法,其核心步骤包括:
-
人工指定聚类数量k,算法无法自动推断类别数
-
初始化阶段:随机选择k个中心点作为各类别的初始代表
-
迭代过程包含两个交替步骤:
- 数据点分配:计算每个点到k个中心的最近邻,确定类别归属
- 中心点更新:将每个类别的中心点重置为该类数据点的均值
1.k-means的定义 01:25
数学定义为:给定n个d维数据点和k个类别,用μk表示第k类的d维中心点,rnk为二元指示变量(当第n个点属于第k类时rnk=1,否则为0)。优化目标函数J为所有数据点到所属类别中心的距离平方和,该函数在部分文献中称为distortion measure。
2.k-means的损失函数优化 02:33
优化过程采用EM算法框架:
- 固定μk,优化rnk(E步)
- 固定rnk,优化μk(M步)
1) E step 02:54
E步执行最近邻分配:当中心点μk固定时,每个数据点独立选择距离最近的中心点对应类别,即令该类别rnk=1,其余为0,此时目标函数J达到局部最小。
2) M step 03:22
M步通过求导更新中心点:固定rnk后,对目标函数J求关于μk的一阶导数并令其为零,可得中心点更新公式μk=∑rnkxn/∑rnk,即该类数据点的算术平均值。
3.k-means的示意图 04:22
算法流程示意图说明:
- 图a初始化:随机选择红蓝两中心点
- 图b E步:按最近邻原则分配数据点类别
- 图c M步:重新计算两类中心点为所属点均值
- 收敛条件包括:
- 中心点移动量小于阈值
- 类别分配不再变化
- 特殊情况下可能出现中心点震荡,需设置最大迭代次数终止
4.k-means的实践技巧 06:33
应用技巧包括:
-
初始化优化:从数据点中选取初始中心而非完全随机
-
多轮运行:选择目标函数最小的结果作为最终输出
-
加速方法 :
- 使用kd-tree/octree加速最近邻搜索
- mini-batch变体:每次迭代使用数据子集降低计算量
5.k-means的顺序更新 08:06
sequential k-means特点:
- 每次迭代仅处理单个数据点xn
- 中心点更新公式为μk←μk+η(xn-μk),η为学习率
- 批量处理时即演变为mini-batch k-means
6.k-medoids 09:22
k-medoids改进动机:
| 对比维度 | k-means | k-medoids |
|---|---|---|
| 中心点性质 | 可不在数据集中 | 必须为实际数据点 |
| 抗噪能力 | 易受离群点影响 | 通过最小化距离和抵抗噪声 |
| 数据类型 | 需可计算均值 | 支持任意可定义距离的数据 |
1) k-medoids的estep 13:05
E步与k-means一致:通过预定义的距离函数v计算数据点到各中心点的距离,按最近邻原则分配类别。
2) k-medoids的mstep 13:44
M步采用枚举法:
- 对每个类别遍历其所有数据点
- 计算各点作为中心点时与类内其他点的距离和
- 选择使距离和最小的点作为新中心点
- 时间复杂度为O(nk²),其中nk为类内点数。
7.k-means的应用 15:50
1) 例题:图像压缩示例 15:55
- 图像压缩原理:将h×w×3的三通道图像(红、蓝、绿)转换为n×3的点云数据,通过k-means聚类将n×3数据压缩为k×3中心点(k远小于n)。
- 压缩实现:原始图像的每个像素点被归类到k个中心点之一,存储时仅需记录n个标签(对应k个类别)而非原始RGB值。
- 压缩效果对比:示例中原始图像包含1600万种颜色(RGB各8位),通过k=2或k=10的聚类即可显著减少颜色数量,肉眼难以区分压缩前后差异。
- 颜色数量计算:RGB三通道各8位可组合出2^24(1600万)种颜色,此为数字图像基础标准。
2) k-means压缩原理 19:58
| 参数 | 原始存储空间 | 压缩后存储空间 | 说明 |
|---|---|---|---|
| 原始RGB数据 | 24n bit | - | 每个像素占用24位(3通道×8位) |
| 压缩标签数据 | - | n⌈log₂k⌉ bit | 每个像素用⌈log₂k⌉位表示所属类别 |
| 中心点数据 | - | 24k bit | k个中心点各占24位 |
| 总压缩率 | 24n | n⌈log₂k⌉ + 24k | 当k远小于n时(如k=20),压缩率显著提升 |
| 应用限制 | - | 仅适用于颜色压缩 | 点云压缩中仅能压缩颜色属性,无法压缩空间坐标(xyz) |
8.k-means的局限性 22:31
- 预设k值问题:聚类数量k需预先设定,实际应用中常依赖实验猜测,缺乏自动确定机制。
- 噪声敏感性:对异常点敏感,需通过k-medoids等改进算法缓解噪声影响。
- 硬分类缺陷:仅支持非概率性分类,边界点无法输出隶属概率(如50%属A类,50%属B类),此缺陷由高斯混合模型(GMM)弥补。