主頁 >  其他 > 讀資料壓縮入門筆記06_背景關系轉換

讀資料壓縮入門筆記06_背景關系轉換

2023-06-17 07:31:11 其他

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的內部作業原理

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555359.html

標籤:其他

上一篇:LGV引理

下一篇:返回列表

標籤雲
其他(161125) Python(38236) JavaScript(25498) Java(18244) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7254) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4599) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1967) Web開發(1951) C++(1941) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 讀資料壓縮入門筆記06_背景關系轉換

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230616160541114-747303059.png) # 1. 壓縮演算法可歸為兩類 ## 1.1. 統計壓縮(即VLC) ## 1.2. 字典壓縮(如LZ78) ## ......

    uj5u.com 2023-06-17 07:31:11 more
  • LGV引理

    # LGV引理 定義 $A$ 是起點集合 $\{a_1,a_2,...,a_n\}$ 。 $B$ 是終點集合 $\{b_1,b_2,...,b_n\}$。 定義 $\omega(P)$ 為路徑 $P$ 每一條邊權值的乘積,即 : $$ \omega(P) = \prod_{e \in P}w_e $ ......

    uj5u.com 2023-06-17 07:31:04 more
  • SX130芯片的LoRa網關吞吐量是SX127芯片的多少倍?

    LoRa網關模塊應用的SX1301芯片資料吞吐量是SX1276/8芯片的多少倍?網關是連接2個不同網路的設備。如果一個設備,它能將LoRa無線網路和Internet連接起來,它就是一個LoRa網關。 ......

    uj5u.com 2023-06-17 07:30:50 more
  • [Week 21] 每日一題(C++,數學,二分,字串,STL)

    [TOC] ## T1 [Daimayuan] 一半相等(C++,數學) 給定 $n$ ($n$ 為偶數)個整數陣列 $a_1,a_2,…,a_n$ 考慮這樣的一個 $k$,每次操作選定一個 $i$,將 $a_i$ 減少 $k$,執行多次(可能 $0$ 次)后使得陣列中至少有一半的元素相等,求最大的 ......

    uj5u.com 2023-06-17 07:30:39 more
  • STL-string(ACM)

    1.相當于加了一些操作的vector<char> 基本操作 字串轉換(C++11) // 將字串轉換為整型 stoi() // 將字串轉換為long long stoll() // 將字串轉換為float型 stof() // 將字串轉換為double型 stod() 后面加入 s += ......

    uj5u.com 2023-06-17 07:30:34 more
  • 了解基于模型的元學習:Learning to Learn優化策略和Meta-Learner

    摘要:本文主要為大家講解基于模型的元學習中的Learning to Learn優化策略和Meta-Learner LSTM。 本文分享自華為云社區《深度學習應用篇-元學習[16]:基于模型的元學習-Learning to Learn優化策略、Meta-Learner LSTM》,作者:汀丶 。 1. ......

    uj5u.com 2023-06-17 07:30:00 more
  • iOS 單元測驗之常用框架 OCMock 詳解

    測驗驅動開發并不是一個很新鮮的概念了。在日常開發中,很多時候需要測驗,但是這種輸出是必須在點擊一系列按鈕之后才能在螢屏上顯示出來的東西。測驗的時候,往往是用模擬器一次一次的從頭開始啟動 app,然后定位到自己所在模塊的程式,做一系列的點擊操作,然后查看結果是否符合自己預期。 ......

    uj5u.com 2023-06-17 07:28:36 more
  • 多種方式提取和移動ntds

    # 多種方式提取和移動ntds.dit檔案 [TOC] ## 一、ntds.dit檔案的介紹 ntds.dit為Windows Active Directory資料庫的一個檔案,內容有域用戶、域組、用戶hash等資訊,域控上的ntds.dit只有可以登錄到域控的用戶(如域管用戶、DC本地管理員用戶) ......

    uj5u.com 2023-06-17 07:28:23 more
  • 形式化分析之BAN邏輯

    ## BAN邏輯介紹 BAN邏輯是一種基于知識和信任的形式邏輯分析方法,由Burrows,Abadi 和 Needham 提出,通過對認證協議的運行進行形式分析,從協議執行者最初的一些基本信仰出發,根據協議執行的每個參與者發出和收到的訊息,推理得到參與者的最終信仰。 BAN邏輯成功分析出NeedHa ......

    uj5u.com 2023-06-17 07:28:04 more
  • 由淺入深了解機器學習和GPT原理

    目前看到的最通俗易懂、由淺入深的圖解機器學習和GPT原理的系列文章,這是第一篇,由我和 GPT-4共同翻譯完成,分享給大家。 ......

    uj5u.com 2023-06-16 08:44:07 more