读数据压缩入门笔记06_上下文转换

news2024/11/16 15:54:04

 

1. 压缩算法可归为两类

1.1. 统计压缩(即VLC)

1.2. 字典压缩(如LZ78)

1.3. 从不同的角度利用了给定数据流中存在的统计冗余信息

2. 上下文变换

2.1. contextual transform

2.2. 给定一组相邻的符号集,对它们进行某种方式的变换使其更容易压缩

3. 行程编码

3.1. run-length encoding,RLE

3.2. 过去40多年来看似很简单、实则很高效的编码技术

3.3. 单字符上下文模型

3.3.1. 对任何给定的符号,在编码时我们都只考虑它的前一个符号

3.3.1.1. 如果这两个符号是相同的,那么行程继续

3.3.1.2. 如果不相同,那么当前行程终止

3.4. 主要针对的是连续出现的相同符号聚类的现象,它会用包含符号值及其重复出现次数的元组,来替换某个符号一段连续的“行程”(run)

3.5. 将最短码字分配给最大的值(因为它表示的是最长的行程)

3.5.1. 如果我们从绝对值的角度理解每个行程的开始,那么长度值表示的是数据流中符号变化之间的距离

3.6. 最适用于大多数符号都连续重复出现的数据集

3.6.1. 如果要处理的数据集没有这样的性质,那么RLE算法并不适用

3.6.2. 会将最短的编码分配给那些连续重复出现的符号

3.7. 示例

3.7.1. AAAABBBBBBBBCCCCCCCC

3.7.2. [A,4][B,8][C,8]

3.8. 编码工作就是找到一个符号并向前扫描看看其行程有多长

3.9. 解码工作则相反,给定某个符号值及其长度值的二元组,只需要将正确个数的符号添加到输出流之后就行了

3.10. 短行程是RLE作为一种算法面临的大问题

3.10.1. 存储短行程的开销极大地影响了数据压缩后的大小

3.11. 数据流中交错出现字面值是会出问题的

3.11.1. 在数据集中增加一个二进制位流,来表示某个给定的符号流中各个符号是否连续重复出现

3.12. 对干扰符号十分敏感

4. 从压缩角度来说,数值型数据算是最令人讨厌的数据类型之一

4.1. GPS的坐标信息

4.2. 搜索引擎的倒排索引信息

4.3. 返回的用户ID

4.4. 因为大多数时候,我们找不到可以利用的统计信息

5. 增量编码

5.1. delta coding

5.2. 将一组数据转换为各个相邻数据之间的相对差值(即增量)的过程

5.3. 思想

5.3.1. 给定一组数据,相关的或相似的数据往往会集中在一起。如果这样,有了两个相邻值之间的差,就可以用其中一个值以及该差值来表示另外一个值

5.3.2. 它依靠的是相邻性

5.4. 在数值型数据这样普遍而其熵值又如此偏高的情况下,增量编码提供了一种不依靠统计的转换

5.5. 目的就是缩小数据集的变化范围

5.5.1. 为了减少表示数据集中的每个值所需要的二进制位数

5.5.2. 当相邻数值之间的差相对较小时,增量编码最有效

5.5.3. 如果差值变大,情况就会变糟

5.6. 最适用于处理时间序列数据以及音频和图像数据这类多媒体数据

5.6.1. 比如每10秒检测一次温度的传感器所产生的数据

5.6.2. 这类数据中邻近的数据之间存在着时间上的关联

5.7. 减法增量编码算法的问题是,结果中可能会出现负数,进而产生各种问题

5.7.1. 负数不仅在存储的时候需要额外的二进制位,此外还可能会增大数据的变化范围

5.8. 如果增量编码能做到以下两点,那么我们就可以认为它生成的数据更容易压缩

5.8.1. 将数据集中的最大值变小,因此缩小了数值的变化范围

5.8.2. 生成了许多重复值,可以让统计压缩的效率更高

6. XOR增量编码

6.1. 通过使用按位异或运算(bitwise exclusive OR,XOR)代替减法运算

6.2. 完全绕开了负数出现的问题,因为整数之间的XOR根本不可能产生负数

7. 参照系增量编码

7.1. 参照系方法通过让其他数减去最小的数

7.2. “参照系”(frame of reference,FOR)中那个“参照数”(frame)的选取,与将转换恰当地应用到数据集上有关

7.2.1. 因此需要将数据集细分为更小的数据组

