LVQ,Learning Vector Quantization,学习向量量化
LVQ需要数据样本带有类别标记,学习过程中需要利用这些监督信息来辅助聚类。
接受代标记的数据集
D
和原型向量个数
k
,以及初始化的原型向量标记
ti,ti∈Y,i=1,2,…,k
,学习率参数
η∈(0,1)
。输出为原型向量
q1,q2,…,qk
。
为更清晰的描述LVQ,我们假设样本集为
D={(x1,y1),(x2,y2),…,(xm,ym)}
每个样本均由
n
个属性描述,即
xj=(xj1,xj2,…,xjn),yj∈Y,j=1,2,…,m
LVQ的学习目标是得到
k
个
n
维原型向量
q1,q2,…,qk
算法主要步骤包括:初始化原型向量;迭代优化,更新原型向量。
具体来说,主要是:
1、对原型向量初始化,可以选择满足 yj=tj,j∈{1,2,…,m} 条件的某个样本 xj=(xj1,xj2,…,xjn) 作为 qj 的初始值;
2、从数据集 D 中任意选择一个样本 xj ,找到与此样本距离最近的原型向量,假设为 qi ;
3、如果 xj 的标记 yj 与 qi 的标记 ti 相等,即 yj=ti ,则令
q′=qi+η⋅(xj−qi)
否则,
q′=qi−η⋅(xj−qi)
4、更新原型向量:
qi=q′
5、判断是否达到最大迭代次数或者原型向量更新幅度小于某个阈值。如果是,则停止迭代,输出原型向量;否则,转至步骤2。
其中步骤3和4的物理意义是:如果 xj 和最近的原型向量 qi 具有同样的类别标记,则令 qi 向 xj 的方向靠拢,且
dist(p′,xj)=(1−η)⋅dist(pi,xj)
否则,
qi
远离
xj
,且
dist(p′,xj)=(1+η)⋅dist(pi,xj)
得到原型向量后,即可实现对数据集 D 的Voronoi Diagram划分,每个原型向量对应着一片区域,此区域内的样本点就隶属于此原型向量所代表的聚类簇,也即每个样本被划入与之最近的原型向量所代表的聚类簇中。