一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

时序数据的有损压缩方法、解压方法、设备和存储介质与流程

2022-08-03 01:24:30 来源:中国专利 TAG:


1.本技术涉及数据压缩技术领域,特别是涉及时序数据的有损压缩方法、解压方法、设备和存储介质。


背景技术:

2.随着大数据的发展,数据压缩技术被广泛运用。比如,时序数据压缩技术主要包括了矩形波串法、向后斜率法、死区压缩法、旋转门压缩法,这些算法可归结为分段线性方法,以下分别做出简要介绍:
3.矩形波串法:给定变量的限值,若当前数据与上一个记录数据的距离超过了限值便记录该数据,否则不记录。该矩形波串法适合于长期稳态过程,不适合于线性趋势或动态过程。
4.向后斜率法:给定变量的限值,对前两个保存数据采用线性外插方法对当前数据进行估计,若实际值与估计值的距离超过了限值便记录该数据,否则不记录。该向后斜率法易受噪声干扰,适合于无噪数据。
5.死区压缩法:给定变量的压缩阈值,若当前数据与上一个记录数据的距离超过了阈值便记录该数据并以当前数据作为新起点,否则不记录。
6.旋转门压缩法:给定变量的压缩阈值,以当前数据与上一个记录数据的连线为中轴,过这两点做一个2倍压缩阈值宽度的平行四边形,若该平行四边形不能容纳当前数据与上一个记录数据间的所有数据,则记录当前数据的前一个数据,否则跳到下一个数据点重新做平行四边形。
7.上述死区压缩法和旋转门压缩法的压缩结果取决于压缩阈值的给定,且并未对噪声与错误值进行处理。
8.因此,现有的针对时序数据的有损压缩技术更适用于稳态或是线性数据,而对于波动或是有噪数据,其性能便会减弱,例如压缩比低,压缩结果的准确性低。


技术实现要素:

9.本技术实施例提供了时序数据的有损压缩方法、解压方法、设备和存储介质,以至少解决压缩比低,压缩结果的准确性低的问题。
10.第一方面,本技术实施例提供了一种时序数据的有损压缩方法,所述方法包括:根据预设参数将定义域划分成若干区间,并对每个区间进行编号;获取时序数据点的真实值即待压缩数据,对所述时序数据点通过机器学习模型输出预测值,并根据所述真实值和所述预测值计算周期项;根据周期项和区间对所述待压缩数据进行离散化处理,记录区间编号;将所述区间编号通过指定编码方式进行压缩,得到编码值。
11.在其中一些实施例中,根据所述真实值和所述预测值计算周期项包括:将所述真实值减去所述预测值,得到周期项。
12.在其中一些实施例中,根据周期项和区间对所述待压缩数据进行离散化处理,记
录区间编号包括:估计周期项的均值和方差;根据所述均值和所述方差对所述周期项进行变换,得到调整值,其中,所述变换包括平移和伸缩;根据所述调整值处于的区间记录对应的区间编号。
13.在其中一些实施例中,在根据周期项和区间对所述待压缩数据进行离散化处理之后,所述方法还包括:若时序数据点对应的周期项与周期项的均值之间的差值绝对值大于预设阈值,则判定为离群点,保存所述周期项,记录预设编号;否则判定为非离群点,保存落在所述周期项所在区间内的周期项的均值。
14.在其中一些实施例中,获取时序数据点的真实值即待压缩数据,对所述时序数据点通过机器学习模型输出预测值包括:在实时压缩的情况下,获取当前时刻的真实值作为待压缩数据;将在前一时刻压缩得到的编码值解压,并将解压值与所述前一时刻之前的数据组成预设长度的数据;将所述预设长度的数据输入预训练的前馈神经网络,输出对所述当前时刻的预测值,其中,所述前馈神经网络的训练步骤包括:收集指定长度的时序数据点的真实值;输入是当前时刻前预设长度的时序数据点的真实值,输出当前时刻的预测值,根据该预测值和真实值计算损失,并更新网络参数,直到损失收敛,停止训练。
15.在其中一些实施例中,所述方法还包括:判断当前时刻前预设时间段之内离群点的比例是否超过预设值,若是,从下一时刻开始,重新收集指定长度的时序数据点的真实值并重新训练前馈神经网络。
16.在其中一些实施例中,获取时序数据点的真实值即待压缩数据,对所述时序数据点通过机器学习模型输出预测值包括:在非实时压缩的情况下,获取多个连续型时序数据点的真实值作为待压缩数据;根据预设的多项式最高项次数的上限对所述待压缩数据进行多项式拟合,得出拟合值即所述预测值。
17.在其中一些实施例中,所述指定编码方式包括算术编码方式。
18.在其中一些实施例中,所述算术编码方式包括:根据编码位数确定编码的上限值和下限值;根据待编码字符中字符的种类数量设置初始的字符总数,并获取预设的权值,其中,所述待编码字符包括所述区间编号;依序对每个字符编码时,按照预设计算规则更新上限值和下限值,并更新权值和字符总数;当所有字符编码完成时,记录最终的上限值和下限值之间的一个数值作为所述编码值。
19.在其中一些实施例中,依序对每个字符编码时,按照预设计算规则更新上限值和下限值,并更新权值和字符总数包括:将上限值、下限值和字符总数分别记为high、low和total;若不满足条件公式high-low 1≥total,则将上限值high左移补1,下限值low左移补0,且左移后溢出位用out存储,out存储的位数由bits保存,左移持续到满足所述条件公式为止。
20.第二方面,本技术实施例提供一种解压方法,所述方法包括:获取预先压缩的编码值作为待解压数据,其中,所述编码值通过如下方式获得:根据预设参数将定义域划分成若干区间,并对每个区间进行编号;获取时序数据点的真实值即待压缩数据,对所述时序数据点通过机器学习模型输出预测值,并根据所述真实值和所述预测值计算周期项;根据周期项和区间对所述待压缩数据进行离散化处理,记录区间编号;将所述区间编号通过指定编码方式进行压缩,得到编码值;通过所述指定编码方式所对应的解码方式对所述待解压数据进行解码,得到区间编号,并恢复出每个数据点的解压值。
21.在其中一些实施例中,恢复出每个数据点的解压值包括:针对非离群点,根据区间编号对时序数据点赋予区间的平均值;针对离群点,对时序数据点赋予预先保存的调整值;基于所述区间的平均值或所述调整值恢复出每个时序数据点的解压值。
22.在其中一些实施例中,基于所述区间的平均值或所述调整值恢复出每个时序数据点的解压值包括:将所述区间的平均值或所述调整值进行逆变换,再按照所述预测值平移,得到所述解压值。
23.第三方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项所述的方法。
24.第四方面,本技术实施例提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项所述的方法。
25.相比于相关技术,本技术实施例提供的时序数据的有损压缩方法中,将定义域划分成若干区间,根据区间对待压缩数据进行离散化处理,然后用区间编号代替待压缩数据进行编码压缩,能够极大的提高压缩比。并且,在离散化的过程中,使用机器学习模型对时序数据点预测,并将真实值结合预测值来计算周期项,从而基于周期项对待压缩数据进行离散化,能够提高压缩结果的准确性。
26.另外,用待压缩数据(即真实值)减去机器学习模型输出的预测值(为趋势项),将得到的误差作为周期项,将周期项作为离散化的依据之一,通过去趋势项以减小离散化时数据方差,能够达到提高压缩效果即提高压缩比和准确性的目的。因此,在压缩过程中,依据周期项(即预测值与真实值的差值)来离散化而非依据真实值,能够在压缩波动或是有噪数据时,性能更优。
27.而且,区分了非实时压缩和实时压缩两种情况,并分别有针对性的采用多项式拟合或前馈神经网络,进一步提高压缩结果的准确性。在实时压缩过程中还可以增加反馈机制,有助于最终保障压缩结果的准确性。
28.在解压时,由于此前的压缩结果准确性高,所以解压出的结果与真实值偏差更小。并且,在压缩时可区分离群点和非离群点来分别决定保存的值,可以使得波动大或有噪数据的解压结果误差更小。
附图说明
29.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
30.图1是根据本技术实施例1的一种时序数据的有损压缩方法的流程图;
31.图2是根据本技术实施例1的若干区间的表达示意图;
32.图3是根据本技术实施例1的通过二次多项式拟合的结果示意图;
33.图4是根据相关技术的神经网络的结构示意图;
34.图5是根据本技术实施例1的前馈神经网络的结构示意图;
35.图6是根据本技术实施例1的算术编码过程中上限值、下限值及各字符权值的表达示意图;
36.图7是根据本技术实施例1的算术解码过程中上限值、下限值及各字符权值的表达
示意图;
37.图8是根据本技术实施例1的举例的时序数据的有损压缩方法的流程图;
38.图9是根据本技术实施例1的解压方法的流程图;
39.图10是根据本技术实施例1举例的解压方法的流程图;
40.图11是根据本技术实施例3的电子设备的内部结构示意图。
具体实施方式
41.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
42.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
43.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
44.有损压缩方法在压缩过程中通常需要牺牲掉一些信息以提高压缩比,难以做到在保证压缩结果准确性高的前提下提高压缩比,为了解决该问题,本技术实施例提供一种时序数据的有损压缩方法,能够使得压缩结果有更高的压缩比,同时压缩结果更准确。
45.实施例1
46.图1是根据本技术实施例1的一种时序数据的有损压缩方法的流程图,如图1所示,该方法包括以下流程:
47.s101:根据预设参数将定义域划分成若干区间,并对每个区间进行编号;
48.s102:获取时序数据点的真实值即待压缩数据,对时序数据点通过机器学习模型输出预测值,并根据真实值和预测值计算周期项;
49.s103:根据周期项和区间对待压缩数据进行离散化处理,记录区间编号;
50.s104:将区间编号通过指定编码方式进行压缩,得到编码值。
51.本技术实施例中,将定义域划分成若干区间,根据区间对待压缩数据进行离散化处理,然后用区间编号代替待压缩数据进行编码压缩,能够极大的提高压缩比,并且,在离散化的过程中,使用机器学习模型对时序数据点预测,并将真实值结合预测值来计算周期项,从而基于周期项对波动的待压缩数据进行离散化,能够提高压缩结果的准确性。
52.针对步骤s101,例如,图2是根据本技术实施例1的若干区间的表达示意图,如图2所示,将实数轴切分为有限个的区间,并对每个区间进行编号,图2中将实数轴切分为(-∞,a1],(a1,a2],(a2,a3],(a3,a4],(a4,∞)共五个区间,各区间分别编号为0,1,2,3,0。
53.针对步骤s102,优选的,为了进一步提高压缩结果的准确性,本技术实施例区分非实时压缩和实时压缩两种情况,并分别有针对性的采用不同技术方案。
54.在非实时压缩的情况下,获取多个连续型时序数据点的真实值作为待压缩数据;根据预设的多项式最高项次数的上限对待压缩数据进行多项式拟合,得出拟合值即上述预测值。其中,上述多项式拟合介绍如下:
55.多项式拟合时,使用多项式函数在满足给定条件的情况下将数据点连接起来,可以选取的条件是使得均方误差即数据真实值与拟合值之间差值的平方和达到最小,其中yi是样本i的真实值,是拟合值。其求解方式为loss对每个参数wi,0≤w≤p求偏导,求解方程组p的值预先设置。其解为其中x,y为矩阵形式,x
t
表示x的转置,x-1
表示x的逆。例如,图3是根据本技术实施例1的通过二次多项式拟合的结果示意图,其中黑线是拟合曲线,黑线上的点是拟合值,黑线外的点是真实值。值得说明的是,此处不限于使用多项式拟合,也可使用神经网络、旋转门算法、支持向量机回归等方法,但是通过多项式拟合可以得到更好的效果。
56.在实时压缩的情况下,获取当前时刻的真实值作为待压缩数据,该情况下,在每个时刻每当获取到一个待压缩数据就执行一次压缩。在压缩的过程中需要对时序数据点通过机器学习模型输出预测值,此处使用前馈神经网络进行预测,下文详细介绍。
57.在介绍前馈神经网络之前,先介绍神经网络:比如,图4是根据相关技术的神经网络的结构示意图,其中图(a)表示单个神经元,图(b)表示整个神经网络,该神经网络是由大量的节点(神经元)之间相互连构成的一种模型,每个节点表示一种特定的输出函数,称为激活函数σ,其目的在于增加模型的非线性;节点间的连接表示通过该连接信号的加权值,称为权值ω。给定激活函数,需要寻找权值使得损失尽可能小,可以使用梯度下降法求解。
58.本技术实施例使用前馈神经网络,前馈神经网络中各个神经元按接受信息的先后分为不同的组,每一组可以看作一个神经层,每一层中的神经元接受前一层神经元的输出,并输出到下一层神经元。整个前馈神经网络中的信息是朝一个方向传播,没有反向的信息传播。前馈神经网络可以用一个有向无环路图表示,比如,图5是根据本技术实施例1的前馈神经网络的结构示意图,图5中,前馈神经网络可以看作一个函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。本技术实施例中前馈神经网络的输入层
为当前数据的前r个数据x
n-1
,x
n-2
,

