论文部分内容阅读
错误在时间序列中普遍存在,例如GPS轨迹中存在明显的错误等等。这种情况在工业领域中尤为常见,以某风电装备数据为例,其收集的风机传感序列数据存在大量缺失值、异常值、时间标签无法对齐等错误。某地区风场每天约有24%(约800万个)数据点,31%(约5000台)设备,因数据错误而无法存入数据库(入库),造成了严重的数据资产损失。面对这些含有错误的时间序列,除了常见的保留错误数据、全部丢弃错误数据、进行人工检查之外,还可以利用两类在数据库中广泛使用的清洗算法对时间序列数据进行自动清洗,即基于平滑的清洗算法和基于模型的清洗算法。然而考虑到三种普遍的错误情况,即单点大错误,单点小错误,和连续错误。上述两种清洗算法表现不尽如人意。基于平滑的清洗算法会对几乎所有的数据点进行变动,而基于模型的清洗算法则很难对多变的时间序列进行准确的建模。为了提高时间序列数据质量,本文提出了三种清洗方法。主要内容以及理论贡献如下:·针对时间序列中存在的单点大错误,提出了基于速度约束的清洗算法。基于首创性提出的速度约束,本文给出了全局最优的多项式时间算法和局部最优的线性时间算法。利用高效的中位数法则,该局部最优算法还可以支持流式清洗。除此之外,还能够清洗乱序到达的数据并能够自适应地调整窗口大小。·针对时间序列中存在的单点小错误,提出了基于最大似然的清洗算法。该算法不再以数据清洗领域普遍使用的最小修改原则作为清洗目标,而是从概率的角度评判清洗结果的优劣。解决了目前常用算法无法对小错误进行有效清洗的问题。在给出精确算法的基础上,本文还设计了多种近似算法,并分析了这些算法的适用场景。·针对时间序列中存在的连续错误,提出了基于标注信息的清洗算法。这种迭代式最小清洗算法只需要利用少量的人工标注信息(10%左右)。本文还给出了该算法的收敛条件的分析并支持每轮迭代中进行高效的参数估算。增量式计算方法可以将参数估算的时间复杂度从O(n)降低至O(1)。真实业务场景上的实验结果表明,以上三种清洗方法均能高效高质量地清洗时间序列数据。经过清洗后的时间序列数据,能够使得晶片平均去除速率预测错误显著降低。