学习矢量量化-LVQ
来源:互联网 发布:淘宝宝贝名称规则 编辑:程序博客网 时间:2024/05/23 00:05
学习矢量量化(Learning Vector Quantization,简称LVQ),与1988年提出的一种用于模式分类的有监督学习算法,是一种结构简单、功能强大的有监督式神经网络分类算法。典型的学习矢量量化算法有:LVQ1、LVQ2、LVQ3,其中,前两种算法应用较为广泛,尤其以LVQ2应用最为广泛和有效。
学习矢量量化是一种结构简单、功能强大的有监督式神经网络分类方法。作为一种最近邻原型分类器,LVQ在训练过程中通过对神经元权向量(原型向量)的不断更新,对其学习率的不断调整,能够使不同类别权向量之间的边界逐步收敛至贝叶斯分类边界。算法中,对获胜神经元(最近邻权向量)的选取是通过计算输入样本和权向量之间的距离的大小来判断的。与矢量量化(VQ)相比,LVQ最突出的特点就是其具有自适应性。
与K均值算法类似,学习向量量化(Learning Vector Quantization,简称LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记吗,学习过程中利用这些监督信息来辅助聚类。
- 有监督学习矢量量化,如LVQ1、LVQ2、LVQ3,它是对有类别属性的样本进行聚类;
- 无监督学习矢量量化,如硬聚类K-Means,它是对无类别属性的样本进行聚类;
给定样本集
LVQ算法描述如下所示。
算法第2~12行对原型向量进行迭代优化。在每一轮迭代中,算法随机选取一个有标记的训练样本,找出与其距离最近的原型向量,并根据两者的类别标记是否一致来对原型向量进行相应的更新。在第12行中,若算法的停止条件已满足(例如已经达到最大迭代次数,或者原型向量更新很小甚至不再更新),则将当前原型向量作为最终结果返回。
显然,LVQ的关键是滴6-10行,即如何更新原型向量。直观上看,对样本
令学习率
类似的,若
在学得一组原型向量
由此形成了对样本空间
每一次迭代过程只能对一个权向量进行更新,这是LVQ1算法的一个局限。因此,在改进的LVQ2中,提出同时更新两个权向量的方法。寻找输入样本最近邻的两个权向量,若这两个权向量一个与输入样本同类(
尽管LVQ2算法可以同时更新两个权向量,较LVQ1性能优越,但是仍存在着不足之处:
- 在训练过程中与输入样本异类的权向量可能不收敛。虽然同时调整输入样本最近邻的两个权向量(一个与输入样本同类,一个与输入样本异类),使他们之间的边界向最优贝叶斯边界靠拢,但是算法又对异类权向量一直进行远离输入样本的调整,却没有考虑其最终的位置,这样会导致该权向量的不收敛;
- LVQ算法为体现出数据各维属性在分类过程中重要程度的不同,这一问题的原因归咎于欧氏距离的计算。欧氏距离计算公式是基于数据各维属性重要程度相同的假设,然而,这种假设忽略了这样一个事实:即数据各维属性对分类所做的贡献程度可能会不同。换句话说,对某一输入样本而言,它的全部属性中的一备份可能对分类是非常重要的,是重要的属性;相反,其他的属性对分类的作用可能是次要的,甚至会干扰正确的分类,是次要属性。对这种情况而言,用欧氏距离进行分类显然不够准确,而且实际数据大多是这种情况。因此,如何发现并强调这些重要属性同时忽略那些次要属性称为能否准确对数据分类的关键。
虽然传统LVQ算法性能优越且应用广泛,但是仍有一定不足:
1. 训练过程可能不收敛。原因是由于在寻找最优贝叶斯边界时,对权向量更新的趋势没有给予充分的考虑;
2. 对输入样本各维属性的信息利用不充分,没有体现出各维属性在分类过程中的重要程度的不同。原因是由于在寻找获胜神经元过程中采用的欧氏距离方法,没有考虑到输入样各维属性重要度差异,即假定各维属性对分类的贡献是相同的。
下面以上述数据集进行演示LVQ的学习过程。
令9-21号样本的类别标记为
算法开始时,根据样本的类别标记和簇的预设类别标记对原型向量进行随机初始化,假设初始化为样本
将
- LVQ学习矢量量化
- 学习矢量量化-LVQ
- 学习矢量量化(LVQ)
- LVQ学习向量量化神经网络
- LVQ学习向量量化网络
- 机器学习之学习向量量化(LVQ)
- LVQ,Learning Vector Quantization,学习向量量化
- [ML]聚类之学习向量量化LVQ
- 聚类算法——python实现学习向量量化(LVQ)算法
- 标量量化和矢量量化
- 【机器学习】【数字信号处理】矢量量化(Vector Quantization)
- 矢量量化基本原理
- java 矢量量化
- 矢量量化调试
- 矢量量化算法
- LBG 矢量量化算法
- LBG矢量量化算法
- LBG矢量量化算法
- Rhyme/Hibernate getCurrentSession()与openSession()的区别
- 《PCL点云库学习&VS2010(X64)》Part 48 基于霍夫变换的点云平面检测法
- spring boot guava cache 缓存学习
- 微信小程序商品筛选,侧方弹出动画选择页面
- js实现星星评分功能的实现,并获取评分多少的功能(附源码)
- 学习矢量量化-LVQ
- Scala中for循环逆序遍历数组
- Hcdp认证培训是什么?
- 生成对抗网络(GAN)的理论与应用完整入门介绍
- 考研,加油,祝福你们
- phantomjs爬虫在docker下不能正常运行的问题
- utils/yum_onlydownload.sh
- 反汇编【for循环】
- LeakCanary测试app内存泄露+registerActivityLifecycleCallbacks管理Activity的生命周期