7.3. FOR最初的设计目的是,尽可能地将更多数值匹配到单个整数的空间之内(通常是32位或者128位的整数

7.3.1. 使数值在运行时更容易处理(因为计算机处理经过字节对齐,是 2的幂的那些数值会更容易),同时还可以将它当作一种漂亮的内存压缩表示

7.3.2. 提供了一种非常简单的压缩方法。将 10个整数压缩到32个二进制位的空间内,这样的压缩效果可以说很好了,其结果是产生了一种性能很强的方法,可以在一秒内解码数十亿个整数值,代价则是那些没有充分利用空间的整数需要额外的开销

7.4. 修正的参照系增量编码

7.4.1. Patched Frame of Reference Delta Coding,PFOR

7.4.2. Zukowski等人提出

8. 前移编码

8.1. move-to-front coding,MTF

8.2. 最简单的动态统计转换形式之一

8.3. 数据的排列次序中包含着一些有助于编码未来符号的信息

8.4. MTF是局部自适应的

8.4.1. 会根据输入流中局部区域符号的出现频次进行调整

8.4.2. 符号在短时间内重复出现时,MTF会重新分配一个较小的值

8.5. 对干扰符号这类问题不敏感

8.6. 问题

8.6.1. 一些捣乱的符号会打乱前面存在的符号流

8.6.1.1. 真实数据中普遍存在

8.7. 解决方法

8.7.1. 不是一读到某个符号就将它移到最前面,而是采取一些探索式方法慢慢地将它移到最前面

9. 伯罗斯–惠勒变换

9.1. Burrows-Wheeler transform,BWT

9.1.1. 1994年

9.1.2. Burrows与Wheeler合作

9.2. 工作原理

9.2.1. 通过打乱数据流次序来让重复的子串聚集在一起

9.2.2. 这一操作本身不能压缩数据,却可以为后续的压缩系统提供转换好的数据流,方便压缩

9.3. 顺序很重要

9.3.1. 熵作为度量单位,它的一个问题是没有考虑符号之间的顺序

9.3.1.1. 事实上符号之间的顺序很重要

9.3.2. 通过转换数据流中符号之间的顺序,可以让数据流更容易压缩

9.3.3. 在对数据排序后,如果没有更多额外的信息指明它是如何变化的,我们无法让数据重新回到未排序的状态

9.3.4. 字典序排列

9.3.4.1. lexicographical permutation

9.3.4.2. BWT会打乱数据流中符号的顺序,并试图让相同的符号簇彼此靠近

9.3.4.3. 找出原始数据集的一种排列,根据其顺序,该排列可能更容易压缩

9.3.5. 通过BWT,在编码与解码时无须增加太多的额外信息

9.4. 示例

9.4.1. BANANA

9.4.2. 在接下来的每一行,我们都会对该字符串进行一次循环右移一位操作

9.4.3. BANANA

ABANAN

NABANA

ANABAN

NANABA

ANANAB

BANANA

9.4.4. 对表中的每一行按字典顺序排序

9.4.5. ABANAN

ANABAN

ANANAB

BANANA

NABANA

NANABA

9.4.6. 每个字符串的最后一个字符,从上到下

9.4.7. NNBAAA

9.4.7.1. 与BANANA相比更好地将相同的字符聚集在了一起

9.4.8. 0  ABANAN

1  ANABAN

2  ANANAB

3  BANANA

4  NABANA

5  NANABA

9.4.9. 行索引3就是源字符串

9.5. 最引人注目的特点在于只需要极小的数据开销,它所进行的变换操作就是可逆的(reversible)

9.6. 对DNA来说是一种理想的变换,可以使其更容易压缩、查询和检索

9.7. 具体实现

9.7.1. 将整个文件分为许多1 MB大小的数据块,然后在每个数据块上分别应用该算法

9.8. 最常见的用法

9.8.1. 将BWT的输出作为MTF的输入,经过处理后接着用统计编码算法处理

9.8.1.1. BZIP2的内部工作原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码审计——任意文件下载详解

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 网站可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件&…

大数据相关概念了解

Hadoop生态及Hive、HBase、Impala、HDFS之间的关系 Hadoop生态(什么是 Hadoop) Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集群之间对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和…

【雕爷学编程】Arduino动手做(112)---2.4G24L01无线模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

chatgpt赋能python:Python怎么调整黑色的SEO?

Python怎么调整黑色的SEO? 在当今互联网的大环境下,各种搜索引擎的存在具有巨大的价值,特别是Google,百度等常用搜索引擎的SEO排名对于企业、个人品牌的宣传有着极其重要的意义。但是,如果出现黑色SEO的情况&#xff…

Spark操作HBase的数据,实现列值的计算

本文将介绍如何使用Spark操作HBase的数据,实现列之间的计算,以特征值计算为例。特征值是指从原始数据中提取出来的具有代表性或判别性的数值,可以用于数据分析或机器学习等领域。本文将使用hbase-spark连接器,通过Spark RDD的方式…

深度解析:圣湘生物的数字化转型升级之路(附方案详情)

随着“互联网”医疗技术在医疗行业的应用不断深化,数字化正在加速推进IVD行业的创新。 当前,IVD企业应对机遇和挑战的核心是提升竞争力。 IVD企业基于企业资源,提升综合竞争力主要分【硬实力】和【软实力】。 一方面:需要企业不…

跟李沐学AI;Meta可能让其开源AI模型商业化,让开发者赚钱

🦉 AI新闻 🚀 Meta可能让其开源AI模型商业化,让开发者赚钱 摘要:Meta正考虑将其开源大语言模型(LLM)的下一个版本用于商业用途,这可以为聊天机器人等提供支持。此举可能会让更多开发者使用替代…

张量分解(Cp、Tuker、Block-Term)

张量 张量是向量或矩阵在维度空间上的高阶扩展。 一个 ( p , q ) (p,q) (p,q)型的张量 T T T被定义为一个多重线性映射。 T : V ∗ ⋯ V ∗ V ⋯ V ↦ R , T:V^* \times \dots \times V^* \times V \times \dots \times V \mapsto \R, T:V∗⋯V∗V⋯V↦R, 其中 V V V 是…

用GPT4写2023高考语文作文,新课标I卷,Ⅱ卷

文章目录 新课标Ⅰ卷新课标Ⅱ卷总结 每年的高考语文题目都会是热议的话题,今年同样也不例外。但是今年讨论的话题除了作文题目本身之外,对于chatgpt写出的作文会是什么样子的也​让广大网友同样期待 新课标Ⅰ卷 好的故事,可以帮我们更好地表达…

chatgpt赋能python:Python怎么让结果同行输出

Python怎么让结果同行输出 在Python编程中,我们经常需要打印出一系列的结果并在同一行输出。这对于输出更为整洁的结果和提高代码清晰度都是非常有帮助的。下面就让我们来介绍一些实现这一功能的方法。 方法一:使用 end 参数 在Python的 print() 函数…

机器视觉_HALCON_模板匹配_1.CreateScaledShapeModel

文章目录 一、前言二、create_scaled_shape_model 算子2.1 名称2.2 算子签名2.3 描述2.3.1 输入参数详述2.3.2 完整的预生成模型 2.4 执行信息2.5 参数2.6 执行结果2.7 可能的前驱算子2.8 可能的后继算子2.9 替代选择 一、前言 在HALCON算子手册中,对算子的介绍通常…

chatgpt赋能python:Python访问数据库

Python访问数据库 Python是一种高级编程语言,在数据分析、科学计算和Web开发等领域都有广泛的应用。Python还有一个很强的优势就是它能够方便地访问数据库。在本文中,我们将介绍Python如何与数据库交互以及Python数据库API的使用。 Python的数据库API …

chatgpt赋能python:Python如何访问数组中的元素

Python如何访问数组中的元素 Python是一种高级编程语言,访问数组中的元素也非常简单。 它提供了一种简单而灵活的方式访问数组中的元素,这使得在Python中使用数组变得非常容易。在本文中,我们将介绍如何在Python中访问数组中的元素以及如何使…

DecimalFormat基本用法

1.保留两位小数(截断) 下面展示一些 内联代码片。 double num 11.256;DecimalFormat df new DecimalFormat("#.##");//指定RoundingModedf.setRoundingMode(RoundingMode.DOWN);String str df.format(num);double formatNum Double.parseDouble(str)…

2023年05月份青少年软件编程Scratch试卷三级真题

2023-05 Scratch三级真题 分数:100 题数:38 测试时长:60min 一、单选题(共25题,共50分) 1. 关于变量,下列描述错误的是?(A)(2分) (变量那一栏…

对于ChatGPT,马化腾、马斯克等科技大佬竟然这么说!

ChatGPT一夜爆火之后,国内几乎是各大互联网公司都在摩拳擦掌,跃跃欲试,从百度的文心一言,到阿里的通义千问,还有360的智脑,讯飞的星火,语言大模型如雨后春笋一般涌出,犹如2014年新能…

代码审计——未授权访问详解

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 未授权访问漏洞,是在攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通…

express 基础知识实战

1 Express框架介绍与安装 1.1 Express 安装 生成配置文件package.json npm init --yes安装 Express 框架,就是使用 npm 的命令。 npm install express --save yarn add express --save初次使用 const express require(express) //实例化express const app ex…

全志V3S嵌入式驱动开发(u盘写读)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。简单解释下,host模式,就…

数据库原理与应用第2章作业

数据库原理与应用第2章作业 一.单选题(共15题,45分)二.填空题(共5题,25分)三.简答题(共1题,10分)四.计算题(共1题,20分) 一.单选题(共15题,45分) 1.(单选题,3分)关系数据库管理系统应能实现的专门关系运算…