,x
n-r
,输出层为当前数据xn,也就是说用前r个数据来预测当前数据即值得说明的是,此处也可使用其它网络预测趋势,但是使用本技术实施例的前馈神经网络预测效果更好。
59.因此,本技术实施例中需要先训练前馈神经网络,然后在压缩过程中使用训练后的前馈神经网络,其中,训练阶段包括以下步骤:收集指定长度的时序数据点的真实值;输入是当前时刻前预设长度的时序数据点的真实值,输出当前时刻的预测值,根据该预测值和真实值计算损失,并更新网络参数,直到损失收敛,停止训练。比如预设长度为r,那么前馈神经网络的输入是t时刻前的r长度的真实值,输出对t时刻的预测值。
60.在预测阶段,将在前一时刻压缩得到的编码值解压,并将解压值与前一时刻之前的数据组成预设长度的数据;将预设长度的数据输入预训练的前馈神经网络,输出对当前时刻的预测值。比如,预设长度r=10,假设要预测第11个数据,需要将第1-10个数据输入前馈神经网络,输出第11个数据的预测值;在预测当前时刻的第12个数据时,将前一时刻压缩得到的编码值解压(得到的结果记为解压值11),将解压值11与第2-10个数据组成长度为10的数据,然后将该长度为10的数据输入前馈神经网络,输出第12个数据的预测值;在预测当前时刻的第13个数据时,将前一时刻压缩得到的编码值解压(得到的结果记为解压值12),并将解压值12、解压值11和第3-10个数据组成长度为10的数据,然后将该长度为10的数据输入前馈神经网络,输出第13个数据的预测值,以此类推。需要说明的是,上述r是大于0的正整数,当r=1时,前馈神经网络的输入是t-1时刻的数据,输出的是t时刻的预测值。
61.优选的,本技术实施例的压缩方案中关键之一在于离散化,其影响最终的压缩效果(包括压缩比和准确度),同时离散化时数据方差的大小也会对压缩效果产生影响,所以,本技术实施例用待压缩数据(即真实值)减去上文计算的预测值,得到误差,作为上述的周期项,将周期项作为离散化的依据之一。由于预测值是通过多项式拟合或前馈神经网络预测得到,是趋势项,所以通过去趋势项以减小离散化时数据方差,能够达到提高压缩效果即提高压缩比和准确性的目的。值得说明的是,实际中,周期项的计算不仅限于用相减的方式,也可以包括其他运算方式。
62.针对步骤s103,例如,估计周期项的一些属性,包括期望和方差,其中,期望是反映数据平均取值大小的一个指标,对于连续型变量,其定义为μ=∫xf(x)dx,其中f(x)是变量的密度函数,本技术实施例使用的估计方式为的密度函数,本技术实施例使用的估计方式为方差是衡量数据离散程度的一个指标,对于连续型变量,其定义为σ2=∫x2f(x)dx-μ2,本技术实施例使用的估计方式为为上述xi表示第i个样本,n表示样本总量。然后,针对待压缩数据的分布情况,根据均值和方差对周期项进行平移和伸缩,得到调整值;根据调整值处于的区间记录对应的区间编号。
63.优选的,在压缩过程中,若时序数据点对应的周期项与周期项的均值之间的差值绝对值大于预设阈值(例如3σ),则判定为离群点,保存该周期项,记录预设编号(例如为0);否则判定为非离群点,保存落在对应周期项所在区间内的周期项的均值,那么在解压时,可以根据是否为离群点的判断来对时序数据点赋予预先保存的周期项或落在所述周期项所在区间内的周期项的均值,然后按照预测值进行平移,即可得到最终的解压结果。因此,通
过在压缩过程中预先保存数据,以便于在解压时直接赋值,能够提高解压效率。
64.但是,在一些实施例中,也可以放在解压过程中计算时序数据点的赋值,比如,在压缩过程中,估计周期项的均值和方差;根据均值和方差对周期项进行变换(包括平移和伸缩),得到调整值(此处调整值被假设服从指定的分布状态例如标准正态分布),然后根据调整值处于的区间记录对应的区间编号。那么在解压过程中,针对非离群点,根据区间编号对时序数据点赋予区间的平均值;针对离群点,对时序数据点赋予调整值,然后将区间的平均值或调整值进行逆变换(与上述变换操作相反),再按照预测值平移,可得到最终的解压结果。
65.根据上文,通过区分离群点和非离群点来采取不同的赋值方式,在压缩波动或是有噪数据时,可以保障压缩结果的准确性。
66.针对步骤s104,上述指定编码方式可以采用算术编码方式、ppm(prediction by partial matching)编码方式或其它编码方式。需要说明的是,解码方式即为对应编码方式的逆过程。
67.优选的,本技术实施例使用算术编码方式,为无损压缩方式,具体包括:根据编码位数确定编码的上限值和下限值;根据待编码字符中字符的种类数量设置初始的字符总数,并获取预设的权值;依序对每个字符编码时,按照预设计算规则更新上限值和下限值,并更新权值和字符总数;当所有字符编码完成时,记录最终的上限值和下限值之间的一个数值作为编码值。
68.下文举例采用算术编码方式进行整数编码,以下将以8位编码和字符串”abacc”(即待编码字符)为例阐述编码和解码过程,图6是根据本技术实施例1的算术编码过程中上限值、下限值及各字符权值的表达示意图,且图6中(1)、(2)、(3)分别对应于步骤(1)、(2)、(3),其余步骤同理,故省略示图。编码过程如下:
69.(1)初始化:8位编码能表达的最大数字为255,取编码的上限值high为254,最小数字为0,取编码的下限值low为0。已知待编码字符串中只有a、b、c三种字符,故初始的字符总数total为3,设置初始的权值均为1,即三种字符的初始概率均为1/3。设定编码过程中a、b、c三种字符各自的区间下限大小为lowa≤lowb≤lowc,totala、totalb、totalc分别表示a、b、c的字符数,total1、total2、total3分别表示a、b、c的累加字符数,即total2=totala totalb,total3=totala totalb totalc=total,total0=0,上限值的更新规则为high=low floor(total
i-1
*(high-low 1)/total),下限值的更新规则为low=low floor(totali*(high-low 1)/total)-1,其中,i表示当前编码字符在所有字符中的位置,floor()表示向下取整;
70.(2)编码开始:首先第1个字符为a,根据下限值计算规则,low不变;根据上限值计算规则,high=low 1*(high-low 1)/total-1=84,其中,无法整除时向下取整,a的权值和总数total增加1;
71.(3)第2个字符为b,计算low=low 2*(high-low 1)/total=42,high=low 3*(high-low 1)/total-1=62,b的权值和总数total增加1;
72.(4)第3个字符为a,同理可得下限为42,上限为49,a的权值和总数total增加1;
73.(5)第4个字符为c,同理可得下限为48,上限为49,c的权值和总数total增加1;
74.(6)第5个字符为c,此时上下限均为49出现了问题,因此需要将上限值和下限值左
移扩大区间以保证high-low 1≥total,其中high左移补1,low左移补0,左移后溢出位用out存储,out存储了多少位由bits保存;
75.(7)第1次位移:49的8位二进制数为00110001,上限值左移一位补1得到01100011(对应十进制为99),下限值左移一位补0得到01100000(对应十进制为96),此时total=7,out=0b(b表示二进制),bits=1,下限值为96,上限值为99,不满足条件公式high-low 1≥total;
76.(8)第2次位移:01100011左移一位补1得到11000111(对应十进制为199),01100000左移一位补0得到11000000(对应十进制为192),此时total=7,out=00b,bits=2,下限值为192,上限值为199,满足上述条件公式,停止左移;
77.(9)第5个字符为c,计算low=low 5*(high-low 1)/total=197,high=low 7*(high-low 1)/total-1=199,由于已无待压缩字符,记下最终的[197,199]内的某一数,例如magic=198;
[0078]
(10)编码结束:需要的信息包括原字符串只有a、b、c三种字符,初始区间为[0,255),out=00b,bits=2,magic=198。
[0079]
接着介绍解码方式,图7是根据本技术实施例1的算术解码过程中上限值、下限值及各字符权值的表达示意图,且图7中(1)、(2)分别对应于以下步骤(1)、(2),其余步骤同理,故省略示图。解码过程如下:
[0080]
(1)初始化:对每种字符设置初始的权值为1,由此可将初始区间[0,255)分割为[0,85),[85,170),[170,255)三个小区间;
[0081]
(2)将out(out=00b)与magic(magic=198,其中十进制198的二进制表达为11000110)结合起来可以得到x=0011000110b,取x的前8位得到d=00110001b=49。由于d属于a所在区间,所以字符串的第1个字符便是”a”,a的权值和总数total增加1,a所在区间被分割为[0,42),[42,63),[63,85)三个小区间
[0082]
(3)由于d属于b所在区间,所以字符串的第2个字符便是”b”,b的权值和总数total增加1,b所在区间被继续分割;
[0083]
(4)同理,字符串的第3个字符为”a”,a的权值和总数total增加1,a所在区间被继续分割;
[0084]
(5)同理,字符串的第4个字符为”c”,c的权值和总数total增加1,c所在区间被继续分割;
[0085]
(6)此时,上限值为49,下限值为48,total=7,不满足条件公式high-low 1≥total,需要进行位移;
[0086]
(7)第1次位移:x去掉首位,取接下去的8位即d=01100011b=99,上限99,下限96,不满足上述条件;
[0087]
(8)第2次位移:x去掉前2位,取接下去的8位即d=11000110b=198,上限199,下限192,满足上述条件;
[0088]
(9)同理,字符串的第5个字符为”c”,c的权值和总数total增加1,c所在区间被继续分割;
[0089]
(10)此时,上限值为199,下限值为197,total=8,不满足条件公式high-low 1≥total,需要进行移位,经两次移位后的最终结果是上限值为31,下限值为20;
[0090]
(11)此时,d不属于上限值和下限值之间的区间,而d已用尽8位的x,无法再次移位,故解压完成,值得说明的是,若已知字符串长度,也可在解压出的字符串达到该长度时结束解压;
[0091]
(12)解压结束:解压结果为”abacc”。
[0092]
因此,本技术的压缩过程将有损压缩和无损压缩相结合。
[0093]
为了对本技术实施例进行更清楚的说明,下文举例介绍完整的流程,图8是根据本技术实施例1的举例的时序数据的有损压缩方法的流程图,如图8所示包括以下步骤:
[0094]
(0)预备工作,包括输入参数,根据参数进行区间的划分:针对统计学中的概率分布情况,若随机变量x的密度函数为则称x服从正态分布,当μ=0,σ=1时,称x服从标准正态分布。本技术实施例假定调整值服从标准正态分布,对其定义域(-∞,∞)划分,切分为有限个区间,使得每个区间的方差相同,此时方差的计算依赖于定义,具体如下:
[0095]

