APP下载

时序数据的非线性最小二乘迭代分解算法

2019-06-11黄雄波

计算技术与自动化 2019年1期

摘要:从时序数据中精确地分解出趋势、周期及随机噪声等数据成分,能有助于人们掌握事物在演变过程中所蕴藏的内在规律.基于非线性最小二乘法,提出一种性能更为高效的时序数据分解算法。首先,基于关键转折点和趋势导数的方法从待分解序列中概要地析出各种不同的数据成分,然后,分别利用多项式函数、正弦谐波级数及自回归模型对相应的数据成分进行拟合,最后,在加法模型中迭代求解各种数据成分的非线性最小二乘参数。实验表明,新设计的算法在分解精度和计算成本等指标上均优于现有的算法。

关键词:时序分解;非线性最小二乘;关键转折点;趋势导数

中图分类号:TP311.11

文献标识码:A

在自然科学、工业生产和实验研究等诸多领域中,被考查的对象在伴随着时间的变化过程中,其某些物理属性往往表现出一定的随机性,为此,它们常常以一串随时间而变化的数据序列被人们记录起来,这种序列通常称为时间序列或时序数据。任何的时序数据经过适当的函数变换后,总可以被分解为趋势、周期项及随机噪声共三种成分[1-3]。其中,趋势成分代表了事物的长期发展趋势,是决定数据大小的基本成分;周期成分表示事物有规则的重复运动,是在趋势成分的基础上所添加的量;而随机噪声成分则反映了趋势和周期成分以外事物所受到的其它因素影响的总和,是属于服从一定统计规律的随机分布。易知,若能精确地从时序数据中分解出上述的数据成分,则有利于人们对事物的发展进行有效的预测、控制和诊断[4-6]。

时序数据的建模与辨识是概率统计学中的一个研究分支,由于有着广泛的应用场合,近年来得到了迅猛的发展。以时序数据的分解算法为例,周黔等通过定义基本趋势的自然分割点为重要点,结合自底向上的分割方法,提出了一种精度较高的时序数据分段线性化的趋势特征提取算法[7],在此基础上,黄雄波通过计算时序数据的各阶趋势导数,有效地把时序数据划分为多个不同的子序列模式,进而设计实现了一种高效的时序数据趋势项的拟合算法[8];蔡智等根据傅氏级数的定义及有关定理,把求解傅氏系数的积分运算转换为求和运算,并得到了一种易于实现的时序数据周期模式发现算法[9];徐峰等基于差分原理把非平稳随机序列转换为平稳随机序列,并根据序列的前后相依关系,采用自回归模型( auto regressive model,AR)对振动时序数据进行了有效的预测[10];常慧君等利用低通滤波器对时序的突变点进行分析和提取,并在欧氏空间内将时序数据分解为不同的数据成分,进而设计实现了一种基于时序数据分解的用户网络行为分析算法[11]。

现实生活中所记录的时序数据通常具有非线性和非平稳的特征,但基于计算简便的考虑,现有的分解算法往往是在线性模型上进行的,故其分解精度难以提升。据此,基于非线性最小二乘法,设计实现了一种高精度的时序数据迭代分解算法,相关实验验证了算法的正确性和有效性。

1 问题描述

设时序数据用Yt。表示,其分解后的趋势、周期和随机噪声成分依次地用Hi、pi和Xi表示,则对应的加法和乘法分解模型如式(1)和式(2)所示,

一般地说,若时序数据的周期和随机噪声成分随着趋势成分的增加(或衰减)而加剧(或减弱),则应采用乘法分解模型进行描述;反之,就采用加法分解模型。

若分别用多项式函数、正弦谐波级数及自回归模型对时序数据的趋势成分Hi、周期成分Pi和随机噪声成分Xi进行拟合,以加法分解模型为例,则有

2 时序数据的非线性最小二乘迭代分解算法

对于传统的时序数据分解算法而言,通常是利用自相关函数对待分解序列的趋势和周期成分进行识别,然后依次地对它们进行提取和分离,最后把剩余的数据成分近似为某一平稳序列进行处理[12-14]。为了能以较少的计算成本并获得较高的分解精度,本文设计的改进算法其工作原理是,首先对时序数据进行概要分解,并初步获得如式(3)所示的线性分解参数,然后以这些线性分解参数为迭代初值,在式(6)所示的模型基础上,对各种数据成分参数进行非线性最小二乘的迭代计算。

2.1 时序数据的概要分解

时序数据的概要分解过程主要分为三步:(1)从序列中析出关键转折点;(2)利用关键转折点的趋势导数识别不同的数据成分;(3)基于最小二乘法估算各种数据成分的线性分解参数。

(1)以三个连续的数据点为一组,根据它们的夹角大小从待分解序列中自左至右地析出关键转折点。

把序列相鄰两点之间的趋势划分为“平稳”、“上升”和“下降”共3种状态,则三个连续数据点的夹角(记为φ)便有如图1所示的9种构成情况。不难发现,若夹角|φ-π|→0,则三个连续数据点就趋向三点共线;反之,中间的数据点便越有可能成为序列的关键转折点。于是,在实际应用中,可以令φ为某一阈值便可析出序列的关键转折点。

(2)计算关键转折点的趋势导数,并根据计算结果从待分解序列中识别不同的数据成分。

易知,若关键转折点的一阶趋势导数具有某一余弦函数的形态,则此时可以判定时序数据存在周期成分,且它的周期长度可通过关键转折点的跨度来获取;而趋势成分则可通过计算关键转折点的高阶趋势导数进行判别,并以最后某一高阶趋势导数等于常数的阶次作为多项式拟合函数的最高项数。

(3)基于最小二乘法估算出趋势和周期成分的线性分解参数,把剩余的数据成分视作某一平稳序列,并用伯格( Burg)算法对其自回归模型参数进行估算。

步骤3:依照式(19)所示,迭代求解时序数据非线性最小二乘的分解参数向量;

步骤4:若当前的分解误差大于ε,则把当前分解向量→xk,并跳转步骤3;否则跳转步骤5;