logo

学习向量量化聚类

wangzf / 2022-11-22


目录

算法介绍

LVQ(Learning vector Quantization) 假设数据样本带有类别标记, 学习过程利用样本的这些监督信息来辅助聚类.

给定样本集 $D=\{(x_{1}, y_{1}), (x_{2}, y_{2}), \ldots, (x_{n}, y_{n})\}$, $x_{i} \in R^{p}$, $y_{i} \in \mathcal{Y}$ 是样本的类别标记. LVQ的目标是学得一组 $n$ 维原型向量 $\{p_{1}, p_{2}, \ldots, p_{q}\}$, 每个原型向量代表一个聚类簇, 簇标记为 $t_{i}\in \mathcal{Y}$.

算法

输入:

样本集: $D=\{(x_{1}, y_{1}), (x_{2}, y_{2}), \ldots, (x_{n}, y_{n})\}$;

原型向量个数 $q$, 各原型向量预设的类标记 $\{t_{1}, t_{2}, \ldots, t_{q}\}$;

学习率 $\eta \in (0,1)$.

过程:

  1. 初始化一组原型向量: $\{p_{1}, p_{2},\ldots,p_{q}\}$
  2. repeat
  3. 从样本集中随机选取样本 $(x_{j}, y_{j})$;
  4. 计算样本 $x_{j}$$p_{i} (1 \leqslant i \leqslant q)$ 的距离: $d_{ji}=\|x_{j}-p_{i}\|_{2}$;
  5. 找出与 $x_{j}$ 距离最近的原型向量 $p_{i^{*}}$, $i^{*}=arg min_{i \in \{1, 2, \ldots, q\}}d_{ji}$;
  6. if $y_{j}=t_{i^{*}}$
  7. $p' = p_{i^{*}} + \eta \cdot (x_{j}-p_{i^{*}})$
  8. else
  9. $p' = p_{i^{*}} - \eta \cdot (x_{j}-p_{i^{*}})$
  10. end if
  11. 将原型向量 $p_{i^{*}}$ 更新为 $p'$
  12. until 满足停止条件

输出:

原型向量 $\{p_{1}, p_{2}, \ldots, p_{q}\}$,

算法解释

算法实现