[模式识别-从入门到入土] 无监督学习

[模式识别-从入门到入土] 无监督学习

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

文章目录

  • 模式识别-从入门到入土\] 无监督学习

  • 动态聚类模型
  • k-means <- 动态聚类模型
  • 模拟C均值聚类FCM <- 动态聚类模型
  • 层次聚类算法

无监督学习的分类

建模方式分类:

  • 基于样本概率分布模型 的聚类方法
    e.g.高斯混合模型, 隐马尔科夫模型
  • 基于样本间相似性度量 的聚类方法
    e.g.动态聚类(k-means, FCM), 层次聚类

模型类型分类:

  • 概率模型:P(X∣Z)P(X|Z)P(X∣Z)(Z 为簇的隐变量)→ 软聚类
  • 非概率模型:Y=f(X)Y=f(X)Y=f(X)(Y 为簇的硬划分)→ 硬聚类

动态聚类模型

目标: 簇内样本相似性高,簇间样本相似性低

Fisher 动态聚类模型
核心关注 类内相似性 & 类间分离性 簇内相似性 & 簇间分离性
方法性质 监督学习(有类别标签) 无监督学习(无类别标签)

相似性度量 :

特征空间的距离度量(常用欧氏距离)
δ(xi,xj)=(xi−xj)T(xi−xj) \delta\left(x_{i},x_{j}\right)=\left(x_{i}-x_{j}\right)^T\left(x_{i}-x_{j}\right) δ(xi,xj)=(xi−xj)T(xi−xj)
准则函数 :

动态聚类的核心准则是簇内误差平方和最小化
J=∑i=1k∑x∈Ciδ(x,mi) J=\sum_{i=1}^{k}\sum_{x\in C_{i}}\delta\left(x, m_{i}\right) J=i=1∑kx∈Ci∑δ(x,mi)

准则函数只直接优化簇内紧凑性,但簇间分离性是被间接保证的

动态聚类-分类:

  • 硬聚类: k-means
    -> 簇内误差平方和最小化
  • 软聚类: 模糊C均值聚类(FCM)
    -> 簇内加权误差平方和最小化

k-means <- 动态聚类模型

第i个簇的中心/均值向量:mi=1Ni∑x∈Cix准则函数(簇内误差平方和):J=∑i=1kJi=∑i=1k∑x∈Ci∥x−mi∥2 \text{第i个簇的中心/均值向量:}\quad m_i=\frac{1}{N_i}\sum_{x \in C_i}x \\ \text{准则函数(簇内误差平方和):}\quad J=\sum_{i=1}^{k} J_{i}=\sum_{i=1}^{k} \sum_{x \in C_{i}}\left\|x-m_{i}\right\|^{2} 第i个簇的中心/均值向量:mi=Ni1x∈Ci∑x准则函数(簇内误差平方和):J=i=1∑kJi=i=1∑kx∈Ci∑∥x−mi∥2

算法流程:

  1. 随机选k个样本作为初始各簇的中心m1,...,mkm_1,...,m_km1,...,mk
  2. 最小距离法则->将各个样本划分到k个类C1,...,CkC_1,...,C_kC1,...,Ck中
  3. 计算准则函数JJJ, 重新计算k个簇的中心m1,...,mkm_1,...,m_km1,...,mk
  4. 重复2和3, 直到m1,...,mkm_1,...,m_km1,...,mk不变 or 准则函数JJJ不减小
符号 含义说明
kkk 簇的数量
mim_imi 第iii个簇的中心(均值向量),i∈{1,2,...,k}i \in \{1,2,...,k\}i∈{1,2,...,k}
CiC_iCi 第iii个簇的样本集合,i∈{1,2,...,k}i \in \{1,2,...,k\}i∈{1,2,...,k}
xxx 单个样本
JJJ 准则函数(簇内误差平方和)
JiJ_iJi 第iii个簇的簇内误差平方和
NiN_iNi 第iii个簇中包含的样本数量

模拟C均值聚类FCM <- 动态聚类模型

当特征与分类结果呈复杂非线性 关系时,可借助先验知识提取模糊特征

虽会增加特征数量,但能将特征与分类的关系转化为线性

根据气温这个特征,对 "是否适合户外跑步" 进行分类

气温和 "适合跑步" 的关系是非线性的:

  • 低于 5∘C5^\circ\text{C}5∘C → 不适合
  • 5∘C∼25∘C5^\circ\text{C} \sim 25^\circ\text{C}5∘C∼25∘C → 适合
  • 高于 25∘C25^\circ\text{C}25∘C → 不适合

结合先验知识,把 "气温" 这个原始特征拆分成 3 个模糊特征:

  • 模糊特征 1:气温属于 "低温" 的隶属度(如 5∘C5^\circ\text{C}5∘C 时隶属度为 1,15∘C15^\circ\text{C}15∘C 时隶属度为 0)
  • 模糊特征 2:气温属于 "适宜温度" 的隶属度(如 15∘C15^\circ\text{C}15∘C 时隶属度为 1,30∘C30^\circ\text{C}30∘C 时隶属度为 0)
  • 模糊特征 3:气温属于 "高温" 的隶属度(如 30∘C30^\circ\text{C}30∘C 时隶属度为 1,15∘C15^\circ\text{C}15∘C 时隶属度为 0)

