一种基于在线PCA的工业系统监测数据恢复方法
技术领域
本发明属于工业系统监测数据恢复技术领域,具体涉及一种基于在线 PCA的工业系统监测数据恢复方法。
背景技术
随着工业在我国国民经济中所占比重越来越大,其对于提高人们生活品质的意义也越来越突出。同时,在工业系统中的安全问题也得到越来越多的关注。对于普通工业系统来说,通过从监测数据中挖取重要信息进而反映其状态是最有效的监测方式。而工业系统一般通过安装的传感器传递状态信息,通常情况下多个传感器并行工作传递数据信息。但是当其中某个传感器或者传送设备出现故障导致信息传送失败,但不影响整个系统正常运行,此时该传感器的部分数据信息就会出现缺失现象。如果数据丢失密度较小的话,通常可以通过各种多项式插值、线性插值等方法进行数据恢复。当数据缺失密度较大,普通插值方法无法对其进行准确恢复。为解决这一问题,可以利用监测数据之间的相关性,可以对故障传感器的部分缺失数据信息进行恢复。但是有效传感器的数据量较大,直接用其信息进行恢复,计算量较大,所以对其进行降维即数据压缩,再利用压缩后的数据对故障传感器的缺失数据进行恢复。本发明基于以上,提出一种基于在线PCA的工业系统监测数据恢复方法。该方法对系统的缺失数据可进行实时恢复,同时又可以保证计算量,提高了数据恢复的效率,为工业中的安全问题提供了一定的保障。
发明内容
本发明的目的是提供一种基于在线PCA的工业系统监测数据恢复方法,该方法可实时对相关性很强的缺失数据进行准确恢复,并对工业系统的状态有一定的了解。
本发明所采用的技术方案是,一种基于在线PCA的工业系统监测数据恢复方法,具体按照以下步骤实施:
步骤1、对工业系统的监测数据进行采集,并按时间序列排序;
步骤2、基于在线PCA方法建立降维模型,对步骤1中的采集数据进行降维,即对采集数据进行压缩;
步骤3、基于堆栈降噪稀疏自编码器网络建立模型,并将降维后数据分别分成两部分:训练集和测试集,通过训练集来训练堆栈降噪稀疏自编码器模型,将测试集数据代入训练好的模型,并通过该训练好的模型,对缺失数据进行恢复。
本发明的特点还在于,
步骤1具体按照以下步骤实施:
步骤1.1、先对工业系统的无故障传感器进行采样,同时正常传感器采集到的监测数据用X={x1,x2,…,xN}∈Rd×N表示,其中,X包含d个无故障传感器的数据信息,间隔1s采样一次,采样次数为N,第t个时间点的采样数据信息用xt表示,且t=1,2,…,N,xt=[xt1 xt2… xtd]T;
步骤1.2、对工业系统的故障传感器进行采样,数据信息用 Y={y1,y2,…,yN}∈Rs ×N表示,其中s表示故障传感器的个数,正常采样的情况下采样个数为N,同时假设故障传感器在某一时刻出现问题,其前百分之九十为正常监测数据,后百分之十为缺失数据。
本发明中以轴温数据为例,在步骤1.1和步骤1.2中分别取值d=31,s=1。
步骤2具体按照以下步骤实施:
步骤2.1、输入采样数据X和所需参数:计算采样数据的X的Frobenius 范数和输入目标维数k,其中,k<d,同时需要满足条件如果出现不满足该条件的数据,去掉该采样数据;
步骤2.2、初始矩阵U、矩阵C和阈值θ:分别设置矩阵规模为U∈Rd×k, C∈Rd×d,且初始时矩阵U和C的元素全部为零,设置阈值
步骤2.3、进入循环过程,当按时间序列输入高维采样数据xt时,更新矩阵U和C,同时每输入一个采样样本xt,对应输出该样本的低维数据zt,此处所述的低维为k维。
步骤2.1中目标维数k即低维数据的输出维数,且取k=15。
步骤2.3具体按照以下步骤实施:
步骤2.3.1、输入采样数据xt,同时设置高维数据xt的残差向量 rt=xt-U*U*xt;
步骤2.3.2、判断是否满足条件||C+rtrt T||2≥θ,如果满足,则执行步骤 2.3.3~步骤2.3.5,反之,直接执行步骤2.3.5;
步骤2.3.3、对矩阵C进行特征值分解,得到最大特征值λmax和该特征值对应的特征向量u;
步骤2.3.4、更新信息矩阵和参数:用u代替矩阵U的首个非零列,同时对rt和C按照以下公式进行更新:
rt=xt-U*U*xt (1)
C=C-λmax*u*uT (2)
步骤2.3.5、矩阵更新和低维数据输出表示:矩阵C的更新公式低维数据输出zt=U*xt;
当满足条件t=N时结束循坏。
步骤3具体按照以下步骤实施:
步骤3.1、建立一层自编码器网络,分别为输入层、隐层和输出层,单层编码器按照其输入等于输出训练网络,计算对应的权值和阈值,其中,用到的堆栈降噪自编码网络需要在其输入端加入噪声;
步骤3.2、建立多层自编码器网络,并对网络进行训练:第一个自编码器网络输入层神经元个数为在线降维后数据的维数k,隐层神经元个数设为 q1,同理第i个隐层的神经元个数用qi表示,在训练单层网络时,输出层神经元个数与输入层神经元个数相等,第一个自编码网络训练完之后,将隐层的输出作为编码器作为第二个自编码器网络的输入,以此类推,前一个自编码网络隐层的输出为下一个编码器网络的输入,并对各个网络层之间的连接权值和阈值进行初始化;
步骤3.3、通过训练集对网络进行训练,直到达到收敛条件为止,再将测试集代入训练过的多层网络,对故障传感器的缺失数据进行恢复。
步骤3.1中在堆栈降噪自编码网络输入端加入高斯白噪声。
步骤3.2中建立三层神经网络,且隐层神经元的个数q1、q2、q3分别取 25、20、25,在输入层加入100dB的高斯白噪声。
本发明的有益效果是,一种基于在线PCA的工业系统监测数据恢复方法,建立在线降维模型和堆栈降噪自编码网络,分别对采样数据进行在线降维并通过堆栈降噪自编码网络对部分缺失数据进行恢复。反复训练该网络,调整网络的权值和阈值,使得网络的输出值更接近其真实值。对于高速列车而言,本发明可以通过观察故障传感器的恢复值,进而对列车的状态大致进行恢复,并能够及时采取相应的安全措施,这样就可以避免一系列车事故。
附图说明
图1是本发明一种基于在线PCA的工业系统监测数据恢复方法的总体流程图;
图2是本发明一种基于在线PCA的工业系统监测数据恢复方法中步骤2 的在线降维方法的流程图;
图3是本发明一种基于在线PCA的工业系统监测数据恢复方法中步骤3 的单层自编码网络图;
图4是本发明一种基于在线PCA的工业系统监测数据恢复方法中步骤3 的多层自编码网络图;
图5是本发明以列车的轴温数据为例通过在线PCA降维后恢复得到的仿真效果对比图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种基于在线PCA的工业系统监测数据恢复方法,流程图如图1 所示,具体按照以下步骤实施:
步骤1、对工业系统的监测数据进行采集,并按时间序列排序,具体按照以下步骤实施:
步骤1.1、先对工业系统的无故障传感器进行采样,同时正常传感器采集到的监测数据用X={x1,x2,…,xN}∈Rd×N表示,其中,X包含d个无故障传感器的数据信息,间隔1s采样一次,采样次数为N,第t个时间点的采样数据信息用xt表示,且t=1,2,…,N,xt=[xt1 xt2… xtd]T;
步骤1.2、对工业系统的故障传感器进行采样,数据信息用 Y={y1,y2,…,yN}∈Rs ×N表示,其中s表示故障传感器的个数,正常采样的情况下采样个数为N,同时假设故障传感器在某一时刻出现问题,其前百分之九十为正常监测数据,后百分之十为缺失数据;
步骤2、基于在线PCA方法建立降维模型,对步骤1中的采集数据进行降维,即对采集数据进行压缩,如图2所示,具体按照以下步骤实施:
步骤2.1、输入采样数据X和所需参数:计算采样数据的X的Frobenius 范数和输入目标维数k,其中,k<d,同时需要满足条件如果出现不满足该条件的数据,去掉该采样数据;其中,中目标维数k即低维数据的输出维数,且取k=15;
步骤2.2、初始矩阵U、矩阵C和阈值θ:分别设置矩阵规模为U∈Rd×k, C∈Rd×d,且初始时矩阵U和C的元素全部为零,设置阈值
步骤2.3、进入循环过程,当按时间序列输入高维采样数据xt时,更新矩阵U和C,同时每输入一个采样样本xt,对应输出该样本的低维数据zt,此处所述的低维为k维,具体按照以下步骤实施:
步骤2.3.1、输入采样数据xt,同时设置高维数据xt的残差向量 rt=xt-U*U*xt;
步骤2.3.2、判断是否满足条件||C+rtrt T||2≥θ,如果满足,则执行步骤 2.3.3~步骤2.3.5,反之,直接执行步骤2.3.5;
步骤2.3.3、对矩阵C进行特征值分解,得到最大特征值λmax和该特征值对应的特征向量u;
步骤2.3.4、更新信息矩阵和参数:用u代替矩阵U的首个非零列,同时对rt和C按照以下公式进行更新:
rt=xt-U*U*xt (1)
C=C-λmax*u*uT (2)
步骤2.3.5、矩阵更新和低维数据输出表示:矩阵C的更新公式低维数据输出zt=U*xt;
当满足条件t=N时结束循坏;
步骤2中在线降维后的N个采样数据zt用矩阵Z表示,取其采样个数的前百分之九十作为堆栈降噪自编码器训练集的输入。同时,将故障传感器的监测数据Y中取其采样个数的前百分之九十作为训练集的输出。在步骤3中建立多层自编码网络,训练该网络,使得该网络训练得到的预测数据与真实值之间的误差最小。将在线降维后数据的后百分之十作为测试集的输入,代入之前由训练集训练过的神经网络,对故障传感器的后百分之十的缺失数据进行估计。该网络使用传统的反向传播算法对网络的权值和阈值进行多次调整,使得真实输出和期望输出之间的误差最小。
步骤3、基于堆栈降噪稀疏自编码器网络建立模型,并将降维后数据分别分成两部分:训练集和测试集,通过训练集来训练堆栈降噪稀疏自编码器模型,将测试集数据代入训练好的模型,并通过该训练好的模型,对缺失数据进行恢复,如图3和图4所示,具体按照以下步骤实施:
步骤3.1、建立一层自编码器网络,分别为输入层、隐层和输出层,单层编码器按照其输入等于输出训练网络,计算对应的权值和阈值,其中,用到的堆栈降噪自编码网络需要在其输入端加入噪声;
步骤3.2、建立多层自编码器网络,并对网络进行训练:第一个自编码器网络输入层神经元个数为在线降维后数据的维数k,隐层神经元个数设为 q1,同理第i个隐层的神经元个数用qi表示,在训练单层网络时,输出层神经元个数与输入层神经元个数相等,第一个自编码网络训练完之后,将隐层的输出作为编码器作为第二个自编码器网络的输入,以此类推,前一个自编码网络隐层的输出为下一个编码器网络的输入,并对各个网络层之间的连接权值和阈值进行初始化;
步骤3.3、通过训练集对网络进行训练,直到达到收敛条件为止,再将测试集代入训练过的多层网络,对故障传感器的缺失数据进行恢复。
步骤3.1中在堆栈降噪自编码网络输入端加入高斯白噪声。
步骤3.2中建立三层神经网络,且隐层神经元的个数q1、q2、q3分别取 25、20、25,在输入层加入100dB的高斯白噪声。
步骤3中的网络采用的是栈式降噪自编码网络,对加入噪声的输入数据和输出数据之间的关系进行学习。栈式网络是逐层训练的,训练其中某一层网络的参数时,其它层的参数保持不变。进行一次完整训练之后,通过反向传播算法对网络的各层参数进行调整,使得对缺失数据进行估计时准确率更高。对列车采样数据用本发明提到的方法进行恢复,仿真结果如图5所示,并计算估计值和真实值得相对误差均值为0.0089,结果表明该方法能够有还原缺失轴温值。