一种基于数据块的趋势自动提取方法
技术领域
本发明属于数据处理技术领域,具体涉及一种基于数据块的趋势自动提取方法。
背景技术
伴随着大数据的发展,数据处理与分析技术领域也在不断发展,数据的趋势代表了参数的变化状态,在已有海量数据的基础上通过数据趋势提取分析,可以为后面的行为做出指导与决策。在尊重原始数据的基础上如何对数据进行准确的趋势提取,成为了一个要解决的主要问题。直接从工业上采集到的数据受噪声的影响产生的波动大,难以直接提取趋势,若先对采集到的数据先采用滤波平滑等数据处理方法后再提取趋势,处理后的数据结果会直接影响趋势结果,并且数据平滑程度难以确定,当过度平滑时会导致数据特征丢失,故针对此问题,利用一种基于特征保持的方法对数据进行趋势提取,该方法采用寻找原始数据最优包络中心线的方法,在保持数据特征的同时使得数据更平滑,最终得到准确的提取趋势结果。
发明内容
本发明的目的是提供一种基于数据块的趋势自动提取方法,解决了现有技术中存在的对采集到的数据先采用滤波平滑等数据处理方法后再提取趋势,处理后的数据结果会直接影响趋势结果,并且数据平滑程度难以确定,过度平滑时会导致数据特征丢失的问题。
本发明所采用的技术方案是,一种基于数据块的趋势自动提取方法,具体按照以下步骤实施:
步骤1、采集某列车轴温数据作为原始数据,然后绘制原始数据曲线;
步骤2、寻找原始数据的最优分段值,提取出数据包络中心线,并寻找其局部极值点;
步骤3、根据步骤2得到的局部极值点将数据划分成数据块,在每个数据块内进行趋势提取分析,为后面进一步预测轴温变化、判断列车故障等问题提供理论基础。
本发明的特点还在于,
步骤1中原始数据data={x1,x2,...,xN|N∈N*},绘制原始数据data的曲线,其中,xN表示列车轴温,N表示时刻。
步骤2具体按照以下步骤实施:
步骤2.1、求取原始数据长度值的全部约数,除1以外,并按照从小到大顺序排列,得到排序后的约数序列D={d1,d2,...,d|ii∈N*},其中,di表示约数值,下标i表示数据点的个数;
步骤2.2、根据步骤2.1得到的序列D的第一个位置开始遍历,根据约数值将原始数据划分为等宽度的段,首先,每段取一个最高点,连接所有最高点得到原始数据的上包络线,然后,每段取一个最低点,连接所有最低点得到原始数据的下包络线,最后,对上下包络线求平均得到包络线的中心线;
步骤2.3、寻找步骤2.2中得到的包络中心线的局部极大值点,局部极大值满足的条件为(data(x)>data(x-1))&&(data(x)>=data(x+1)),并且记局部极大值为Xmax={xmaxn|1≤xmaxn≤xN,1≤n≤N},其中,xmaxn表示局部极大值,n表示极大值点对应的时刻;
步骤2.4、寻找步骤2.2中得到的包络中心线的局部极小值点,局部极小值满足的条件为(data(x)<data(x-1))&&(data(x)<=data(x+1)),并且记局部极小值为Xmin={xminm|1≤xminm≤xN,1≤m≤N},其中,xminm表示局部极小值,m表示极小值点对应的时刻;
步骤2.5、定义遍历终止条件:若xmaxn=xmaxn+1||xminm=xminm+1,则重复步骤2.2~步骤2.4,直到第一次出现无连续相同的局部极大值点和局部极小值点,其中,xmaxn+1表示xmaxn下一时刻的局部极大值,xminm+1表示xminm下一时刻的局部极小值;
步骤2.6、根据步骤2.5得到的约数值为最优分段值,此时得到了最优包络中心线及其局部极大值点和局部极小值点。
步骤3具体按照以下步骤实施:
步骤3.1、将数据的起点、局部极大值点、局部极小值点以及数据的终点按时刻从小到大的顺序合并为原始数据的特征点集合,每相邻两个特征点之间的数据划分成一个数据块;
步骤3.2、根据现有定义的三种线性趋势基元:上升、不变、下降,对每个数据块分块拟合,进行趋势提取,根据一元线性拟合的结果,如果斜率大于零则为上升趋势,斜率等于零为不变趋势,斜率小于零为下降趋势。
本发明的有益效果是,一种基于数据块的趋势自动提取方法,通过寻找原始数据最优包络中心线的方法,对变化复杂的数据,得到的包络线不同于信号处理中的包络线,需要将原数据分成等宽度的小段,宽度需要取原始数据长度的约数,每段取一个最高点,连接所有最高点得到原始数据的包络线。而不同分段值会影响趋势提取的结果,例如,当分段值过小时,会导致局部极值点的误判,得到了多个连续相同的局部极值大点或局部极小值点,影响后面的趋势分析结果准确性,因此就需要寻找最优分段值,使得到的最优包络中心线既能保持原有数据的特征,又能寻找出有效的局部极值点,最后将数据的起点、最优包络中心线的局部值点以及数据终点按顺序合并后的数据的特征点集合,根据每相邻两个特征点之间的数据划分成一个数据块,根据现有的定性线性趋势基元,对每个数据块的趋势进行提取。
附图说明
图1是本发明一种基于数据块的趋势自动提取方法的总体流程图;
图2是本发明一种基于数据块的趋势自动提取方法中的步骤1中原始曲线图,其中,数据data={x1,x2,...,xN|N∈N*}中选取的N=32000;
图3(a)是本发明一种基于数据块的趋势自动提取方法中的步骤(2.6)中最优包络中心线;
图3(b)是本发明一种基于数据块的趋势自动提取方法中的步骤(2.6)中局部极大值点和局部极小值点;
图4是本发明一种基于数据块的趋势自动提取方法中的步骤(1.5)中现有的定性线性趋势基元;
图5(a)是本发明一种基于数据块的趋势自动提取方法中的分段值为20时的中心包络线及其局部极值点;
图5(b)是本发明一种基于数据块的趋势自动提取方法中分段值为20时的中心包络线的局部放大图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
针对工业采集数据受噪声影响产生波动大的情况下,当先对采集到的数据先采用滤波平滑等数据处理方法后再提取趋势,处理后的数据结果会直接影响趋势结果,并且数据平滑程度难以确定,过度平滑时会导致数据特征丢失的问题,如何在尊重原始数据并保持数据特征的基础上准确提取数据趋势,为了解决该问题,建立一种基于数据块的趋势自动提取方法。
本发明一种基于数据块的趋势自动提取方法,流程图如图1所示,具体按照以下步骤实施:
步骤1、采集某列车轴温数据作为原始数据,然后绘制原始数据曲线,如图2所示;
步骤2、寻找原始数据的最优分段值,提取出数据包络中心线,并寻找其局部极值点;
步骤3、根据步骤2得到的局部极值点将数据划分成数据块,在每个数据块内进行趋势提取分析,为后面进一步预测轴温变化、判断列车故障等问题提供理论基础。
其中,步骤1中原始数据data={x1,x2,...,xN|N∈N*},绘制原始数据data的曲线,其中,xN表示列车轴温,N表示时刻。
步骤2具体按照以下步骤实施:
步骤2.1、求取原始数据长度值的全部约数,除1以外,并按照从小到大顺序排列,得到排序后的约数序列D={d1,d2,...,di|i∈N*},如表1所示,其中,di表示约数值,下标i表示数据点的个数;
表1排序后的约数序列
步骤2.2、根据步骤2.1得到的序列D的第一个位置开始遍历,根据约数值将原始数据划分为等宽度的段,首先,每段取一个最高点,连接所有最高点得到原始数据的上包络线,然后,每段取一个最低点,连接所有最低点得到原始数据的下包络线,最后,对上下包络线求平均得到包络线的中心线;
步骤2.3、寻找步骤2.2中得到的包络中心线的局部极大值点,局部极大值满足的条件为(data(x)>data(x-1))&&(data(x)>=data(x+1)),并且记局部极大值为Xmax={xmaxn|1≤xmaxn≤xN,1≤n≤N},其中,xmaxn表示局部极大值,n表示极大值点对应的时刻;
步骤2.4、寻找步骤2.2中得到的包络中心线的局部极小值点,局部极小值满足的条件为(data(x)<data(x-1))&&(data(x)<=data(x+1)),并且记局部极小值为Xmin={xminm|1≤xminm≤xN,1≤m≤N},其中,xminm表示局部极小值,m表示极小值点对应的时刻;
步骤2.5、定义遍历终止条件:若xmaxn=xmaxn+1||xminm=xminm+1,则重复步骤2.2~步骤2.4,直到第一次出现无连续相同的局部极大值点和局部极小值点,其中,xmaxn+1表示xmaxn下一时刻的局部极大值,xminm+1表示xminm下一时刻的局部极小值;
步骤2.6、根据步骤2.5得到的约数值为最优分段值,本次实验的最优分段值为100,此时得到了最优包络中心线及其局部极大值点和局部极小值点,如图3(a)、图3(b)所示。
步骤3具体按照以下步骤实施:
步骤3.1、将数据的起点、局部极大值点、局部极小值点以及数据的终点按时刻从小到大的顺序合并为原始数据的特征点集合,每相邻两个特征点之间的数据划分成一个数据块;
步骤3.2、根据现有定义的三种线性趋势基元:上升、不变、下降,对每个数据块分块拟合,进行趋势提取,根据一元线性拟合的结果,如果斜率大于零则为上升趋势,斜率等于零为不变趋势,斜率小于零为下降趋势,如图4所示。得到的极大值点为16个,极小值点为15个,因此,得到原始数据特征点个数为33,因此可划分为32个数据块,其中,奇数个数数据块为上升趋势,偶数个数数据块为下降趋势,通过对列车轴温数据进行趋势自动提取,可为后面进一步预测轴温变化、判断列车故障等问题提供理论基础。
针对如何在尊重原始数据并保持数据特征的基础上准确提取数据趋势,本发明,该方法通过寻找原始数据最优包络中心线的方法,基于特征保持的方法对数据进行趋势提取,在保持数据特征的同时使得数据更平滑,最终得到准确的提取趋势。
通过寻找原始数据最优包络中心线的方法,对变化复杂的数据,得到的包络线不同于信号处理中的包络线,需要将原数据分成等宽度的小段,宽度需要取原始数据长度的约数,每段取一个最高点,连接所有最高点得到原始数据的包络线。而不同分段值会影响趋势提取的结果,例如,当分段值过小时,会导致局部极值点的误判,得到了多个连续相同的局部极值大点或局部极小值点,如图5(a)和图5(b)所示,影响后面的趋势分析结果准确性,因此就需要寻找最优分段值,使得到的最优包络中心线既能保持原有数据的特征,又能寻找出有效的局部极值点,最后将数据的起点、最优包络中心线的局部值点以及数据终点按顺序合并后的数据的特征点集合,根据每相邻两个特征点之间的数据划分成一个数据块,根据现有的定性线性趋势基元,对每个数据块的趋势进行提取。