线性化关系 此时可以构建一个线性分类模型
y=w1f1+w2f2+w3f3+by = w_1f_1 + w_2f_2 + w_3f_3 + by=w1f1+w2f2+w3f3+b

其中 f1,f2,f3f_1,f_2,f_3f1,f2,f3 是 3 个模糊特征的取值,w1,w2,w3w_1,w_2,w_3w1,w2,w3 是权重

-> 通过给 w2w_2w2 赋正值、w1,w3w_1,w_3w1,w3 赋负值,就能线性地判断:当 y>0y>0y>0 时适合跑步,否则不适合

准则函数:
Jf=∑j=1C∑i=1N[μj(xi)]b∥xi−mj∥2 J_f=\sum_{j=1}^{C} \sum_{i=1}^N [\mu_j(x_i)]^b\left\|x_i-m_{j}\right\|^{2} Jf=j=1∑Ci=1∑N[μj(xi)]b∥xi−mj∥2

算法流程:

  1. 参数初始化 :设定聚类数目 C、模糊系数 b、收敛阈值 ε\varepsilonε

  2. 聚类中心初始化 :随机生成 C 个聚类中心的初始值 mj(0)m_j^{(0)}mj(0)

  3. 更新隶属度 :根据当前聚类中心,用隶属度公式计算所有样本的隶属度 μij(s)\mu_{ij}^{(s)}μij(s)
    μij(s)=(1/∥xi−mj(s)∥2)1/(b−1)∑l=1C(1/∥xi−ml(s)∥2)1/(b−1) \mu_{ij}^{(s)} = \frac{\left(1 / \|\mathbf{x}_i - \mathbf{m}j^{(s)}\|^2\right)^{1/(b-1)}}{\sum{l=1}^{C} \left(1 / \|\mathbf{x}_i - \mathbf{m}_l^{(s)}\|^2\right)^{1/(b-1)}} μij(s)=∑l=1C(1/∥xi−ml(s)∥2)1/(b−1)(1/∥xi−mj(s)∥2)1/(b−1)

  4. 更新聚类中心 :根据当前隶属度,用聚类中心公式计算新的聚类中心 mj(s+1)m_j^{(s+1)}mj(s+1)
    mj(s+1)=∑i=1N[μij(s)]bxi∑i=1N[μij(s)]b \mathbf{m}j^{(s+1)} = \frac{\sum{i=1}^{N} [\mu_{ij}^{(s)}]^b \mathbf{x}i}{\sum{i=1}^{N} [\mu_{ij}^{(s)}]^b} mj(s+1)=∑i=1N[μij(s)]b∑i=1N[μij(s)]bxi

  5. 收敛判断 :若 ∥m(s+1)−m(s)∥<ε\left\|m^{(s+1)}-m^{(s)}\right\|<\varepsilon m(s+1)−m(s) <ε,则停止迭代;否则令 s=s+1s=s+1s=s+1,返回步骤 3

  6. 样本分类 :将每个样本划分到隶属度最大的类别中

算法输出:

  1. C 个聚类的中心矢量 {m1,m2,⋯ ,mC}\{m_1,m_2,\cdots,m_C\}{m1,m2,⋯,mC}
  2. 模糊隶属度矩阵 μN×C\mu_{N\times C}μN×C(每行对应一个样本,每列对应一个类别)

优点:对满足正态分布 的数据聚类效果良好

缺点:对孤立点 / 异常值敏感(异常值会显著影响聚类中心的位置)

最优解推导: 拉格朗日乘数法

构造拉格朗日函数:
L=∑j=1C∑i=1N[μj(xi)]b∥xi−mj∥2+∑i=1Nλi[∑j=1Cμj(xi)−1] L=\sum_{j=1}^{C} \sum_{i=1}^N [\mu_j(x_i)]^b\left\|x_i-m_{j}\right\|^{2}+\sum_{i=1}^N \lambda_i \left[ \sum_{j=1}^C \mu_j(x_i)-1 \right] L=j=1∑Ci=1∑N[μj(xi)]b∥xi−mj∥2+i=1∑Nλi[j=1∑Cμj(xi)−1]

对 mjm_jmj 和 μj(xi)\mu_j(x_i)μj(xi) 分别求偏导并令其为 0,得到最优解的必要条件:

  1. 聚类中心更新公式
    mj=∑i=1N[μj(xi)]bxi∑i=1N[μj(xi)]b(j=1,2,⋯ ,C) \mathbf{m}j = \frac{\sum{i=1}^{N} [\mu_j(\mathbf{x}_i)]^b \mathbf{x}i}{\sum{i=1}^{N} [\mu_j(\mathbf{x}_i)]^b} \quad (j = 1,2,\cdots,C) mj=∑i=1N[μj(xi)]b∑i=1N[μj(xi)]bxi(j=1,2,⋯,C)

    含义:聚类中心是样本的加权平均,权重为隶属度的 b 次方

  2. 隶属度更新公式
    μj(xi)=(1/∥xi−mj∥2)1/(b−1)∑l=1C(1/∥xi−ml∥2)1/(b−1)(i=1,2,⋯ ,N; j=1,2,⋯ ,C) \mu_j(\mathbf{x}_i) = \frac{\left(1 / \|\mathbf{x}_i - \mathbf{m}j\|^2\right)^{1/(b-1)}}{\sum{l=1}^{C} \left(1 / \|\mathbf{x}_i - \mathbf{m}_l\|^2\right)^{1/(b-1)}} \quad (i = 1,2,\cdots,N;\ j = 1,2,\cdots,C) μj(xi)=∑l=1C(1/∥xi−ml∥2)1/(b−1)(1/∥xi−mj∥2)1/(b−1)(i=1,2,⋯,N; j=1,2,⋯,C)

    含义:样本到聚类中心的距离越近,隶属度越大;距离越远,隶属度越小

