学习向量量化

「学习向量量化」(Learning Vector Quantization,LVQ)是一种原型聚类算法。学习向量量化试图找到一组原型向量来刻画聚类结构。但是 LVQ 假设训练样本带有类别标签,学习过程利用样本的这些监督信息来辅助聚类。

给定样本集 ,每个样本 是由 个属性描述的特征向量 是样本 的类别标记

LVQ 的目标是学得一组 维原型向量 ,每个原型向量代表一个聚类簇,簇标记

算法

首先初始化原型向量,例如对第 个簇可从类别标记为 的样本中随机选取一个作为原型向量

然后对原型向量迭代优化。在每一轮的迭代中,随机选取一个有标记的训练样本,找出与其距离最近的原型向量,根据两者的类别标记是否一致来对原型向量进行相应的更新,直至满足停止条件。

例如迭代达到最大迭代轮数,或者原型向量更新很小甚至不再更新。

输入:样本集 ,原型向量个数 ,各原型向量预设的类别标记 ,学习率

输出:原型向量

过程:

  • 初始化一组原型向量
  • 循环
    • 从样本集 随机选取样本
    • 计算样本 的距离:
    • 找出与 距离最近的原型向量
    • if then
    • else
    • end if
    • 将原型向量 更新为
  • until 满足停止条件

直观上看,对样本 ,若最近的原型向量 的类别标记相同,则令 的方向靠拢。如算法中更新原型向量

之间的距离

令学习率 ,则原型向量 在更新为 之后更接近 。类似的,若 的类别标记不同,则更新后的原型向量与 之间的距离将增大为 从而更远离

学得一组原型向量 后,即可实现对样本空间 的簇划分。对任意样本 ,它将被划入与其距离最近的原型向量所代表的簇中。

换言之,每个原型向量 定义了与之相关的一个区域 ,该区域中每个样本与 的距离不大于它与其他原型向量 的距离,即

由此形成了样本空间 的簇划分 ,该划分通常称为 Voronoi 剖分

例子

仍然以西瓜数据集来掩饰 LVQ 得学习过程。

编号 密度 含糖率
1 0.697 0.460
2 0.774 0.376
3 0.634 0.264
4 0.608 0.318
5 0.556 0.215
6 0.403 0.237
7 0.481 0.149
8 0.437 0.211
9 0.666 0.091
10 0.243 0.267
11 0.245 0.057
12 0.343 0.099
13 0.639 0.161
14 0.657 0.198
15 0.360 0.370
16 0.593 0.042
17 0.719 0.103
18 0.359 0.188
19 0.339 0.241
20 0.282 0.257
21 0.748 0.232
22 0.714 0.346
23 0.483 0.312
24 0.478 0.437
25 0.525 0.369
26 0.751 0.489
27 0.532 0.472
28 0.473 0.376
29 0.725 0.445
30 0.446 0.459

K-均值算法中,西瓜数据集是没有标签的,在这个问题中,我们令 9~21 号的样本标记为 ,其他样本的类别标记为 。假定 ,即学习目标是找到 5 个原型向量 ,并假定对应的类别标记为

解:

初始化:根据样本的类别标记和簇的预设类别标记对原型向量进行随机初始化,假设初始化样本为

迭代:在第一轮迭代中,假定随机选择的样本为 该样本与初始化的 5 个原型向量的距离分别为 0.283, 0.506, 0.434, 0.260, 0.032

看出 距离最近且两者具有相同的类别标定 。假定 ,则 LVQ 更新 的到新的原型向量

更新为 后,不断重复上述过程得到聚类结果。