---------------------------------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均值算法相关推荐

  1. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  2. K-means算法和K临近算法

    1.K-means算法 设定k个质心 repeat 遍历所有元素,选择最近的质心为一个簇 重新计算每个簇的质心 until 簇稳定不再变化或者到达最大迭代次数 实践复杂度为O(tkn),t为迭代次数, ...

  3. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  4. k均值聚类算法考试例题_KMeans (K均值)算法讲解及实现

    算法原理 KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标 ...

  5. 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。

    1.运行结果:(注:图中方块标注的点为随机选取的初始样本点) k=2时: 本次选取的2个初始向量为[[0.243, 0.267], [0.719, 0.103]] 共进行61轮 共耗时0.10s k= ...

  6. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...

  7. 基于K均值算法的鸢尾花聚类实验(Sklearn实现)

    实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...

  8. 基于SPSS的K均值算法

    文章目录 前言 一.K均值算法是什么? 二.动画演示 1.网站 2.示例 三.缺点解决(K-means++算法) 四.SPSS实现 总结 前言 菜鸡学习数学建模 一.K均值算法是什么? K-means ...

  9. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结

    文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...

最新文章

  1. 徐匡迪、潘云鹤等纷纷撰文,关于人工智能的最新判断都在这里了
  2. 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  3. 新人工智能算法速度无极限
  4. 结对编程——四则运算
  5. JavaScript实现knight Tour骑士之旅算法(附完整源码)
  6. Docker持续交付部署类型
  7. python tab补全
  8. Lubuntu16.4.3定制教程
  9. 不要再问类似如C++和C#谁好谁坏,谁更有前景的问题
  10. DataSet本地化数据的二表链接操作
  11. mt管理器主题修改教程_华为格式状态栏使用教程
  12. HTML颜色名称和颜色代码表
  13. openjdk windows版本下载地址
  14. Oracle数据库中神奇的dual表
  15. 数学-排列组合的理解
  16. 在数据库应用系统中数据库的开发
  17. 安格最近推出的AG6202来设计一款HDMI 1.4转VGA的产品|AG6202设计应用
  18. Mac 高效程序猿开发必备软件
  19. matlab运算结果中怎么用pretty,Pretty MuPad:将分配,表达和结果输出到一行 - 如何创建该功能?...
  20. springboot基于微信小程序的在线考试系统-计算机毕业设计

热门文章

  1. Elasticsearch 未授权访问漏洞验证及修复
  2. Android系统(168)---Android 开源项目分类汇总
  3. 单应性矩阵H和相机姿态参数R和T关系
  4. vue项目 - Mockjs 模拟后台接口数据
  5. 阿里腾讯都到百度去挖AI大牛,百度对此却不care,为何?
  6. 电子烟中测电阻注意事项
  7. 免费css代码下载-Free Css Templates
  8. greenplum数据导入到mysql,greenplum数据库常用操作
  9. C语言程序设计-商品销售管理系统
  10. 竖直的ViewPager,上下滑动的ViewPager,VerticalViewPager ;