符号 含义
JfJ_fJf FCM的准则函数
CCC 聚类数目
NNN 样本总数
μj(xi)\mu_j(x_i)μj(xi) 样本 xix_ixi 隶属于第 jjj 类的隶属度(0≤μj(xi)≤10 \leq \mu_j(x_i) \leq 10≤μj(xi)≤1)
bbb 模糊系数(b>1b>1b>1) -> 控制聚类模糊程度
mjm_jmj 第 jjj 类的聚类中心(矢量)
λi\lambda_iλi 拉格朗日乘数(第 iii 个样本的约束系数)
ε\varepsilonε 收敛阈值(预设参数,判断迭代是否停止)
μij(s)\mu_{ij}^{(s)}μij(s) 第 sss 次迭代中,样本 iii 隶属于第 jjj 类的隶属度
mj(s)m_j^{(s)}mj(s) 第 sss 次迭代的第 jjj 类聚类中心

层次聚类算法

动态聚类-分类:

  • 分裂的(自上而下) -> 层次k-均值算法
  • 凝聚的(自下而上) -> 凝聚聚类算法

层次k-均值算法:

一旦两个样本在开始时被分成不同的簇,即使两点间距非常接近,它们以后也不会聚在一起

  1. 把所有样本数据归到一个簇中
  2. 用k-means分成k个子簇
  3. 重复第2步, 直到满足终止条件

凝聚聚类算法:

确保距离的近的样本可以被分到相同的簇

  1. 把每个样本单独看成一个簇
  2. 找到两个距离最近的簇minD(ci,cj)minD(c_i,c_j)minD(ci,cj), 合并簇cic_ici和簇cjc_jcj
  3. 重复第2步, 直到满足终止条件

两个簇之间的距离/簇间的相似性/簇间连接:

  • 单连锁: 簇间距离为相距最近的两个点的距离
    D(c1,c2)=min⁡x1∈c1, x2∈c2D(x1,x2) D(c_1, c_2) = \min_{x_1 \in c_1, \, x_2 \in c_2} D(x_1, x_2) D(c1,c2)=x1∈c1,x2∈c2minD(x1,x2)

  • 全连锁: 簇间距离为相距最远的两个点的距离
    D(c1,c2)=max⁡x1∈c1, x2∈c2D(x1,x2) D(c_1, c_2) = \max_{x_1 \in c_1, \, x_2 \in c_2} D(x_1, x_2) D(c1,c2)=x1∈c1,x2∈c2maxD(x1,x2)

  • 平均连锁: 簇间距离为各点之间的距离的平均
    D(c1,c2)=1∣c1∣1∣c2∣∑x1∈c1∑x2∈c2D(x1,x2) D(c_1, c_2) = \frac{1}{|c_1|} \frac{1}{|c_2|} \sum_{x_1 \in c_1} \sum_{x_2 \in c_2} D(x_1, x_2) D(c1,c2)=∣c1∣1∣c2∣1x1∈c1∑x2∈c2∑D(x1,x2)

相关推荐
dulu~dulu6 小时前
机器学习题目总结(二)
人工智能·机器学习·支持向量机·聚类·集成学习·降维·贝叶斯分类器
思通数据6 小时前
AI智能预警系统:矿山、工厂与油气站安全管理架构浅析
人工智能·深度学习·安全·目标检测·机器学习·计算机视觉·架构
碎碎思6 小时前
FINN:FPGA AI 推理新范式 —— 定制化、高性能、量化神经网络编译器框架
人工智能·深度学习·神经网络·机器学习·fpga开发
派葛穆6 小时前
机器人-六轴机械臂的逆运动学
算法·机器学习·机器人
nnerddboy6 小时前
解决传统特征波段选择的局限性:1.对偶学习
学习·算法·机器学习
山土成旧客6 小时前
【Python学习打卡-Day28】类的蓝图:从模板到对象的构建艺术
linux·python·学习
三品吉他手会点灯6 小时前
STM32F103 学习笔记-20-通信的基本概念
笔记·stm32·单片机·嵌入式硬件·学习
悠哉悠哉愿意6 小时前
【嵌入式学习笔记】GPIO与LED
笔记·单片机·嵌入式硬件·学习
崇山峻岭之间7 小时前
Matlab学习记录11
开发语言·学习·matlab