数据压缩方法和装置与流程

文档序号:13912510阅读:139来源:国知局
本发明涉及数据处理领域,更具体地,涉及数据压缩方法和装置。
背景技术
:数据的压缩技术分为无损压缩和有损压缩两大类:无损压缩一般采用去冗余编码的方式,具有较小的压缩比;有损压缩则比较多样化,一般基于单变量的变化规律进行有效预测从而实现数据压缩,具有较大的压缩比。基于主成分分析(pca:principlecomponentsanalysis)的数据压缩算法是一种有损压缩算法,根据不同变量之间的线性相关性进行去冗余,从而实现数据降维和数据压缩。但是,目前的基于主成分分析的数据压缩算法,大多需要预先选取批量数据进行主成分分析,当新产生的数据不能被当前主成分很好地重构时,则需要进行主成分的更新。下面具体进行说明。表1日期时间传感器1传感器2……传感器n2016/3/1515:25:360.50.20.92016/3/1515:25:450.40.20.52016/3/1515:25:520.10.30.72016/3/1515:25:580.90.40.22016/3/1515:26:060.20.00.1以上面的表1所示的scada(supervisorycontrolanddataacquisition,数据采集与监视控制)数据为例,假设其中不存在缺失数据,则可以对该scada数据进行数据预处理,得到下述数值矩阵a。对于上述矩阵a,通过基于主成分分析的数据压缩算法进行数据压缩的过程如下。首先,进行奇异值分解(svd)(或者等价地对ata进行特征值分解),来得到主成分向量和线性变换矩阵:a=uσv*(2)其中,u和v为酉矩阵;σ为对角阵,其对角元素按照从大到小排列,称为a的奇异值;v*表示v的共轭转置矩阵。假设a的非零奇异值共有k个或较大的奇异值有k个,则取前k个奇异值组成对角阵σk,则σk→σ(3)其中,“→”表示近似于,当k为非零奇异值个数时,σk与σ等价。此时,矩阵a可近似表示为如下形式:其中,uk和vk分别为u和v的前k列组成的矩阵。该过程确定了主成分的个数和向量。接着,根据下述式(5),进行数据的降维压缩:根据式(5)得到的矩阵b就是对矩阵a降维压缩之后的数据。另外,对于上述降维压缩之后的矩阵b,在需要进行解压缩时,按照如下方式进行:就是解压缩之后的矩阵。由以上可见,在主成分分析、即式(4)之后,只要保存矩阵vk即可进行数据的压缩和解压缩。以上为当矩阵a的全部元素已知时,进行主成分分析对数据进行压缩和解压缩的过程。但是,目前的主成分分析算法一般只能依赖无缺失的批量数据进行计算,在由于数据传输错误等原因引起scada数据不完整的情况下,无法进行奇异值分解等主成分分析,一般只能通过去除不完整数据部分,再进行主成分分析计算。但是这种简单的处理方式可能会造成部分数据模态的丢失,使得生成的主成分不准确,从而造成较大的重构误差。此外,不仅是scada数据,其他类型数据的压缩也都存在这样的问题。技术实现要素:本发明是鉴于以上问题而提出的,其目的在于提供能够实现包含缺失数据的多组数据的数据压缩的数据压缩方法和装置。根据本发明的一方面,提供一种数据压缩方法,包括:获取多组数据;对所述多组数据所组成的数值矩阵进行概率矩阵分解;以及利用所述概率矩阵分解的结果进行所述多组数据的压缩。根据本发明的另一方面,提供一种数据压缩装置,包括:数据获取单元,其获取多组数据;概率矩阵分解单元,其对所述多组数据所组成的数值矩阵进行概率矩阵分解;以及压缩单元,其利用所述概率矩阵分解单元的分解结果进行所述多组数据的压缩。根据本发明的另一方面,提供一种计算机可读介质,其存储有计算机程序,当所述计算机程序被处理器执行时实现上述的数据压缩方法的步骤。根据本发明的另一方面,提供一种计算机设备,包括:处理器;存储器,存储有能够在处理器上执行的计算机程序,当所述计算机程序被所述处理器执行时,实现上述的数据压缩方法的步骤。根据本发明,通过概率矩阵分解(probabilisticmatrixfactorization,pmf)利用已知部分的数据进行迭代计算,能够实现包含缺失数据的不完整多组数据的数据压缩。这样,不会造成部分数据模态的丢失,进而不会造成较大的重构误差。附图说明图1示出根据本发明的实施方式的数据压缩方法的流程图。图2示出根据本发明的实施方式的数据压缩装置的框图。具体实施方式以下,参照附图说明本发明的实施方式。在本发明中,对于多组数据,通过利用概率矩阵分解进行分析,来实现数据压缩。此外,需要说明的是,在本发明中,多组数据是2组以上且各组分别包含多个数据的数据,所述多个数据的数据类型为数值型或能够转换为数值型的类型,进而所述多个数据的数据个数优选相同。图1示出根据本发明的实施方式的数据压缩方法的流程图。参照图1,首先在步骤s110,获取多组数据,将其组成为对应的数值矩阵。具体地,从数据源获取多组数据。在一个实施例中,该数据源是一个或多个监测设备,即在该步骤中从一个或多个多个监测设备按时间顺序获取多组监测数据,作为所述多组数据。举例来说,假设多组数据为下面的表2所示的scada数据,则在本步骤中,从多个作为监测设备的传感器按时间顺序获取该多组数据,将其组成为式(7)所示的数值矩阵a,该矩阵a的每一行代表一个时刻的scada数据,每一列表示一个传感器的测量结果。表2日期时间传感器1传感器2……传感器n2016/3/1515:25:360.50.20.92016/3/1515:25:450.40.2?2016/3/1515:25:520.1?0.72016/3/1515:25:580.90.40.22016/3/1515:26:060.20.00.1其中的“?”表示缺失值。此外,上面的例子示出的是多组数据为scada数据且数据本身就是数值型数据的情况,但实际上,即使是scada数据,根据传感器数据类型的不同,也会包含数值型和枚举型两种类型,数值型又可分为整型和浮点型两种;枚举型又可分为布尔型和类别型两种。因此,为了能够对所获取的数据进行压缩,在步骤s110中,还根据需要对所述多组数据进行数据类型转换的预处理,即将非数值型变量转化为数值型变量,比如布尔型变量用0和1表示;然后将整型变量转化为浮点型变量,以便于进行数据压缩。上述数据类型转换过程在数据解压重构时再将浮点型变量转换成原有的数据类型。此外,在本步骤中,除了上述数据类型转换,根据实际需要可能还要对多组数据进行归一化的预处理。以scada数据为例来说,数据归一化处理即将每个传感器的数据都线性变换到0~1范围之内,以防舍入误差对部分字段产生不同程度的影响。实际上,为了实现归一化,一般只要去均值化处理即可,即scada数据中每个传感器的数据都减去该传感器产生的全部数据的均值,对于scada数据以外的其他类型数据而言,就是将每一列的数据都减去该列的全部数据的均值。同样地,当数据解压重构时,归一化处理也要反过来进行,故应保存归一化过程中所使用的数据的均值、最大最小值等关键信息。需要说明的是,虽然上面示例示出的是多组数据为scada数据的情况,但并不限于此,在本发明中,数据的来源可以多种多样,比如人的身高体重数据、经济增长数据等在时间上有关联的数据,另外也可以是在空间上有关联的数据,甚至也可以是彼此没有关联的数据等等。接着,在步骤s120,对所述数值矩阵进行概率矩阵分解。概率矩阵分解是一种基于概率图模型的矩阵分解方法,与现有技术的主成分分析中的奇异值分解的区别在于不一定满足正交性,其通过梯度下降方法对分解后的矩阵进行迭代优化。具体地,概率矩阵分解如下式(8)所示是如下形式的分解:对于数值矩阵a={aij},求解第一因子矩阵uk和第二因子矩阵vk,将第一因子矩阵uk与第二因子矩阵vk的共轭转置矩阵vk*的乘积作为数值矩阵a的概率矩阵分解的结果。需要说明的是,上述式(8)中的第一因子矩阵uk不一定是酉矩阵,而第二因子矩阵vk是酉矩阵,vk*表示vk的共轭转置矩阵。可以看出,概率矩阵分解的结果与现有技术的主成分分析中的奇异值分解(式(4))的结果不同,去掉了中间的对角阵σ。进而,本发明中的概率矩阵分解的根本思想为:在数值矩阵a的概率矩阵分解中,求解这样的第一因子矩阵uk及第二因子矩阵vk,即该第一因子矩阵uk及第二因子矩阵vk最小化所述数值矩阵a中的各元素aij和该第一因子矩阵uk及第二因子矩阵vk中的相应元素的目标函数。具体来说,首先确定一个维数、即主成分个数k,也可以认为数值矩阵a中的前k列,然后迭代求解第一因子矩阵uk和第二因子矩阵vk,使得如下目标函数最小:其中,ui和vj分别为矩阵uk和vk的第i个和第j个行向量的转置,λ为规范项权重系数,||ui||2=uitui。具体地,上述概率矩阵分解的过程如下:(1)随机初始化变量ui和vj;(2)令计算梯度和(3)根据上述梯度更新ui和vj,其中α和β为设定的步长;(4)计算(5)重复上述(3)和(4),直到达到预定的收敛条件,例如φt+1<ε或|φt+1-φt|<ε,其中ε为设定的阈值。上述的概率矩阵分解的过程可以采用交替最小二乘法、levenberg-marquardt算法或wiberg算法等来具体实现。另外,从以上可以看出,由于每次迭代仅需要一个已知数据进行参数更新,因此即使数值矩阵a中有缺失数据,概率矩阵分解也可以处理该数值矩阵的分解。接着,在步骤s130,利用所述概率矩阵分解的结果进行所述多组数据的压缩。具体地,基于下述式(10),将概率矩阵分解的结果与第二因子矩阵vk相乘来进行数据的降维压缩:根据式(10)得到的矩阵b就是对数值矩阵a进行降维压缩之后得到的压缩后的数据。另外,由于在矩阵b的解压缩时需要使用第二因子矩阵vk的共轭转置矩阵、即所以需要保存该矩阵。接着,在可选的步骤s140,在需要时,对所述压缩后的数据进行解压缩。具体地,从上述式(10)可以看出,在数据降维压缩之后只剩下第一因子矩阵uk(一般k<<m,m为a的列数),所以解压重构时只要将其直接乘以第二因子矩阵vk的共轭转置矩阵即可得到解压缩后的数据。因此,按照下述式(11)对降维压缩后的数据进行解压缩。就是解压缩之后的矩阵。此外,在该解压缩步骤s140中,在解压缩后,还需要进行与步骤s110中的数据预处理相逆的过程,以将解压缩后的数据变换为原类型数据。根据本实施方式的数据压缩方法,由于概率矩阵分解在每次迭代时仅需要一个已知数据进行参数更新,因此通过在数据压缩中使用概率矩阵分解进行矩阵分解,即使多组数据中有缺失数据,也能够高精度地进行其对应的数值矩阵的分解,进而实现多组数据的降维压缩,而不会造成部分数据模态的丢失,进而不会造成较大的重构误差。此外,由于能够实现有缺失数据的多组数据的大幅压缩,所以节省存储空间和传输成本。进而,由于概率矩阵分解中参数自动迭代更新,所以计算复杂度低。在同一发明构思下,本发明提供与上述的数据压缩方法相对应的数据压缩装置。图2示出根据本发明的实施方式的数据压缩装置的框图。如图2所示,本实施方式的数据压缩装置200包括:数据获取单元210、概率矩阵分解单元220、压缩单元230和可选的解压缩单元240。数据获取单元210获取多组数据,将其组成为对应的数值矩阵。具体地,数据获取单元210从数据源获取多组数据。在一个实施例中,该数据源是一个或多个监测设备,即数据获取单元210从一个或多个监测设备按时间顺序获取多组监测数据,作为所述多组数据。此外,根据需要,数据获取单元210还对该多组数据进行数据类型转换、归一化等预处理,并保存归一化过程中所使用的数据的均值、最大最小值等关键信息。概率矩阵分解单元220对所述数值矩阵进行概率矩阵分解。具体地,概率矩阵分解单元220对于数值矩阵a={aij},求解第一因子矩阵uk和第二因子矩阵vk,将第一因子矩阵uk与第二因子矩阵vk的共轭转置矩阵vk*的乘积作为数值矩阵a的概率矩阵分解的结果。进而,概率矩阵分解单元220在数值矩阵a的概率矩阵分解中所求解的是这样的第一因子矩阵uk及第二因子矩阵vk,即该第一因子矩阵uk及第二因子矩阵vk最小化所述数值矩阵a中的各元素aij和该第一因子矩阵uk及第二因子矩阵vk中的相应元素的目标函数。更具体地,概率矩阵分解单元220根据上述式(9)进行概率矩阵分解,得到式(8)所示形式的矩阵分解结果。进而,概率矩阵分解单元220进行概率矩阵分解的过程与上面的实施方式中的步骤s120所示的过程相同,在此省略详细说明。压缩单元230利用概率矩阵分解单元220的分解结果进行所述多组数据的压缩。具体地,压缩单元230将所述概率矩阵分解的结果与所述第二因子矩阵vk*相乘,以得到压缩后的数据。更具体地,压缩单元230基于上述式(10),进行数据的降维压缩,并保存通过概率矩阵分解得到的、在矩阵的解压缩时需要使用的分解矩阵。解压缩单元240对降维压缩后的数据进行解压缩。具体地,解压缩单元240将通过压缩单元230压缩后的数据与所述第二因子矩阵vk的共轭转置矩阵vk*相乘,以得到解压缩后的数据。更具体地,解压缩单元240按照上述式(11)对降维压缩后的数据进行解压缩。此外,在解压缩后,解压缩单元240还需要进行与数据获取单元210对所述多组数据进行的预处理相逆的处理,以将解压缩后的数据变换为原类型数据。本实施方式的数据压缩装置在功能上能够实现上面的实施方式的数据压缩方法。根据本发明的一个实施方式,还提供一种计算机设备。所述计算机设备包括处理器和存储器,存储器存储有能够在处理器上执行的计算机程序,当所述计算机程序被处理器执行时,实现根据本发明的实施方式的数据压缩方法的步骤。此外,应该理解,根据本发明示例性实施方式的装置中的各个单元可被实现硬件组件和/或软件组件。本领域技术人员根据限定的各个单元所执行的处理,可以例如使用现场可编程门阵列(fpga)或专用集成电路(asic)来实现各个单元。此外,根据本发明示例性实施方式的方法可以被实现为计算机可读记录介质中的计算机程序。本领域技术人员可以根据对上述方法的描述来实现所述计算机程序。当所述计算机程序在计算机中被执行时实现本发明的上述方法。尽管已经参照其示例性实施方式具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1