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