输入参数a0;
[0096]

划分区间(-a0,a0],计算区间(-a0,a0]的方差;
[0097]

寻找ak》0,k》0使得(a
k-1
,ak]的方差与(-a0,a0]相同;
[0098]

判断ak是否大于3,若是,则最后一个区间为(ak,∞),否则返回第

步;
[0099]

根据分布的对称性得到(-∞,-a0]的区间划分;
[0100]

得到有限个方差相同的区间并给每个区间编号,得到每个区间的区间编号(也可称为区间序号)。
[0101]
需要说明的是,上述分布不限于是正态分布,也可以是t分布,或根据历史数据拟合的分布。
[0102]
接着,请参阅图8的左边流程,在非实时压缩的情况下:
[0103]
(1)输入一组待压缩数据x1,x2,

,xn。
[0104]
(2)对数据进行多项式拟合,自变量是正整数序列{1,2,

,n},因变量是待压缩数据。为了提高压缩比,会预先设置多项式最高项次数的上限p,在此约束下,寻找使得均方误差最小的多项式,得到多项式拟合值差最小的多项式,得到多项式拟合值保存多项式系数。可选的,在实际操作时,可以对多项式系数进行近似保存以提高压缩比,在此情形下多项式拟合值数进行近似保存以提高压缩比,在此情形下多项式拟合值其中是wi的近似,所以可以保存其中一个。
[0105]
(3)将真实值减去多项式拟合值,得到称其为周期项。
[0106]
(4)对周期项进行离散化处理:
[0107]

估计周期项的均值和方差
[0108]

对周期项进行平移和伸缩,得到调整值其中v是一个调整系数;
[0109]

判断调整值zi,1≤i≤n所处于的区间并记录区间编号,由此得到区间编号序列。当每个待压缩数据均已判断完毕后,对非离群点,记录落在对应周期项所在区间内的周期项的均值(四舍五入取整);对于离群点,记录其周期项yi(四舍五入取整)。
[0110]

将区间编号序列通过指定编码方式进行编码,得到编码值。
[0111]
接着,请参阅图8的右边流程,在实时压缩的情况下:
[0112]
(1)准备工作:训练前馈神经网络,以当前时刻前的r个数据x
m-1
,x
m-2
,

,x
m-r
预测当前时刻的数据xm,具体如下:
[0113]

输入的参数,除了上文的a0,还有历史数据长度n、离群点比例阈值rate
[0114]

收集历史数据x1,x2,

,xn,训练前馈神经网络以得到合适的滞后项数r、隐藏层数、每层节点数以及权重。实际操作时可根据现实情况事先给定滞后项数r,为提高压缩比也可给定隐藏层数和每层节点数,保存模型,记为f。此时,估计周期项的均值和方差
[0115]
(2)输入一个当前时刻的新数据x
t

[0116]
(3)将真实值减去前馈神经网络输出的预测值,得到y
t
=x
t-f(x
t-1
,x
t-2
,

,x
t-r
),称为周期项。
[0117]
(4)对周期项y
t
进行离散化处理:
[0118]

对周期项进行平移和伸缩,得到调整值其中v是一个调整系数;
[0119]

判断调整值z
t
所处于的区间并记录区间编号。对于离群点,记录其调整值z
t
(四舍五入取整);对于非离群点,记录区间的平均值。然后,对将区间编号通过指定编码方式进行压缩,得到编码值。
[0120]
(5)反馈机制:更新离群点比例,判断当前时刻前预设时间段之内离群点比例是否大于rate,若是,则返回到第(1)步,从下一时刻开始,重新收集指定长度的时序数据点的真实值并重新训练前馈神经网络,有利于提高模型的预测能力,减小预测值与实际值的偏差,从而有利于最终提高压缩结果的准确度;若离群点比例不大于rate,进行下一步;
[0121]
(6)暂时记录t时刻的解压值用以t 1时刻数据的压缩并跳到第(2)步,其中对t时刻编码值的解压步骤包括:
[0122]

根据区间编号对赋值,针对离群点,对调整值z
t
进行逆变换得到进行逆变换得到针对非离群点,对区间的平均值进行逆变换得到其中μi表示z
t
处于的区间均值,由定义计算得到;
[0123]

将按照前馈神经网络输出的预测值进行平移,得到解压值,即,将加上预测值得到解压值
[0124]
根据上文内容,本技术实施例区分实时压缩和非实时压缩,并通过去趋势项以减
小离散化时数据方差,能够达到提高压缩比,因此,能够降低存储成本,特别是,对于实时压缩来说,可以每当获取一个时序数据就执行一次压缩,用压缩结果代替原始的时序数据进行存储,能够及时释放存储空间。
[0125]
本技术实施例还提供一种解压方法,用于对本技术实施例得到的压缩结果进行解压,图9是根据本技术实施例1的解压方法的流程图,如图9所示,该流程包括以下步骤:
[0126]
s901:获取预先压缩的编码值作为待解压数据;
[0127]
s902:通过指定编码方式所对应的解码方式对待解压数据进行解码,得到区间编号,并恢复出每个数据点的解压值。
[0128]
根据上述内容,由于本技术实施例的压缩结果准确度更高,所以经过解压的结果与真实值误差也更小。
[0129]
作为一个示例,图10是根据本技术实施例1举例的解压方法的流程图,如图10所示,包括以下流程:
[0130]
(1)输入待解压数据;
[0131]
(2)利用算术编码方式所对应的解码方式得到区间编号(即区间序号);
[0132]
(3)根据区间编号赋予每个数据点保存的数据,需要说明的是:若在压缩阶段,对离群点保存调整值,对非离群点保存区间的平均值,则在解压阶段需要对调整值、区间的平均值进行逆变换操作;若在压缩阶段对离群点保存周期项,对非离群点保存周期项的均值,则在解压阶段无需逆变换操作;
[0133]
(4)判断待解压数据的压缩过程是否实时,若实时则跳到第(5)步,否则跳到第(6)步;
[0134]
(5)对每个数据点进行平移,平移值为前r个点计算得到的趋势项(即前馈神经网络输出的预测值,也可称为估计值)f(x
t-1
,x
t-2
,

,x
t-r
),该步骤需要递推进行;
[0135]
(6)对每个数据点进行平移,平移值为该点的多项式拟合值(6)对每个数据点进行平移,平移值为该点的多项式拟合值该拟合值即预测值,也可称为估计值。
[0136]
根据上文,由于此前的压缩结果准确性高,所以解压出的结果与真实值偏差更小。
[0137]
下文提供四个表格分别展示了本技术实施例方案、旋转门压缩法和死区压缩法在给定不同参数的情形下,对同一组数据的压缩效果。其中,在本技术实施例中,对于原数据的多项式拟合,选取多项式最高项系数p为10;对于前馈神经网络,选取历史数据长度n为365、滞后项数(即预设长度)r为7;对于离散化处理,选取了正态分布;并采用了算术编码方式。
[0138]
表1:本技术实施例有损压缩方法的压缩结果(非实时压缩)
[0139][0140]
表2:本技术实施例有损压缩方法的压缩结果(实时压缩)
[0141]
离散化组数均方误差压缩比1120.1725.071312.9023.61159.2722.93195.9220.59233.3219.18331.5517.41650.3814.44。
[0142]
表3:旋转门压缩法的压缩结果
[0143]
压缩阈值均方误差压缩比20.601.0031.531.0843.671.1756.041.26610.091.38714.271.47820.521.58。
[0144]
表4:死区压缩法的压缩结果
[0145]
压缩阈值均方误差压缩比30.541.0041.101.0652.121.1363.581.2175.441.30
87.291.37910.011.46。
[0146]
从上述表格可知,在近似的均方误差(衡量真实值与预测值之间差异程度的一种指标)比较下,通过本技术实施例有损压缩方法得到的压缩结果其压缩比要远高于通过旋转门压缩法、死区压缩法得到的压缩结果。
[0147]
值得说明的是,本技术实施例中的时序数据是指每个数据都对应有时刻(或称时序)信息,因此本技术实施例的技术方案可用于时序数据的压缩场景,包括但不限于:应用于电力领域时,待压缩数据可以是具有时序信息的负载数据;应用于交通领域时,待压缩数据可以是具有时序信息的车流量数据;应用于电商领域时,待压缩数据可以是具有时序信息的交易金额数据,等等,以上仅为例举,不作为限制。
[0148]
实施例2
[0149]
本实施例提供一种时序数据的有损压缩装置,包括划分模块、计算模块、离散化模块和编码模块,并依次通信连接。
[0150]
上述划分模块用于根据预设参数将定义域划分成若干区间,并对每个区间进行编号;
[0151]
上述计算模块用于获取时序数据点的真实值即待压缩数据,对时序数据点通过机器学习模型输出预测值,并根据真实值和预测值计算周期项;
[0152]
上述离散化模块用于根据周期项和区间对待压缩数据进行离散化处理,记录区间编号;
[0153]
上述编码模块用于将区间编号通过指定编码方式进行压缩,得到编码值。
[0154]
在其中一些实施例中,还可包括判断模块,用于区分离群点和非离群点,具体的:若时序数据点对应的周期项与周期项的均值之间的差值绝对值大于预设阈值,则判定为离群点,保存周期项,记录预设编号;否则判定为非离群点,保存落在对应周期项所在区间内的周期项的均值。
[0155]
本实施例还提供一种解压装置,用于对上述有损压缩装置输出的编码值进行解压,该解压装置包括获取模块和与其通信连接的解码模块,其中获取模块用于预先压缩的编码值作为待解压数据;解码模块用于通过指定编码方式所对应的解码方式对待解压数据进行解码,得到区间编号,并恢复出每个数据点的解压值。
[0156]
需要说明的是,本实施例中各步骤的细节可采用合实施例1实现。
[0157]
由于通过本技术实施例方案能够达到提高压缩结果的压缩比,所以从有损压缩装置传输压缩结果至解压装置的过程中,能够达到节约带宽成本、提高数据传输效率的有益效果。
[0158]
因此,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0159]
另外,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0160]
实施例3
[0161]
结合上述实施例中的时序数据的有损压缩方法或解压方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种时序数据的有损压缩方法或解压方法。
[0162]
本技术的一个实施例中还提供了一种电子设备,该电子设备可以是终端。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种时序数据的有损压缩方法或解压方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0163]
在一个实施例中,图11是根据本技术实施例3的电子设备的内部结构示意图,如图11所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图11所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种时序数据的有损压缩方法或解压方法,数据库用于存储数据。
[0164]
本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0165]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0166]
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0167]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献