LBG算法、Lloyd算法和K均值算法
---------------------------------LBG算法、Lloyd算法和K-Means算法---------------------------------
LBG算法是一种矢量量化算法,由Lloyd算法推广而来。在编码过程中,我们可以先对信源输出进行分组,再将每个组看做一个整体块进行编码,这样可以得到高效的有损或无损压缩算法。其实量化过程同样可以这么做,我们将数据块视为矢量,所以这类量化称为矢量量化。较之通常的标量量化,使用矢量量化所得失真度将更低,其原因是:
1.由于信源输出之间的相关性结构,研究整个信源输出序列要比分别研究每个样本更为高效。
2.即使信源输出不相关,矢量量化也比标量量化更高效,因为随着研究的信源序列的长度增加,设计算法就会更加灵活,可以与信源的统计特性更匹配。
LBG算法由Lloyd算法推广而来,而Lloyd算法由源于K均值算法聚类方法。所以我们从K均值算法开始一步步来介绍。
1.K-Means算法
K-means算法主要用于对数据聚类。
如上左图所示,我们很容易看出图中的点分成上右图中的了4个点群,而K-Means算法能让计算机也可以知道这件事。
K-Means算法原理如下(避免截图,没有使用公式- -!):
1. 随机在图中任取K个点为种子点;
2. 计算图中所有点到这K个种子点的距离,设图中原有点位q1-qn,这K个种子点为n1-nK,如果qi离ni点最近,那么令qi属于ni点群;
3. 通过第二步,我们得到了K个点群,每个点群包含一定数量的原有点和本身的一个种子点(这些点离该点群的种子点的距离比离其他种子点都近);
4. 逐个计算上述K个点群的质心,并将属于自己点群的那个种子点移动到该位置;
5. 重复2-4步,直到所有种子点不再移动。
K-means算法原理很简单,仅仅用到了一个求距离的公式和一个求中心点的公式(比如计算所有点的x和y坐标的均值)。
然后是Lloyd算法。
2.Lloyd算法
Lloyd算法工作方式:
然后转到第2步。
Linde、Buzo和Gray将该算法推广到输入为矢量的情形,这就是LBG算法,亦称为广义Lloyd算法。
3. LBG算法
LBG算法的大致步骤为:
可以看到LBG算法与K-Means算法非常类似,同样是一步步迭代,失真度定义为了一个与距离相关的量,然后当失真度相对变化程度小于一个阈值时停止。它将K-Means算法推广到了矢量领域。
同时可以看出LBG算法也存在一定的问题,比如:
1.其计算复杂度相比于K均值算法大大增加。虽然LBG算法可以保证某次迭代的失真不会大于上一次的失真,但并不能保证收敛到确定的最优点。
2.LBG算法非常依赖于训练集的真实程度,而非常具有代表性的训练集并不容易找到,所以当没有训练集时并不是很实用。而且算法是当新的码矢量与原码矢量变化不大时,就停止码书的训练,但这并不能保证这时就是最优的情况。
LBG算法、Lloyd算法和K均值算法相关推荐
- k均值算法 二分k均值算法_如何获得K均值算法面试问题
k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...
- K-means算法和K临近算法
1.K-means算法 设定k个质心 repeat 遍历所有元素,选择最近的质心为一个簇 重新计算每个簇的质心 until 簇稳定不再变化或者到达最大迭代次数 实践复杂度为O(tkn),t为迭代次数, ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- k均值聚类算法考试例题_KMeans (K均值)算法讲解及实现
算法原理 KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标 ...
- 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。
1.运行结果:(注:图中方块标注的点为随机选取的初始样本点) k=2时: 本次选取的2个初始向量为[[0.243, 0.267], [0.719, 0.103]] 共进行61轮 共耗时0.10s k= ...
- K 均值算法-如何让数据自动分组
公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...
- 基于K均值算法的鸢尾花聚类实验(Sklearn实现)
实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...
- 基于SPSS的K均值算法
文章目录 前言 一.K均值算法是什么? 二.动画演示 1.网站 2.示例 三.缺点解决(K-means++算法) 四.SPSS实现 总结 前言 菜鸡学习数学建模 一.K均值算法是什么? K-means ...
- 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...
最新文章
- 徐匡迪、潘云鹤等纷纷撰文,关于人工智能的最新判断都在这里了
- 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
- 新人工智能算法速度无极限
- 结对编程——四则运算
- JavaScript实现knight Tour骑士之旅算法(附完整源码)
- Docker持续交付部署类型
- python tab补全
- Lubuntu16.4.3定制教程
- 不要再问类似如C++和C#谁好谁坏,谁更有前景的问题
- DataSet本地化数据的二表链接操作
- mt管理器主题修改教程_华为格式状态栏使用教程
- HTML颜色名称和颜色代码表
- openjdk windows版本下载地址
- Oracle数据库中神奇的dual表
- 数学-排列组合的理解
- 在数据库应用系统中数据库的开发
- 安格最近推出的AG6202来设计一款HDMI 1.4转VGA的产品|AG6202设计应用
- Mac 高效程序猿开发必备软件
- matlab运算结果中怎么用pretty,Pretty MuPad:将分配,表达和结果输出到一行 - 如何创建该功能?...
- springboot基于微信小程序的在线考试系统-计算机毕业设计