基于midae模型的缺失能耗数据插补方法、设备及存储介质
技术领域
本发明属于数据预处理
技术领域
,更具体地,涉及一种基于MIDAE模型的缺失能耗数据插补方法、设备及存储介质。背景技术
在工业生产企业中集成了能耗数据采集、能耗数据查询、历史能耗、能耗趋势分析以及能耗状态等功能,在采集数据的过程中,采集数据的传感器设备存在电流不足、电压过大、网络中断以及设备故障等问题,导致采集的部分数据集中断或偏离正常范围的值,造成了采集的数据存在噪声、数据不平衡和数据缺失等问题,影响异常检测精度。由于各种不可控因素,缺失值(MV)广泛存在于各种现实世界数据集中,对于数据分析、数据挖掘和机器学习中使用的许多算法,由于这些算法在处理带有MV的数据集方面无能为力,因此数据完整性是前提。此外,MV的存在会导致信息丢失,可能会导致所采用算法的性能下降。
目前,对于一般数据缺失问题有几种常用的处理方法为:①删除或丢弃所有缺失值的观测值或者样本;②通过人工估算缺失值,即用已知值替换缺失值;③使用均值替换缺失值;④使用相似样本替换缺失值;⑤利用机器学习算法和神经网络构建缺失数据插补模型,从而有效地对缺失数据进行插补。前面四种方法虽然对数据的缺失段进行了插补,但都涉及到了样本的值。由于样本的已知值和均值的不确定性,这些方法都会产生偏差的估计,从而导致较小的方差和标准方差。利用机器学习算法和神经网络构建插补模型进行缺失数据插补,构建模型的过程较为复杂。在现有的一些方法中,通过对一些相似数据记录的同一属性上的值进行加权平均来插补数据记录的属性上的缺失值,例如热甲板插补和KNN插补,它们定义了一些相似性函数并通过前k个相似数据记录插补缺失值。但是,确定合适的相似度函数和相似记录集的合适大小非常困难。
综上可知,上述方法虽然在一定程度上的提高了缺失数据插补精度和效率,但是关于缺失值插补工作很少能有效地捕捉数据属性之间的非线性相关性。故在工业生产环境的缺失数据插补存在精度不高问题。此外,在处理缺失数据之前,缺失数据通常分为单调缺失模式、单变量缺失模式和一般缺失模式。而上述方法仅研究了一般缺失模式,而对于工业生产环境数据采集的过程,出现的缺失数据模式通常具有多种形式,缺失数据普遍是由设备故障、工况变化、挤压工艺变化以及气候变化等多种因素造成的。目前的研究方法无法有效地捕捉挤压机能耗数据属性之间的非线性相关性以及很难适应多种形式的数据缺失模式插补,导致插补精度不高,效率过低问题。
发明内容
本发明为克服上述现有技术中的缺陷,提供一种基于MIDAE模型的缺失能耗数据插补方法、设备及存储介质,能在工业能源管理系统中高效率的处理多种缺失数据模式。
为解决上述技术问题,本发明采用的技术方案是:一种基于MIDAE模型的缺失能耗数据插补方法,包括以下步骤:
S1.将数据集X分为不完整数据集Xm和完整的数据集Xc;所述的数据集X由能源管理系统基于时间序列形式采集到的一系列观测值的集合,它描述挤压机能耗影响特性的数据记录集合,由d个属性组成;
S2.在不完整数据集Xm缺失模式的指导下,将合成MVs引入完整数据集Xc中,生成损失数据集进行训练;
S3.基于缺失指标矩阵Sm识别不完整数据集Xm的缺失模式,如果丢失的模式是单变量缺失模式或单调缺失模式,则转到步骤S4,否则转到步骤S5;
S4.将不完整的数据集Xm划分为几个子集,其中每个子集只包含一个不完整属性,然后基于MIDAE模型对每个不完整属性独立地、顺序地进行MVs插补;
S5.通过训练一个统一的MIDAE模型,对不完全数据集Xm中的MVs进行批量插补;
S6.输出插补数据集X*。
进一步的,所述的MIDAE模型包括:
损坏输入生成:通过标记原始输入x的一些值即合成MVs并用一些默认值填充合成MVs来生成损坏输入为了适应有效地MV插补,训练集中合并生成的损坏输入的缺失模式需要与要插补的不完整数据集的缺失模式一致;
编码:编码器将损坏输入转换成h维嵌入y,
解码:解码器将编码器学习到的嵌入y作为输入,并将其转换回z,z=g(yW'+b');其目的是重建原始输入x;
其中,编码器f(·)和解码器g(·)是分别生成嵌入y和重构z的非线性激活函数;W是d*h编码权重矩阵,b是h编码偏差向量;W'是h*d解码权重矩阵,b'是d解码偏差向量。
进一步的,所述的MIDAE模型的目标函数以最小化MVs的重构误差,表示为:
式中,xi=(xi,1,xi,2,...,xi,d)∈Xt是一个原始观察即未损坏的训练集,zi=(zi,1,zi,2,...,zi,d)∈Zt是输出xi的重建;缺少的指示向量si=(si,1,si,2,...,si,d)对应于xi,表示在xi中出现的MVs,其中如果xi,j是缺失值则si,j=1,否则si,j=0;si·xi和si·zi为分别计算(si·xi)和(si·zi)的内积。
进一步的,在所述的MIDAE模型中,对于数值数据,采用平方误差损失函数:
对于分类数据,采用交叉熵损失函数,并进行一次独热编码:
对于混合类型的数据,将上述两个损失函数加权统一,生成最终的损失函数:
式中,xi'=si·xi,zi'=si·zi和dn是混合数据类型中的数值属性数;ωn和ωc分别是数值属性和分类属性的权重,ωn+ωc=1。
进一步的,基于MIDAE模型的插补方法,基于完整数据集Xc的模型来训练学习有效的MIDAE模型,以及基于学习到的MIDAE模型对Xm中的MVs进行有效插补;在模型训练阶段,MIDAE中损坏的输入生成取决于要插补的不完整数据集的缺失模式
进一步的,在所述的步骤S4中,给定一个数据集X,假设一个观测中有p个不完整属性和d-p个完整属性,对于每个不完整属性ai(1≤i≤p),通过训练MIDAE模型,利用完整属性上的观测值来对ai上的MVs进行插补;一旦一个不完整属性ai上的MVs被插补,ai就被认为是一个完整属性,并用于以后插补其他不完整属性上的MVs;为了减少插补值不准确的影响,从MVs最小的不完整属性开始进行顺序插补。
进一步的,所述的步骤S4具体包括以下阶段:
模型训练阶段:给定一个不完整数据集Xm,对应于每个不完整属性,存在一个不完整子集它由第i个不完整属性缺失值的观测值组成;此外,Xm中的观测值只包含第i个不完整属性和所有的完整属性,即除了第i个属性之外的不完整属性在训练数据准备中被丢弃;
对于不完全子集Xm,i,1≤i≤p,模型训练阶段采用包含与Xm,i相同属性的完整数据集作为输入;为了使学习模型适用于目标数据集即不完整子集Xm,i中MVs的有效插补,在损坏的输入中合成MVs的缺失模式应与Xm,i中的模式一致;由于不完全子集Xm,i只包含一个不完全属性,并且不完全属性上的所有值都缺失,即Xm,i的缺失模式是单变量的,通过删除第i个不完整属性上的所有观察值,并用默认值替换它们,生成损坏的输入接下来,基于生成的损坏输入,训练一个用于插补不完整子集Xm,i中MVs的MIDAE模型;
MV插补阶段:通过使用相应的训练MIDAE模型,在每个不完整子集Xm,i中插补MVs,其中MVs仅出现在第i个不完整属性上;插补从MVs最小值不完全属性开始,即观测值最少的不完全子集和插补后的MVs用于以后的插补;对于第i个不完整属性,首先使用训练阶段采用的默认值初始化Xm,i中的MVs;其中,只把第i个不完全属性上的MVs作为要插补的MVs,而在其他不完整属性上先前插补的MVs作为“基本真值”,以初始化的不完全子集Xm,i作为损坏的输入,通过编码解码中的映射函数,在重构Zm,i中找到Xm中MVs的插补结果;在对所有不完整子集的MVs进行顺序插补后,最终插补的数据集X*由此导出。
进一步的,在所述的步骤S5中:
在模型训练阶段,以完整的数据集Xc作为输入,第一步是通过选择Xc中的一小部分元素作为MVs,并用一些默认值替换它们来生成损坏的输入为了使的缺失模式与Xm的缺失模式一致,根据缺失指示矩阵Sm计算Xm中出现的每个MV排列的比率;在缺失的指示矩阵Sm中,定义一个向量Sm,i∈Sm作为可能的MV排列,以指示MVs在相应的观测oi∈Xm中的出现;
进一步的,所述的步骤S3中缺失模式的识别具体包括:
给定一个不完整的数据集Xm,基于相应的缺失指示矩阵Sm来确定其缺失模式;当第i个观测值的第j个属性上的值缺失时,sij=1,否则sij=0;因此,在矩阵Sm中,每行的和是每个观测值中的MVs数,而每列的和是每个属性上的MVs数;如果行/列的和为零,则观察值中没有MV在属性上;由于完整属性即没有MVs的属性不影响缺失模式的识别,从缺失指标矩阵Sm中去掉和为零的列,并将S'm作为具有d'不完整属性的简化缺失指标矩阵;通过检查S'm中是否只剩下一列属性,确定是否为单变量缺失模式;
对于单调缺失模式和一般缺失模式,根据每个属性上的MVs数按升序对S'm中的不完整属性进行重新排序;然后,对于S'm中的每一行,当第一个“1”即第一个MV出现时,在单调缺失模式的情况下,其后面属性上的所有值都是“1”;具体来说,对于S'm中的第i行,假设第一个“1”的索引是j,从0开始,那么该行中的“1”的数目应该是d'-j,即S'm中的第i行的和应该等于d'-j;如果S'm中的所有行都满足上述条件,则不完整数据集Xm的缺失模式是单调的;否则,不完整数据集Xm的缺失模式是一般的。
本发明还提供一种计算机设备,包括存储器和处理器,所述的存储器存储有计算机程序,所述的处理器执行所述的计算机程序时实现以上所述的方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述的计算机程序被处理器执行时实现以上所述方法的步骤。
与现有技术相比,有益效果是:
1、与传统的DAE模型相比,本发明提出的MIDAE模型主要有两个方面的改进。首先,在MIDAE模型中,利用待插补的不完整数据集中缺失的模式生成损坏的输入。其次,MIDAE模型的目标函数是最小化MVs的重建误差,而不是DAE中整个输入的重建误差。
2、本发明针对不同的缺失模式设计了两种插补方法,可以更好地适应具有各种缺失模式的数据。
综上,本发明所提出的方法可以很好地适应多种缺失数据模式的插补,并具有较高的插补精度,有效避免了挤压机的能耗浪费,保证铝型材企业生产的稳定性,对铝型材企业的节能减排具有深远意义。
附图说明
图1是时间序列、子序列、滑动窗口关系图。
图2是去噪自动编码器架构。
图3是本发明提出的基于MIDAE模型的缺失数据插补方法的框架示意图。
图4是常见的缺失数据模式。
图5是本发明提出的MIDAE模型的架构示意图。
图6是本发明实施例中各种激活函数的插补精度。
图7是本发明实施例中各种缺失模式下的所有比较方法的插补性能。
具体实施方式
附图仅用于示例性说明,不能理解为对本发明的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。附图中描述位置关系仅用于示例性说明,不能理解为对本发明的限制。
一、与本实施例相关的定义
定义1:数据集X由能源原理系统基于时间序列形式采集到的一系列观测值的集合,它描述挤压机能耗影响特性的数据记录集合,由d个属性组成;
序列:指的是按时间顺序排列的、具有相等时间间隔的一系列的集合。设时间序列在ti时刻的记录值为vi(ti),记录时间ti是严格增加的则可将时间序列记为X=<x1=(t1,v1(t1)),x2=(t2,v2(t2)),...,xn=(tn,vn(tn))>,简记为X=<x1,x2,...,xn>。若存在集合其中且1<i1<i2<...<in<n,则称X1为X的子序列。在时间序列基础上,给出滑动窗口的定义为:对于给定长度为n的时间序列X=<x1,x2,...,xn>以及长度为l的滑动窗口ln,将滑动窗口放在X的起始位置,此时滑动窗口对应X上长度为l的一段:序列,然后时间窗口向前移动,再以序列的第2个子序列为起始点,形成另一个长度为l的滑动窗口;依此类推,总共可以得到个长度为l的滑动窗口序列,这些序列用B=(b1,b2,...,bn/m-l+1)表示。时间序列、子序列、滑动窗口的关系如图1所示。图中,x1,x2,...,xn是一段具有时间序列属性的数据,FM表示时间序列子序列,F表示长度为l的滑动窗口。
定义2:不完整观测是某些属性上的值丢失的数据记录,而完整观测是所有属性上的值都存在的数据记录。
定义3:给定一个数据集由N个观测值组成,它可以用N×d的数据矩阵X表示,其中每个向量xi是一个观测值,用z表示。此外,数据集由两个不相交的子集组成:不完整数据集(Xm)和完整数据集(Xc),分别包含X中的不完整观测值和完整观测值。
定义4:给定一个数据集X,缺失的指标矩阵用S=[s1,s2,...,sN]表示,以表示X中的缺失值的个数,缺失值表示为MV,多个缺失值用MVs表示,其中第i个向量si=(si,1,si,2,...,si,d)对应于观测值xi。如果观测值xi的第j个属性上的值丢失则si,j=1,否则si,j=0。
二、对去噪自动编码器进行简单介绍
去噪自动编码器(DAE)是一种强大的非线性映射模型,用于学习原始数据的低维有效表示。在不丢失普遍性的情况下,以图2中的单层DAE模型为例进行说明。
首先,为了使学习到的模型更加鲁棒并避免过拟合,DAE通过添加一些附加的小噪声(例如,各向同性高斯噪声)或强制x中的一部分元素到一些默认值(例如,相应属性上的零或平均值)来将原始输入x损坏为接下来,由编码器将损坏的输入映射到h维隐藏表示(嵌入)其中f(·)是用户指定的激活函数,W是d*h编码权重矩阵,b是h编码偏差向量。通常,嵌入层的维数小于输入,即h<d,这对应于DAE实现数据压缩的机制。最后,通过解码器将得到的嵌入y映射回原始输入x。变数具有类似的公式z=g(yW'+b'),其中g(·)也是用户指激活函数,W',b'分别是h*d解码权重矩阵和d解码偏差向量。
DAE的目标函数是使原始输入x和z(重建)之重建误差最小,即其中θ={W,W',b,b'}是要优化的参数,L(·)是测量输入x和z之间距离的损失函数。值得注意的是,DAE的输出z是损坏输入的确定函数,而不是原始输入x的确定函数。而z应该尽可能接近原始输入x。参数优化的基本思想是,如果嵌入y从损坏的版本中捕捉到原始输入x的有用特征,它可以很好地重构原始输入x的z。因此,通过训练模型使重建误差最小化等于生成一个良好的嵌入,它保留了原始输入中的大部分信息。
综上所述,DAE处理缺失数据有两点优势:(1)尝试对损坏的输入进行编码以获得良好的嵌入;(2)尝试撤消随机应用于原始输入的损坏过程的影响。换言之,除了良好的嵌入学习外,DAE还进行去噪处理,可以用于MV插补。
三、对本发明提出的一种基于MIDAE模型的缺失能耗数据插补方法进行介绍
给定具有MVs的数据集,MIDAE模型旨在捕获MV和非MV之间的隐藏相关性,然后估算MV以进行插补。另外,提出的MIDAE是MV驱动的模型,即对于各种缺失模式,模型训练过程和MV估算策略是不同的。在实施例中,重点介绍三种常见的缺失模式:单变量缺失模式(MV仅在单个属性上发生),单调缺失模式(其中MV集中于几个属性,并且可以根据每个属性上缺失值的百分比方便地对属性进行排序)和一般缺失模式(其中MV可能出现在任何属性上)。在本实施例中,基于MIDAE模型,设计了两种MV插补方法,即MIDAE-Sequential和MIDAE-Batch,以更好地适应具有各种缺失模式的数据。MIDAE-Sequential为每个不完整属性训练一个单独的MIDAE模型(带有MV的属性),并根据相应的学习到的MIDAE模型将MV归入不同的不完整属性。此外,为了进一步提高插补精度,MIDAE-Sequential将MV依次插补到不同的不完整属性上;插补从MV最少的不完整属性开始,插补的MV可用于之后在其他不完整属性上依次插补MV。另一方面,设计的MIDAE-Batch,MIDAE批处理可训练统一的MIDAE模型,并批量插入MV。MIDAE-Sequential和MIDAE-Batch可以简化为用于处理具有单变量缺失模式的数据集的相同方法。MIDAE-Sequential能够处理具有单调缺失模式的数据集,而MIDAE-Batch能够处理具有常规缺失模式的数据集。
如图3所示,为本实施例提出的基于MIDAE模型的缺失数据插补方法的系统框架示意图。给定数据集X以MV为输入,将其分为不完整的数据集Xm和完整的数据集Xc。MV插补过程包括以下六个步骤:
S1.将数据集X分为不完整数据集Xm和完整的数据集Xc;所述的数据集X由能源管理系统基于时间序列形式采集到的一系列观测值的集合,它描述挤压机能耗影响特性的数据记录集合,由d个属性组成;
S2.在不完整数据集Xm缺失模式的指导下,将合成MVs引入完整数据集Xc中,生成损失数据集进行训练;
S3.基于缺失指标矩阵Sm识别不完整数据集Xm的缺失模式,如果丢失的模式是单变量缺失模式或单调缺失模式,则转到步骤S4,否则转到步骤S5;
S4.将不完整的数据集Xm划分为几个子集,其中每个子集只包含一个不完整属性,然后基于MIDAE模型对每个不完整属性独立地、顺序地进行MVs插补;即基于MIDAE-Sequential对每个不完整属性的MVs进行序列插补;
S5.通过训练一个统一的MIDAE模型,对不完全数据集Xm中的MVs进行批量插补,即基于MIDAE-Batch批量插补MV;
S6.输出插补数据集X*。
3.1、MIDAE模型
本发明提出的一种基于DAE的缺失数据插补去噪自动编码器模型(MIDAE),该模型适用于MV插补。如图5所示为单层MIDAE模型,其中损坏输入的每个节点中的红色部分代表合成生成的MVs,而输出层的每个节点中的黄色部分是相应的重构。给定一个原始输入x,MIDAE中各层之间的数据转换描述如下。
损坏输入生成:通过标记原始输入x的一些值即合成MVs并用一些默认值填充合成MVs来生成损坏输入为了适应有效地MV插补,训练集中合并生成的损坏输入的缺失模式需要与要插补的不完整数据集的缺失模式一致;
编码:编码器将损坏输入转换成h维嵌入y,
解码:解码器将编码器学习到的嵌入y作为输入,并将其转换回z,z=g(yW'+b');其目的是重建原始输入x;
其中,编码器f(·)和解码器g(·)是分别生成嵌入y和重构z的非线性激活函数;W是d*h编码权重矩阵,b是h编码偏差向量;W'是h*d解码权重矩阵,b'是d解码偏差向量。
在本实施例中,改进了MIDAE的目标函数,以最小化MVs的重建误差,而不是整个输入观测值的重建误差,如下式所示:
其中xi=(xi,1,xi,2,...,xi,d)∈Xt是一个原始观察(未损坏)的训练集,zi=(zi,1,zi,2,...,zi,d)∈Zt是输出xi的重建。缺少的指示向量si=(si,1,si,2,...,si,d)对应于xi表示在xi中出现的MVs,其中如果xi,j是缺失值则si,j=1,否则si,j=0。si·xi和si·zi为分别计算(si·xi)和(si·zi)的内积。最后,参数θ={W,W',b,b'}被随机初始化,并通过随机梯度下降进行优化。值得注意的是损失函数可以针对不同的数据类型进行定制。对于数值数据,采用平方误差损失函数L(·)如公式(2),而对于分类数据,采用交叉熵损失函数,如公式(3),并进行一次独热编码。此外,对于混合类型的数据,将上述两个损失函数加权统一,生成最终的损失函数,如公式(4)。
其中x’i=si·xi,z’i=si·zi和dn是混合数据类型中的数值属性数。另外,ωn和ωc分别是数值属性和分类属性的权重,ωn+ωc=1。
本实施例提出的MIDAE模型与传统的DAE模型相比,主要有两个方面的改进。首先,在MIDAE模型中,利用待插补的不完整数据集中缺失的模式生成损坏的输入。其次,MIDAE模型的目标函数是最小化MVs的重建误差,而不是DAE中整个输入的重建误差。这么做的理由主要有以下两点:
(1)要构建的机器学习模型是数据相关的,它包含两个直观的含义:(i)训练集和测试集在数据内容上是相似的。(ii)训练集和测试集的分布比较接近。
与机器学习中数据依赖的直观性相似,本实施例提出的MIDAE模型用于在给定的不完全数据集(即测试集)中填充MVs。因此,假设训练集和测试集中的MVs遵循相同的分布(具有特定的偏差限度),特别是当缺失率相对较高时。
(2)正如前面所介绍的,所提出MIDAE目的是准确地恢复MVs。为了实现这一目标,MIDAE通过只关注MVs的重建精度来提取MVs和非MVs之间的相关性,从而实现MV的有效插补。
给定一个具有MVs的数据集X,从深度学习的角度出发,分别将完整数据集和不完全数据集分别作为模型学习的训练集和MV插补的测试集。对于DAE到MV的插补,有两个阶段:
1)模型训练基于完整数据集Xc训练DAE模型;
2)MV插补基于深度学习的DAE模型在不完整数据集Xm中插补MVs。
在模型训练阶段,我们以完整的数据集Xc作为原始输入。损坏的输入是通过随机选择原始输入Xc的一些值作为合成MVs并用默认值(根据用户指定的方案生成)替换MVs的基本真值来生成的。设嵌入和输出(重构)分别为Yc和Zc。通过最小化Xc与其重构Zc之间的重构误差来优化参数θ(即训练DAE模型)。
3.2、基于MIDAE模型插补方法
给定一个具有MVs的数据集X,我们的目标是在不完整的数据集中有效地插补MVs。为了实现这一目标,与使用DAE到MV插补一样,有两个阶段,即基于完整数据集Xc的模型训练来学习有效的MIDAE模型,以及基于学习到的MIDAE模型对Xm中的MVs进行有效插补。
在模型训练阶段,MIDAE中损坏的输入生成取决于要插补的不完整数据集的缺失模式。缺失模式描述了数据中缺失值和非缺失值的排列。通常讨论的缺失模式有三种,即单变量缺失模式、单调缺失模式和一般缺失模式,如图4所示,假设观察中有五个属性a1~a5。对于单变量缺失模式,数据中的MVs只出现在单个属性上。如图4a所示,MVs仅存在于第三属性(即a3)上。而在单调缺失模式下,数据中的MVs出现在多个属性上。此外,当观测值的属性ai上的值丢失时,相同观测值的后续属性aj(j>i)上的所有值也丢失。对于不同的缺失模式,其插补策略是不同的。因此,我们提出了两种基于MIDAE模型的MV插补方法来适应各种缺失数据模式。
3.21、基于MIDAE-Sequential插补方法
MIDAE-Sequential方法的基本思想是对每个不完整属性独立地、顺序地进行MVs插补。
给定一个数据集X,假设一个观测中有p个不完整属性和d-p个完整属性。对于每个不完整属性ai(1≤i≤p),通过训练MIDAE模型,利用完整属性上的观测值来对ai上的MVs进行插补。此外,一旦一个不完整属性ai上的MVs被插补,ai就被认为是一个完整属性,并用于以后插补其他不完整属性上的MVs。为了减少插补值不准确的影响,从MVs最小的不完整属性开始进行顺序插补。例如,挤压机能耗数据中有三个不完整的属性挤压压力、挤压速度和挤压时间。每个不完整属性上的MVs值分别为5、2和1。因此,依次对挤压时间、挤压速度和挤压压力进行插补。
模型训练阶段:给定一个不完整数据集Xm,对应于每个不完整属性,存在一个不完整子集它由第i个不完整属性缺失值的观测值组成。此外,Xm中的观测值只包含第i个不完整属性和所有的完整属性,即除了第i个属性之外的不完整属性在训练数据准备中被丢弃。
对于不完全子集Xm,i,1≤i≤p,模型训练阶段采用包含与Xm,i相同属性的完整数据集作为输入。由前面章节所述,为了使学习模型适用于目标数据集(即不完整子集Xm,i)中MVs的有效插补,在损坏的输入中合成MVs的缺失模式应与Xm,i中的模式一致。由于不完全子集Xm,i只包含一个不完全属性,并且不完全属性上的所有值都缺失,即Xm,i的缺失模式是单变量的,我们通过删除第i个不完整属性上的所有观察值,并用默认值(根据用户指定的方案生成)替换它们,生成损坏的输入接下来,基于生成的损坏输入,训练一个用于插补不完整子集Xm,i中MVs的MIDAE模型。
MV插补阶段:在这个阶段,通过使用其相应的训练MIDAE模型,在每个不完整子集Xm,i中插补MVs(其中MVs仅出现在第i个不完整属性上)。如前面所述,插补从MVs最小值不完全属性开始,即观测值最少的不完全子集和插补后的MVs用于以后的插补。对于第i个不完整属性,我们首先使用训练阶段采用的默认值初始化Xm,i中的MVs。注意,只把第i个不完全属性上的MVs作为要插补的MVs,而在其他不完整属性(在对第i个不完整属性进行MV插补时作为完整属性)上先前插补的MVs作为“基本真值”。以初始化的不完全子集Xm,i作为损坏的输入,通过编码解码中的映射函数,在重构Zm,i中可以找到Xm中MVs的插补结果。在对所有不完整子集的MVs进行顺序插补后,最终插补的数据集X*由此导出。
3.22、MIDAE-Batch插补方法
MIDAE-Batch插补方法的基本思想是通过训练一个统一的MIDAE模型,对不完全数据集Xm中的MVs进行批量插补。
在模型训练阶段,以完整的数据集Xc作为输入,第一步是通过选择Xc中的一小部分元素作为MVs,并用一些默认值替换它们来生成损坏的输入为了使的缺失模式与Xm的缺失模式一致,根据缺失指示矩阵Sm计算Xm中出现的每个MV排列的比率;在缺失的指示矩阵Sm中,定义一个向量Sm,i∈Sm作为可能的MV排列,以指示MVs在相应的观测oi∈Xm中的出现。
3.3、缺失模式识别
通常讨论缺失数据模式有三种,即单变量缺失模式、单调缺失模式和一般缺失模式。
如图4所示,假设观察中有五个属性a1~a5对于单变量缺失模式,数据中的MVs只出现在单个属性上。如图4a所示,MVs仅存在于第三属性(即a3)上。在单调缺失模式下,数据中的MVs出现在多个属性上。此外,当观测值的属性ai上丢失时,相同观测值的后续属性aj(j>i)上的所有值也丢失。如图4b所示,当观测的属性a2上的值丢失时,a3~a5上的所有值也丢失,即不完整属性上的MVs的比例是单调的。对于一般的缺失模式,MVs可能随机出现在任何属性上。
具体地说,给定一个不完整的数据集Xm,基于相应的缺失指标矩阵Sm来确定其缺失模式。根据定义4,当第i个观测值的第j个属性上的值缺失时,sij=1,否则sij=0。因此,在矩阵Sm中,每行的和是每个观测值中的MVs数,而每列的和是每个属性上的MVs数。如果行(列)的和为零,则观察值中没有MV(在属性上)。由于完整属性(即没有MVs的属性)不影响缺失模式的识别,则从缺失指标矩阵Sm中去掉它们(和为零的列),并将S'm作为具有d'不完整属性的简化缺失指标矩阵。通过检查S'm中是否只剩下一列(属性),可以很容易地确定单变量缺失模式。接下来,介绍如何确定Xm的缺失模式是否单调。
首先,我们根据每个属性上的MVs数按升序对S'm中的不完整属性进行重新排序。然后,对于S'm中的每一行,当第一个“1”(即第一个MV)出现时,在单调缺失模式的情况下,其后面属性上的所有值都是“1”。该判断准则是根据前面介绍的单调缺失模式的定义来确定的,即当一个观测值的属性上的值缺失时,同一观测值的后续属性上的所有值也缺失。具体来说,对于S'm中的第i行,假设第一个“1”的索引是j(从0开始),那么该行中的“1”的数目应该是d'-j,即S'm中的第i行的和应该等于d'-j。如果S'm中的所有行都满足上述条件,则不完整数据集Xm的缺失模式是单调的;否则,不完整数据集Xm的缺失模式是一般的。
实施例
本实施例的实验环境均在处理器为[email protected],内存16G,Windows 7 64位系统下进行,所有程序均使用Python实现,对本文所提出的插补方法进行有效性的实验评估。
1、试验数据
本实施例的实验数据主要来自华南某铝型材企业能源管理系统采集的数据库,所选择的生产设备型号为SY-3600Ton的挤压机设备在2020年6月至9月采集的生产数据作为数据的样本集,其中数据为每20秒采集一次的时间序列数据。它包含8991个观测值,每个观测值有6个属性值分别为:电能、出口温度、挤压温度、挤压压力、挤压时间和挤压速度。为了全面评估所提出的MV插补方法在采集的观测值上的性能,以缺失率为变量,在下面的评估中通过改变缺失率来展示各种MV插补方法的插补精度。因此,认为上述数据集都是原始的干净数据集,并根据不同的缺失率生成不同规模的不完整数据集。例如,当缺失率为5%时,从整个数据集中随机选取5%的观测值组成不完整的数据集来报告插补结果,其余的观测值组成完整的数据集来训练学习模型。
此外,为了生成具有各种缺失模式的不完整数据集Xm,我们以不同的方式介绍MVs,详情如下。
单变量缺失模式:随机选择一个属性ai(1≤i≤d)作为不完整属性,并在Xm中标记观测值属性ai上的所有值。
单调缺失模式:首先,随机选取一半的属性作为不完整属性。接下来,在Xm中,每个不完整属性上的MVs比例从100%逐渐减少,步长为10%。此外,不完整属性ai上的MVs是从先前不完整属性ai-1选择的观测值中随机选择的。最后,将选定为MVs的值标记出来。
一般缺失模式:对于Xm中的每个观测值,随机选择一半的属性作为不完整属性,并在不完整属性上标记值。
2、评价指标
为了评估各种MV插补方法的性能,本实施例采用数据预测领域中常用的均方根误差(RMSE)作为评价指标。
RMSE:测量误差的均方根误差。从数学上来说,它可以表示为:
式中,Y’表示预测值大小,Y表示实际值大小。
采用均方根误差(RMSE)来测量插补结果与数据真实值之间的插补偏差。RMSE越低,代表插补结果越接近真实情况,因此插补具有更好的性能。
3、模型设置
为了便于实验评估和促进更快的收敛,首先对采集的数据观测值进行归一化预处理。此外,对每个测试重复10次,并报告平均结果,以获得可靠的实验结果。对于统计插补方法即KNN,参数k设置为10,因为在k=10的情况下,所有的数据集在可接受的时间范围内的插补误差都很低。对于机器学习方法即贝叶斯模型,将子矩阵或者潜在空间的维数指定为输入维数的一半。对于基于深度学习模型的MIDAE-Sequential和MIDAE-Batch方法,每个模型使用时期1000,学习率0.01和批量大小为256进行训练。另外,由于基于这种简单模型的插补精度比现有的MV插补方法要低。因此,本实施例中的MIDAE模型具有一个隐藏(嵌入)层。
4、选择激活函数
本发明所提出的基于MIDAE模型的插补方法是深度学习模型,需要确定最佳性能的深度神经网络结构。由于不同的激活函数会影响数据集和应用程序的性能,因此在本实施例中使用各种激活函数(包括Simgoid、TanH、ReLU、Softplus和ELU)来验证MIDAE-Sequential和MIDAE-Batch的性能,各种不同激活函数的实验性能如图6所示。
图6通过不同的缺失率显示了具有不同激活函数的MIDAE-Sequential和MIDAE-Batch的插补性能。对于实验的数据集,MIDAE-Sequential和MIDAE-Batch在各种缺失模式下采用Sigmoid激活函数,均获得最低的RMSE,说明本文所提出的两种方法均在Sigmoid激活函数下具有最佳性能。因此,我们采用Sigmoid函数作为MIDAE模型的默认激活函数。
5、对比分析
将本发明提出的MIDAE-Sequential和MIDAE-Batch方法与现有MV插补方法进行比较,其实验结果如图7所示。
图7显示了具有各种缺失模式的挤压机能耗数据集上所有比较方法的插补性能。对于基于邻域的插值方法(即KNN),通过使用观测值之间的相互关系来插值MVs,而本发明提出的基于MIDAE的插值方法通过使用内部插值法来插值MVs。对于朴素贝叶斯来说,通过探索数据的协方差矩阵来插补MVs,从而容易低估数据的复杂相关性,导致插补精度不令人满意。从图7可以看出,基于MIDAE的方法取得了最低的RMSE,因为提出的MIDAE模型有效地捕获了数据中MV和非MV之间的非线性相关性,并且在不同的缺失数据模式下表现出良好的性能。
表1所提方法与其他方法在不同缺失数据模式下的平均RMSE值
表1总结了本发明所提方法与其他方法在不同缺失模式的挤压机能耗数据集下的平均RMSE值,可以看到MIDAE-Sequential和MIDAE-Batch方法在不同缺失数据模式下的RMSE值总取得最小值,表明了本发明提出的基于MIDAE的插补方法在插补精度方面总是取得最佳效果。此外,对于单变量缺失模式的数据集,MIDIA-Sequential和MIDIA-Batch均表现良好。对于具有单调丢失模式的数据集,MIDIA-Sequential的性能优于MIDIA-Batch,而对于具有常规丢失模式的数据集,MIDIA-Batch的性能优于MIDIA-Sequential。因此,本发明所提出的方法可以很好地适应多种缺失数据模式的插补,并具有较高的插补精度。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。