CN115567058A - 一种结合预测与编码的时序数据有损压缩方法 - Google Patents
一种结合预测与编码的时序数据有损压缩方法 Download PDFInfo
- Publication number
- CN115567058A CN115567058A CN202211036392.8A CN202211036392A CN115567058A CN 115567058 A CN115567058 A CN 115567058A CN 202211036392 A CN202211036392 A CN 202211036392A CN 115567058 A CN115567058 A CN 115567058A
- Authority
- CN
- China
- Prior art keywords
- data
- prediction
- compression
- algorithm
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种结合预测与编码的时序数据有损压缩方法,简称TPCFT,属于时序数据有损压缩技术领域。通过预处理、预测压缩、编码压缩三个部分,形成具有高压缩比和低时间开销的时序数据有损压缩算法;预处理通过融合具有相同趋势的数据段来降低时序数据的趋势变化对预测结果的影响;预测压缩基于Holt指数趋势模型并通过对该模型引入线性拟合来提升其预测准确度,编码压缩部分采用了LFZip算法。有益效果在于,通过融合具有相同趋势的数据段来降低时序数据的趋势变化对预测结果的影响。预测压缩部分通过对该模型引入线性拟合来提升其预测准确度,同时优化了预测部分的误差计算过程,从而降低了算法的整体时间复杂度。
Description
技术领域
本发明涉及一种结合预测与编码的时序数据有损压缩方法,属于时序数据有损压缩 技术领域。
背景技术
现有的数据压缩算法根据是否允许产生误差可以划分为无损压缩和有损压缩。无损 压缩用于要求解压后的数据与原始数据完全相同,例如,内存数据和磁盘数据的压缩。根据 现有无损压缩技术的发展状况,一份普通文件可以被压缩到原来的25%-50%。无损数据压缩 通常可以采用两种不同的机制来实现,一种是基于熵编码的压缩,例如,Huffman编码和算 术编码。另一种是基于字典的压缩,包括LZ77、LZ78和LZW,它们称为LZ系列算法。哈夫 曼编码属于贪婪算法,它需要在编码之前先构造哈夫曼树,然后根据码值0或1以及哈弗曼 树从上到下对数据进行编码。因为编码长度可变,压缩和解压缩都非常耗时。LZ算法属于 自适应字典技术,是在数据先验统计特性未知的情况下最流行的无损压缩算法。LZ算法已 经被许多压缩格式标准所采用,如Zip、GNUZip和Zlib,这些算法使用滑动窗口来检查输入 序列。其原理是检查被压缩的序列是否出现在先前输入的数据中。如果是,则使用指针指向 重复的字符串。字典是根据待编码序列动态生成的一组字符序列。有损压缩是指在允许的精 度误差内对数据进行压缩,解压缩恢复后的数据不一定和原始数据完全相同。目前这类压缩 算法主要被应用于图片压缩、音频压缩、视频压缩以及一些用于大数据分析的数据,因为选 择性地丢弃其中一些数据不会造成程序或人对数据含义的整体判断。在很多情况下,牺牲一 些数据来提高压缩比是最好的选择。例如,通过一张模糊的猫和一张模糊的狗的照片,仍然 能够分清猫和狗。
对于有损压缩,主要有三类:基于深度学习的算法、基于分解的算法以及基于分段逼近的算法。传统的基于深度学习的压缩算法需要使用大量的数据作为输入来训练预测模型。 预测模型的训练需要大量的时间,难以满足工业应用对于时延的要求。基于分解的算法包括 离散小波变换(DWT),离散傅立叶变换(DFT),奇异值分解(SVD)。Souza等人将SVD算法应用于数据压缩,该算法首先根据原始数据构造数值矩阵,然后把数值矩阵分解成三个矩 阵,最后只保存这3个矩阵的一部分行与列。当需要原始数据时,SVD算法通过把保留的3个矩阵的行和列信息相乘来恢复原始数据。然而该算法会丢失大量关键信息。对于离散小波 变换和离散傅立叶变换,它们有与奇异值分解方法相同的缺点。基于分段逼近的算法,包括 分段聚集逼近(PAA)、自适应分段常数逼近(APCA)和分段线性逼近(PLA)。PAA通过将序列分割成等长的部分并重新编码这些部分的平均值来逼近数据。然后,这些平均值可以在 低维空间中有效地索引。这种方法可能会遗漏一些重要的信息,有时会导致时间序列数据的 结果不准确。APCA算法将时间序列分割成一系列长度可变的分段,每个分段用该分段的平 均值和分段最右端的时间度量值来表示。与PAA相比,APCA方法虽然克服了滑动窗口固定 尺寸的限制,但是其空间复杂度是PAA算法的2倍。PLA方法首先对时间序列进行分段,然 后用线性函数对每一段进行分段逼近。上述压缩算法虽然能够达到较高的压缩比,但是压缩 时间很长。一种基于多项式逼近的压缩算法被相关研究者提出,该算法基于最小二乘法。最 小二乘法的时间复杂度为O(n3)。相关文献提出了斜率截距残差压缩算法SIRCS,该算法将线 性回归模型应用于多数据流的斜率、截距和残差分解,并结合了树映射技术,但SIRCS算法 的时间开销很大。最新的时序数据有损压缩算法LFZip由预测器、量化器和编码器组成。第 一阶段采用归一化最小均方(NLMS)算法对数据点进行估计。在第二阶段,量化器被用来 量化预测值和真实值之间的误差。第三阶段采用基于BWT算法的压缩机进行最后的编码压 缩。LFZip整体的时间复杂度为O(n2)。
综上所述,现有的基于预测压缩的解决方案缺乏考虑时序数据之间的趋势相关性, 导致解压缩后的数据与原始数据存在较大误差。现有的基于编码压缩的解决方案虽然能够保 证解压缩后的数据精度,但是大多数方案存在压缩比较低和时间开销较高的问题。
发明内容
本发明以减少存储开销为目标,提供一种结合预测与编码的时序数据有损压缩方法, 实现了一种具有高压缩比和低时间开销的时序数据有损压缩算法。
本发明提供了一种结合预测与编码的压缩算法,简称TPCFT,通过预处理、预测压缩、编码压缩三个部分,形成具有高压缩比和低时间开销的时序数据有损压缩算法;
预处理根据时序数据相邻数据段之间的趋势相关性,通过融合具有相同趋势的数据段来降低 时序数据的趋势变化对预测结果的影响;
预测压缩基于Holt指数趋势模型并通过对该模型引入线性拟合来提升其预测准确度,同时 优化了预测部分的误差计算过程,从而降低了算法的整体时间复杂度;
编码压缩部分采用了BitCompress算法,是一种典型的编码压缩算法。
预处理通过将滑动窗口中具有相同时间趋势的相邻数据段合并成新的数据段来执行, 以此来减少数据趋势变化对压缩效果的影响;
假设数据段S={s1,s2,...,sn-1,sn},步长是w,在步长为w时,数据的趋势被表示为k,其表达 式为(1.1),
由上述公式(1.1)计算的两个连续数据段的趋势分别为k1和k2。如果k1和k2满足以下公式 (1.2),则可以将两个数据段融合为一个数据段,
k1·k2≥0 (1.2)
如果k1和k2不满足公式(1.2),则两个相邻的数据段将不会被融合;融合后的数据段作为 预测压缩算法的输入,融合操作是为了避免对某个数据段进行分割时造成整个数据段的关联 性被破坏,具有不同趋势的数据段不会被融合到到同一个数据段从而减少了数据段趋势变化 对预测结果的影响。
预测压缩是基于Holt指数趋势模型的预测压缩算法,并且基于Holt指数趋势模型的改进包括预测方法优化、时间开销优化、线性拟合优化。
优化一,所述的预测方法优化包括,通过在预测阶段引入了线性拟合来获取待处理数据段的整体趋势,先对原始数据进行线性拟合来得到一个线性模型;然后选定某个时间 点为分割点,以该分割点之前的数据作为Holt指数趋势模型的输入来获取第一个预测序列; 接着利用线性模型生成该分割点之后的数据,并将生成的数据作为Holt指数趋势模型的输 入来得到第二个预测序列;最后的预测结果取两个预测序列对应位置的平均值;在上述两个 预测序列存在等概率误差的条件下,选取两个预测序列的平均值可以使得误差最小化;
Holt指数趋势模型形式化为式(1.3)、(1.4)、(1.5):
lt=α·yt+(1-α)·(lt-1+bt-1) (1.4)
设R={R1,R2,…,Rn-1,Rn}是原始数据段,则拟合序列D={D1,D2,…,Dn-1,Dn}由公式(1.6)所表示的线性拟合模型生成,
其中xi表示从数据段R中第i个点到的第1个点的距离,y1是R中第1个点的实际值,yn是R中最后一个数据点的实际值,k可根据公式(1.7)计算,是线性拟合模型的输出; 序列D的逆序形式被表示为RD={Dn,Dn-1,…,D1,D0},P={P1,P2,…,Pi-1}是预测值, 当Pi被当做分割点时,{R1,R2,…,Ri-2,Ri-1}和{Dn,Dn-1,…,Di+2,Di+1}将被作为算 法的输入;对于这两段数据,算法的预测序列分别为Pa和Pb,最终的预测结果可以形式化 为公式(1.8),
Pfinal=μ1·Pa+μ2·Pb (1.8)
其中,μ1和μ2是权重参数;
其中Rk表示实际值,Pk表示预测值,n表示数据段P和R的长度;
如果P中的预测值和R中的实际值满足式(1.9)时,得出结论:{R1,R2,…,Ri-1}能用来 预测{Ri,Ri+1,…,Rn};最后存储{R1,R2,…,Ri-1};
如果平均误差与阈值的关系不满足公式(1.9),P中的预测值Pi将被替换为R中相应位置的 实际值,当前分割点变为Pi+1,重复上述操作直到找到满足误差要求的分割点,把该分割点 之前的数据并入结果集。
优化二,时间开销优化,通过在预测过程中引入了递推式误差计算,并将其形式化为公式(1.10),
其中Ei表示原始值{Ri,Ri+1,…,Rn}和预测值{Pi,Pi+1,…,Pn}之间的平均误差,Pi是可能的 分割点。
优化三,所述的线性拟合优化,使得拟合结果的总体误差最小化,拟合结果与真实值之间的误差可以形式化为式(1.11),
其中xi表示数据段R中从第i个点到第1个点的距离,y1是R中第1个点的实际值,n是数 据段P的序列长度;
式(1.12)和式(1.13)通过对式(1.11)进行等价变换得到:
根据式(1.11)、(1.12)、(1.13)、(1.14),可以得出结论:误差error是线性拟合模型参数k 的二次函数。根据最优化原理可推知必定有一个最优的k使得预测数据与原始数据之间的误 差最小化;
由式(1.14)、(1.15)可导出如下不等式,
φ≥0 (1.16)
基于(1.14)、(1.15)、(1.16),当且仅当k满足公式(1.17),
误差取得最小值。
编码压缩,通过基于变长编码的无损压缩算法,即BitCompress,进一步压缩从预测压缩算法获得的数据,包括采用一种变长编码规则首先对每个数据按位进行编码,然后进 行编码拼接,最后对多个编码进行组合;
经过预测压缩和编码压缩之后,整体压缩比可以形式化为公式(1.18),
其中原始数据的大小为n,最终压缩数据的大小为i。
算法的解压缩过程首先是应用编码压缩对压缩数据进行解压得到解压缩后的数据, 即编码压缩的解压输出;然后将编码压缩的解压输出作为预测压缩算法的输入进行预测解压; 最后预测压缩算法的输出就是恢复后的数据。
本发明的有益效果在于,通过融合具有相同趋势的数据段来降低时序数据的趋势变 化对预测结果的影响。预测压缩部分基于Holt指数趋势模型并通过对该模型引入线性拟合 来提升其预测准确度,同时优化了预测部分的误差计算过程,从而降低了算法的整体时间复 杂度。
附图说明
图1为本发明的压缩和解压缩流程图。
图2为预测方法优化示意图。
图3为系统框架图。
图4为系统交互时序图。
图5为系统功能图。
图6为BitCompress算法的编码和解码流程图。
具体实施方式
为了使本领域技术人员能更好地了解本发明的技术内容,下面结合附图1至5对本发明的优选实施例作进一步说明,本发明涉及一种结合预测与编码的压缩算法,简称TPCFT, 通过预处理(Data Fusion)、预测压缩(PCBH)、编码压缩(BitCompress)三个部分,形成 具有高压缩比和低时间开销的时序数据有损压缩算法;
预处理根据时序数据相邻数据段之间的趋势相关性,通过融合具有相同趋势的数据段来降低 时序数据的趋势变化对预测结果的影响;
预测压缩基于Holt指数趋势模型并通过对该模型引入线性拟合来提升其预测准确度,同时 优化了预测部分的误差计算过程,从而降低了算法的整体时间复杂度;
编码压缩部分采用了BitCompress算法,是一种典型的编码压缩算法。
TPCFT算法压缩过程和解压缩过程如图1所示,传感器采集的时间序列数据总是处于波动状态。本文将数据上升趋势和下降趋势的交替出现定义为波动。如果这些原始数据直 接用作预测压缩算法的输入,必然会导致预测结果不准确,最终致使压缩效果较差。因此, 预处理通过将滑动窗口中具有相同时间趋势的相邻数据段合并成新的数据段来执行,以此 来减少数据趋势变化对压缩效果的影响;相同的趋势是指两个相邻的数据段同时具有上升趋 势或下降趋势。数据融合后,将原始数据段转化为若干个具有相同趋势的新数据段。预处理 部分的整体目标是通过数据融合来提高TPCFT算法的压缩比;
假设数据段S={s1,s2,...,sn-1,sn},步长是w,在步长为w时,数据的趋势被表示为k,其表达 式为(1.1),
由上述公式(1.1)计算的两个连续数据段的趋势分别为k1和k2。如果k1和k2满足以下公式 (1.2),则可以将两个数据段融合为一个数据段,
k1·k2≥0 (1.2)
如果k1和k2不满足公式(1.2),则两个相邻的数据段将不会被融合;融合后的数据段作为 预测压缩算法的输入,融合操作是为了避免对某个数据段进行分割时造成整个数据段的关联 性被破坏,具有不同趋势的数据段不会被融合到到同一个数据段从而减少了数据段趋势变化 对预测结果的影响。
例如,A={S1,...,Sw}和B={Sw+1,...,S2w}是两个相邻的数据段;kA,kB分别是数据段A 和数据段B根据公式(1.2)计算得到。如果kA和kB满足公式(1.2),则可以采用数据融合操作,将A和B融合成为一个数据段C={S1,...,S2w},则数据段C会被当作TPCFT算法第二部分的输入;如果kA和kB不满足公式(1.2),则数据段A和B将分别被当作TPCFT算法第二 部分的输入。
传感器采集的数据随着时间推移而不断变化,这些数据大多具有相关性。传统的无 损压缩算法未考虑数据相关性,因此它们实现的压缩比较低,不能有效地压缩这类数据,且 部分数据并不需要以无损方式存储。传统的有损压缩算法又存在耗时长,可能会丢失大量有 用信息的问题。基于上述问题,预测压缩是基于Holt指数趋势模型的预测压缩算法,并且 基于Holt指数趋势模型的改进包括预测方法优化、时间开销优化、线性拟合优化。
优化一,由于采集误差或采集数据自身的波动,在一定时间区间内数据会发生变化。如果只使用预测数据之前的数据作为输入,结果将不准确。如果能获取数据段的整体趋势,算法的预测准确度将会得到提升。所述的预测方法优化包括,通过在预测阶段引入了线性拟合来获取待处理数据段的整体趋势,先对原始数据进行线性拟合来得到一个线性模型; 然后选定某个时间点为分割点,以该分割点之前的数据作为Holt指数趋势模型的输入来获 取第一个预测序列;接着利用线性模型生成该分割点之后的数据,并将生成的数据作为Holt 指数趋势模型的输入来得到第二个预测序列;最后的预测结果取两个预测序列对应位置的平 均值;在上述两个预测序列存在等概率误差的条件下,选取两个预测序列的平均值可以使得 误差最小化;接下来将对算法的预测机制做一个形式化表述,
Holt指数趋势模型形式化为式(1.3)、(1.4)、(1.5):
lt=α·yt+(1-α)·(lt-1+bt-1) (1.4)
如图2所示,设R={R1,R2,…,Rn-1,Rn}是原始数据段,则拟合序列D={D1,D2,…,Dn-1,Dn}由公式(1.6)所表示的线性拟合模型生成,该操作对应算法2的第5步;
其中xi表示从数据段R中第i个点到的第1个点的距离,y1是R中第1个点的实际值,yn是R中最后一个数据点的实际值,k可根据公式(1.7)计算,是线性拟合模型的输出; 如图2所示,序列D的逆序形式被表示为RD={Dn,Dn-1,…,D1,D0},P={P1,P2,…, Pi-1}是预测值,当Pi被当做分割点时,{R1,R2,…,Ri-2,Ri-1}和{Dn,Dn-1,…,Di+2, Di+1}将被作为算法的输入;对于这两段数据,算法的预测序列分别为Pa和Pb,最终的预测 结果可以形式化为公式(1.8),
Pfinal=μ1·Pa+μ2·Pb (1.8)
其中,μ1和μ2是权重参数;一般来说,为了使平均误差最小化,两者都设置为0.5;
其中Rk表示实际值,Pk表示预测值,n表示数据段P和R的长度;
如果P中的预测值和R中的实际值满足式(1.9)时,得出结论:{R1,R2,…,Ri-1}能用来 预测{Ri,Ri+1,…,Rn};最后存储{R1,R2,…,Ri-1};
如果平均误差与阈值的关系不满足公式(1.9),P中的预测值Pi将被替换为R中相应位置的 实际值,当前分割点变为Pi+1,重复上述操作直到找到满足误差要求的分割点,把该分割点 之前的数据并入结果集。
优化二,时间开销优化,由于PCBH算法会不断尝试寻找最合适的分割点,对于每一个可能的分割点,该算法都必须预测出该分割点之后的数据,然后计算预测值与实际数据 的平均误差,导致该计算过程是一个非常耗时的操作,因为它使得算法整体的时间复杂度为 O(n2),n为原始数据的序列长度;
经过分析,对于每个可能的分割点都重新做一次误差计算,计算过程包含了大量的冗余操作, 从而增加了算法的整体时间开销。为了降低时间开销,通过在预测过程中引入了递推式误差 计算,并将其形式化为公式(1.10),
其中Ei表示原始值{Ri,Ri+1,…,Rn}和预测值{Pi,Pi+1,…,Pn}之间的平均误差,Pi是可能的 分割点。
优化三,所述的线性拟合优化,线性模型在对数据进行拟合时,拟合精度会随着参数的改变而改变,因此选定一个最合适的参数是必要的。如果采用迭代尝试的方式选取参数, 其时间复杂度是不确定的,无疑会致使算法的时间开销增大,因此这种方案是不合适的。经 过分析,线性模型的参数与拟合误差之间满足二次函数关系,于是寻找最优参数的问题就转 变成了一个凸优化问题。求解该凸优化问题的时间复杂度是O(1),因此该方案是可行的。为 了使得拟合结果的总体误差最小化,拟合结果与真实值之间的误差可以形式化为式(1.11),
其中xi表示数据段R中从第i个点到第1个点的距离,yi是R中第i个点的实际值,n是数 据段P的序列长度;
式(1.12)和式(1.13)通过对式(1.11)进行等价变换得到:
根据式(1.11)、(1.12)、(1.13)、(1.14),可以得出结论:误差error是线性拟合模型参数k 的二次函数。根据最优化原理可推知必定有一个最优的k使得预测数据与原始数据之间的误 差最小化;
由式(1.14)、(1.15)可导出如下不等式,
φ≥0 (1.16)
基于(1.14)、(1.15)、(1.16),当且仅当k满足公式(1.17),
误差取得最小值。
采用PCBH算法对数据进行压缩后,数据之间的相关性减弱,此时若再次采用预测类压缩算法或者不再进行处理,整体压缩比都不能再得到显著提升。
编码压缩,通过基于变长编码的无损压缩算法,即BitCompress,进一步压缩从预测压缩算法获得的数据,包括采用一种变长编码规则首先对每个数据按位进行编码,然后进 行编码拼接,最后对多个编码进行组合;相比于传统解决方案,该算法通过引入编码映射表, 消除了对于参数的依赖,因而可以再次有效提升算法的整体压缩比。
BitCompress能够充分利用数值型数据的二进制位的空闲位来存储其它数值型数据 的特点达到压缩数据的目的。所谓的空闲位是指数据以二进制形式表示时,从最高位开始连 续为0的二进制位。编码映射表如表1所示:
表1编码映射表
原始数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
编码单元 | 000 | 001 | 010 | 011 | 100 | 101 | 1100 | 1101 | 1110 | 1111 |
在本算法中,在一个数据序列中最大的位数称为标准位数。因此为了保证编码的一致性,要 对数据进行标准化。所谓标准化,就是对于不满足标准位数的数据,通过在数据前面填充0 的方式来使其达到标准位数。标准位数决定了每个数据经过编码后的编码单元数量。
图6介绍了BitCompress算法的编码和解码流程。对于图中的数据序列,由于整个数据序列最大值为478,它的标准位数为3。根据编码映射表,数据45标准化之后为045, 数字0对应的编码单元为000,数字4对应的编码单元为100,数字5对应的编码单元 为101,数据45编码后得到3个编码单元。对于同一个序列中的其它数据做同样的操作。 为了保证解码过程的正确性,在编码时要标识出整个编码序列的标准位数,本算法通过设计 前导位来达到这个目的。前导位的设计规则如表2所示,
表2前导位编码表
前导位 | 00 | 01 | 10 | 11 |
标准位数 | 1 | 2 | 3 | 4 |
数据序列经过压缩之后最终得到一个二进制序列,其长度为64位。对于图6中的数据序列, 如果直接存储在时序数据库中,将会占用48个字节的存储空间,经过压缩之后只占用8个 字节。
解码过程是编码过程的逆操作。首先对读取前导位,前导位为10,表示每3个编 码单元表示一个数据。例如,对数据45进行解码,先判断编码单元000的前两位,经过 判断,其前两位为00,根据编码规则可知,该编码单元所代表的数字肯定属于区间[0,5]之 间的某个整数。如果前两位为11,那么根据编码规则可以推知,该编码单元所代表的数字 肯定属于[6,9]之间的某个整数。对于后续编码单元100和101的解码过程同理。综上分析, 对于000100101的解码结果为045,经过规范化之后,得到最终的结果45,和编码前的 数值相同。所谓规范化就是去除在编码过程中执行标准化时填充的0。
经过预测压缩和编码压缩之后,整体压缩比可以形式化为公式(1.18),
其中原始数据的大小为n,最终压缩数据的大小为i。
如图1所示,算法的解压缩过程首先是应用编码压缩(BitCompress)对压缩数据进行解压得到解压缩后的数据,即BitCompress的解压输出;然后将BitCompress的解压输出作为预测压缩算法(PCBH算法)的输入进行预测解压;最后PCBH算法的输出就是恢复 后的数据。为了满足实际应用的需要,压缩后的数据应以固定格式存储在数据库中以便于查询。因此,设计了数据库中压缩数据的表格式,在查询数据时,解压算法能够根据数据表信息恢复数据。
数据在数据库中的存储格式如表3所示,其中timestamp表示收集数据的时间。parameter字段表示本段数据在预测压缩的线性拟合模型参数k,tag字段用来标识数据所在 的数据段,即具有相同tag字段的数据在被压缩前属于同一个数据段,恢复后也应该属于同 一个数据段。
表3压缩后的数据格式
下面介绍数据库查询数据的流程。首先数据库系统根据时间戳查询数据,查询结果 是一个包含多条记录的数据块。数据库引擎根据tag字段对查询到的数据进行合并分组,同 一分组的数据被作为一个独立的压缩后的数据块来执行如图1所示的解压缩过程。
下面从时间复杂度、与压缩比两方面来分析本发明的方法性能。
时间复杂度分析过程分为三个步骤,分别对应算法压缩过程的三个部分:
第一步分析预处理数据融合的时间复杂度。假设原始数据序列长度为n。在数据融合过程中, 对于该序列中的每个数据点,只需按公式(1.1)计算结果即可。该部分的整体时间复杂度 显然为O(n);
第二步采用预测压缩的算法压缩数据。假设从数据融合部分得到的序列长度为n。对于每个 数据点,首先根据公式(1.9)计算预测值和实际值之间的误差。然后将误差值与根据实际 需求预先设定的阈值进行比较。如果误差值大于阈值,则选择下一个分割点,重复上述操作 直至找到满足要求的分割点。由于只需要根据公式(1.10)的误差值执行更新操作,即根据 旧误差值在常数时间复杂度内得到新误差值。因此得出这样的结论:该操作的时间复杂度仍 然是O(n);
第三步采用BitCompress算法进行压缩,该算法是基于比特位形式的编码压缩方案,整体只 需要遍历一遍原始数据,对于不满足标准位数的数据,通过在数据前面填充0的方式来使其 达到标准位数,标准位数决定了每个数据经过编码后的编码单元数量。因此,整个 BitCompress算法的时间复杂度为O(n);
设经过预测压缩袋算法压缩后数据的大小为m,m和u的关系满足式(2.1),
m+u=n (2.1)
经过上述分析,得到式(1.2),其中公式左边表示TPCFT算法的整体时间复杂度,右边表示 LFZip算法的整体时间复杂度,
O(m2)+O(m+u)≤O((m+u)2)=O(n2) (2.2)
两种算法的解压缩过程时间复杂度和以上分析的压缩过程时间复杂度相同,从而得出结论: TPCFT算法的整体时间复杂度低于LFZip算法。
压缩比分析,证明TPCFT算法在压缩比上优于LFZip算法,设LFZip的压缩比为cr,原始数据段的大小设置为n;原始数据经过LFZip算法压缩后的大小可以形式化为(2.3),
设预测压缩袋算法压缩比为ct,原始数据段的大小设置为n,原始数据经过预测压缩的算法 压缩后的大小形式化为(2.4),
根据上述公式(2.3)和(2.4),推导出公式(2.5),
其中sizeF是原始数据经过TPCFT算法压缩后的大小,n是原始数据的大小,cr是LFZip的压 缩比,ct是PCBH的压缩比。公式(2.5)经过等价替换转换成公式(2.6),
公式(2.6)左边代表原始数据经过TPCFT算法压缩后的大小,右边代表原始数据经过LFZip 算法压缩后的大小;经过上述分析,本节可以得出一个明确的结论:TPCFT算法实现的压缩 比高于LFZip算法。
由于系统的整体设计需要满足低耦合和高内聚的软件设计原则,因此TPCFT-DB系统的整体架构分为三层:界面表现层、应用逻辑层和数据库层。系统架构如图3所示。
图4展示了应用逻辑层内部各功能类之间以及应用逻辑层与其它两层之间的交互时 序图,下面给出各个类的详细功能信息:
(1)MainCall类负责解析来自界面表示层的命令。如果是压缩命令,该类会加载Compressor 类。如果是解压缩命令,该类会加载Decompressor类;
(2)Compressor类负责压缩数据。Compressor类包含TPCFT压缩算法,该类首先把待压 缩的数据转换成标准格式;然后该类执行压缩算法;最终Compressor类调用数据库层的API 命令把压缩后的数据写入InfluxDB;
(3)Decompressor类负责解压缩数据。该类首先根据界面表示层传过来的查询条件查询数 据,并把查询到的数据进行封装;接着Decompressor类调用解压缩算法解压数据;最终 Decompressor类把解压缩后的数据传递给Interface类;
(4)Interface类负责展示数据。该类首先会获取界面表示层的数据展示面面向时序数据的 边缘实时压缩方法研究板;然后该类把数据和相关属性填充到数据展示面板;最终Interface 类渲染并刷新数据展示面板。
系统整体功能如图5所示。用户通过主界面选择各分支功能,数据库管理,数据 表管理,用户管理,查询数据,写入数据。数据库管理、数据表管理和用户管理直接与数据 库交互。查询数据和写入数据通过压缩存储模块与数据库交互。最终,数据库把执行结果返回给用户。
Claims (8)
1.一种结合预测与编码的时序数据有损压缩方法,其特征在于:
通过预处理、预测压缩、编码压缩三个部分,形成具有高压缩比和低时间开销的时序数据有损压缩算法;
预处理根据时序数据相邻数据段之间的趋势相关性,通过融合具有相同趋势的数据段来降低时序数据的趋势变化对预测结果的影响;
预测压缩基于Holt指数趋势模型并通过对该模型引入线性拟合来提升其预测准确度,同时优化了预测部分的误差计算过程,从而降低了算法的整体时间复杂度;
编码压缩部分采用了BitCompress算法,是一种典型的编码压缩算法。
2.根据权利要求1所述的一种结合预测与编码的时序数据有损压缩方法,其特征在于:
预处理通过将滑动窗口中具有相同时间趋势的相邻数据段合并成新的数据段来执行,以此来减少数据趋势变化对压缩效果的影响;
假设数据段S={s1,s2,...,sn-1,sn},步长是w,在步长为w时,数据的趋势被表示为k,其表达式为(1.1),
由上述公式(1.1)计算的两个连续数据段的趋势分别为k1和k2。如果k1和k2满足以下公式(1.2),则可以将两个数据段融合为一个数据段,
k1·k2≥0 (1.2)
如果k1和k2不满足公式(1.2),则两个相邻的数据段将不会被融合;融合后的数据段作为预测压缩算法的输入,融合操作是为了避免对某个数据段进行分割时造成整个数据段的关联性被破坏,具有不同趋势的数据段不会被融合到到同一个数据段从而减少了数据段趋势变化对预测结果的影响。
3.根据权利要求1所述的一种结合预测与编码的时序数据有损压缩方法,其特征在于:
预测压缩是基于Holt指数趋势模型的预测压缩算法,并且基于Holt指数趋势模型的改进包括预测方法优化、时间开销优化、线性拟合优化。
4.根据权利要求3所述的一种结合预测与编码的时序数据有损压缩方法,其特征在于:
所述的预测方法优化包括,通过在预测阶段引入了线性拟合来获取待处理数据段的整体趋势,先对原始数据进行线性拟合来得到一个线性模型;然后选定某个时间点为分割点,以该分割点之前的数据作为Holt指数趋势模型的输入来获取第一个预测序列;接着利用线性模型生成该分割点之后的数据,并将生成的数据作为Holt指数趋势模型的输入来得到第二个预测序列;最后的预测结果取两个预测序列对应位置的平均值;在上述两个预测序列存在等概率误差的条件下,选取两个预测序列的平均值可以使得误差最小化;
Holt指数趋势模型形式化为式(1.3)、(1.4)、(1.5):
lt=α·yt+(1-α)·(lt-1+bt-1) (1.4)
设R={R1,R2,…,Rn-1,Rn}是原始数据段,则拟合序列D={D1,D2,…,Dn-1,Dn}由公式(1.6)所表示的线性拟合模型生成,
其中xi表示从数据段R中第i个点到的第1个点的距离,y1是R中第1个点的实际值,yn是R中最后一个数据点的实际值,k可根据公式(1.7)计算,是线性拟合模型的输出;序列D的逆序形式被表示为RD={Dn,Dn-1,…,D1,D0},P={P1,P2,…,Pi-1}是预测值,当Pi被当做分割点时,{R1,R2,…,Ri-2,Ri-1}和{Dn,Dn-1,…,Di+2,Di+1}将被作为算法的输入;对于这两段数据,算法的预测序列分别为Pa和Pb,最终的预测结果可以形式化为公式(1.8),
Pfinal=μ1·Pa+μ2·Pb (1.8)
其中,μ1和μ2是权重参数;
其中Rk表示实际值,Pk表示预测值,n表示数据段P和R的长度;
如果P中的预测值和R中的实际值满足式(1.9)时,得出结论:{R1,R2,…,Ri-1}能用来预测{Ri,Ri+1,…,Rn};最后存储{R1,R2,…,Ri-1};
如果平均误差与阈值的关系不满足公式(1.9),P中的预测值Pi将被替换为R中相应位置的实际值,当前分割点变为Pi+1,重复上述操作直到找到满足误差要求的分割点,把该分割点之前的数据并入结果集。
6.根据权利要求3所述的一种结合预测与编码的时序数据有损压缩方法,其特征在于:
线性拟合优化,使得拟合结果的总体误差最小化,拟合结果与真实值之间的误差可以形式化为式(1.11),
其中xi表示数据段R中从第i个点到第1个点的距离,yi是R中第i个点的实际值,n是数据段P的序列长度;
式(1.12)和式(1.13)通过对式(1.11)进行等价变换得到:
根据式(1.11)、(1.12)、(1.13)、(1.14),可以得出结论:误差error是线性拟合模型参数k的二次函数。根据最优化原理可推知必定有一个最优的k使得预测数据与原始数据之间的误差最小化;
由式(1.14)、(1.15)可导出如下不等式,
φ≥0 (1.16)
基于(1.14)、(1.15)、(1.16),当且仅当k满足公式(1.17),
误差取得最小值。
8.根据权利要求1所述的一种结合预测与编码的时序数据有损压缩方法,其特征在于:
解压缩,算法的解压缩过程首先是应用编码压缩对压缩数据进行解压得到解压缩后的数据,即编码压缩的解压输出;然后将编码压缩的解压输出作为预测压缩算法的输入进行预测解压;最后预测压缩算法的输出就是恢复后的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211036392.8A CN115567058A (zh) | 2022-08-28 | 2022-08-28 | 一种结合预测与编码的时序数据有损压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211036392.8A CN115567058A (zh) | 2022-08-28 | 2022-08-28 | 一种结合预测与编码的时序数据有损压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115567058A true CN115567058A (zh) | 2023-01-03 |
Family
ID=84739029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211036392.8A Pending CN115567058A (zh) | 2022-08-28 | 2022-08-28 | 一种结合预测与编码的时序数据有损压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567058A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117040542A (zh) * | 2023-10-08 | 2023-11-10 | 广东佰林电气设备厂有限公司 | 一种智能综合配电箱能耗数据处理方法 |
-
2022
- 2022-08-28 CN CN202211036392.8A patent/CN115567058A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117040542A (zh) * | 2023-10-08 | 2023-11-10 | 广东佰林电气设备厂有限公司 | 一种智能综合配电箱能耗数据处理方法 |
CN117040542B (zh) * | 2023-10-08 | 2024-01-12 | 广东佰林电气设备厂有限公司 | 一种智能综合配电箱能耗数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10979071B2 (en) | Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation | |
CN103814396B (zh) | 编解码比特流的方法和装置 | |
US7365658B2 (en) | Method and apparatus for lossless run-length data encoding | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
CN100547615C (zh) | 表示时变图形模型的数据流的编码方案 | |
CN101243611B (zh) | 变换块的高效编码和解码 | |
CN116681036B (zh) | 基于数字孪生的工业数据存储方法 | |
CN107481295B (zh) | 基于动态字节长度分配的卷积神经网络的图像压缩系统 | |
CN112968706B (zh) | 数据压缩方法、fpga芯片及fpga在线升级方法 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
US20120130965A1 (en) | Data compression method | |
JP3083730B2 (ja) | データ情報を圧縮するためのシステムおよび方法 | |
CN106407285A (zh) | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 | |
CN109871362A (zh) | 一种面向流式时序数据的数据压缩方法 | |
CN111246206B (zh) | 一种基于自编码器的光流信息压缩方法及装置 | |
CN117155407B (zh) | 一种智慧镜柜消毒日志数据优化存储方法 | |
CN116016606B (zh) | 一种基于智慧云的污水处理运维数据高效管理系统 | |
CN1327713C (zh) | 用于对视频数据流压缩和解压缩的方法和装置 | |
CN115882866A (zh) | 一种基于数据差值特征的数据压缩方法 | |
CN115567058A (zh) | 一种结合预测与编码的时序数据有损压缩方法 | |
CN115269526A (zh) | 一种半导体生产数据的处理方法及系统 | |
CN118075472A (zh) | 一种基于loco-i算法和哈夫曼编码的频谱压缩方法 | |
JPH0479177B2 (zh) | ||
CN101657973B (zh) | 采用位精度的编码装置和编码方法 | |
CN102088607B (zh) | 基于jpeg2000标准的mq编码方法和电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |