在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺失、断点的情况。如何处理这些有缺失的时间序列呢?

图 | 两种不同类型的时序数据缺失

有关时间序列的补缺工作大体上分为:删除填充这两类。删除所考虑的不是进行填补,而是将缺失值作为特征之一输入到时序模型,例如异常检测,行为分析等;而填充是找到时序变化的规律,将值补充进去,分为统计方式填充机器学习填充两种方式。

本文就上面时序补缺的两大类方向整理相关工作,供大家阅读。

01

缺失数据删除

最直接的缺失数据处理的方式,就是直接忽略这些缺失值,简称为直接删除法,该方法常用在离散型的时间序列处理中,比如用户购物行为序列,事件序列等,这类序列数据没有固定的采集间隔,一般会把数据点之间的间隔时间作为特征进行分析。

图 | 融入时间间隔信息的LSTM: TLSTM[1] (KDD 2017)

比如上图所展示了TLSTM模型,来自KDD 2017年的工作,其将数据之间的间隔作为特征进行输入。TLSTM中专门设计了一种新的门结构对这种间隔信息进行加权聚合。

当然,该类方法可能会舍弃数据中的一些重要信息,在监控/IoT/风控等这种稳定性要求高的业务中,不能适用,因为每个数据点所代表的信息都很重要。

02

缺失数据填补

将缺失的数据删除一般只适用于少部分对数据完整度要求不高的场景,大部分场景(例如监控、安全等)需要我们尽可能将缺失的数据填充。数据填充需要我们找到时间序列一定的变化规律,从而将值补充进去。这里与时间序列的预测有一点相似,不同的是,时间序列预测中我们看不到所要预测点后面的数据,而时序补缺中,我们可以分析缺失点前后的数据,从而更精准的对缺失数据进行填充。

数据填充基本分为统计方式填充机器学习填充两种方式。

统计方式填充

a

基于统计学的填充方法是时间序列补缺中常用的方法,其计算复杂度低,易操作,在许多精度要求不高的业务场景中比较适用。

就近填充

就近填充包括:前推法LOCF,用缺失之前的最后一次观测值填补;与后推法NOCB, 使用缺失值后面的观测值进行填补。这个方法是时序当中最基本的方法。

特征值填充

特征值填充包括:均值、中值、常用值等。这类方法计算快,进行简单的统计即可实现数据的填补。其一般直接忽略数据的时序信息假定时序数据里面基本没有很强趋势性。

线性插值

这个方法历史悠久。其假定时序之间变动有很强的趋势,通过拟合数据的趋势变化,进而进行填补。早期天文学缺失数据都用这个方法。线性插补的方法包括一元线性回归,多元线性回归,岭回归等,有关方法可以参考之前的文章:《TS技术课堂 | 时间序列回归》

季节性+线性插值

经济数据或者季节波动数据,常常不符合简单的线性变化强假设。对这样的数据进行补缺,一般的线性插值法效果比较差。这里需要模型同时捕捉时序数据的季节性和总体趋势性,进而对数据的演变模式更好的拟合,实现缺失值数据的补充。

除了这些统计方法, 一般来说每个领域里面缺失值的填补还要借鉴专业知识来判断。比如以国家军费缺失数据为例,如果你知道因为战乱带来的缺失。那么战时数据比和平年代数据就更合适,很简单就近填补。

机器学习填充

b

随着计算能力的大幅提升,现今许多的场景下的时间序列补缺都采用了机器学习的方式,常见的方法包括基于最近邻方法(KNN),循环神经网络(RNN),随机森林和矩阵分解的缺失值填充算法。

有监督数据填充

这类的方法的本质是以缺失点附近的数据作为特征,预测缺失点的数据,通过海量的历史数据中挖掘相似的变化模型,从而进行更精准的数据填充。包括:

  • KNN:找到缺失点附近数据最相似的若干个历史数据点,对缺失值进行填补

  • RNN:通过循环神经网络拟合时序数据的变化趋势,对缺失数据进行填补。这里一般多使用双向RNN

  • 随机森林:这里以缺失点附近的数据作为特征,缺失数据作为要预测的值,在海量数据中训练一个高拟合随机树,对缺失点进行预测。

  • 时序生成:近些年随着生成对抗网络(GAN)的兴起,许多方法开始尝试做时间序列的生成,通过生成模型捕捉时间序列的分布特征,对时序数据进行再生成,进而填补数据。

多值插补

多值插补是近些年兴起的时序数据补缺方法,其主要应用于包括时空数据在内的多维时间序列问题。其补全数据不仅只关注自身的时序演变,同时关注相邻时序,特别是有影响关系的时序指标之间的影响。例如在交通中,某一路段的交通量与其上游、下游路段的交通量直接相关。这类方法依赖于缺失数据不同属性间关系,寻找最类似样本,对于突发情况下的数据丢失,异常数据点(离群点)的补全有更好的适应性。

  • 矩阵分解:不同的时间序列之间往往相互关联,通过矩阵分解等方法学习时序矩阵的整体特征,对时间特性矩阵进行低秩逼近,从而修补缺失数据。该类方法计算复杂度低 , 可以处理较大规模的数据。

图 | 时序正则化矩阵分解: TRMF[2](NeurIPS 2016)

  • 组合分析:不同学科的数据补缺可能都有默认或者建议的方法,比如社会学或者人口学对于无应答的问卷数据,就是假定用类似用户数据进行填补。很多的场景下的数据填补需要给出填补数据的合理性。面对这样的情况,矩阵分解这类方法难以给出直观的解释。因此,近年来一些方法考虑分析多源时序数据实体之间的外在属性,构建可解释的关联关系,组合多源时序及其关系进行数据的填补。

图 | 基于社群关系的电力系统时间序列补缺[3](WWW 2019)

上图所示的WWW 2019的工作,其基于用户的邻里关系,关联不同用户的用电数据,对缺失的数据进行填补。

03

开源工具

开源社区有许多优秀的项目可以帮助我们对缺失数据进行补全。这里简单为大家列举若干热门的项目:

  • https://sklearn.org/modules/generated/sklearn.preprocessing.Imputer.html

Sklearn实现了多种基于统计方法的缺失数据补全算法

  • https://github.com/amices/mice

该仓库实现了基于链式方程法的多维时序补缺算法

  • https://github.com/stekhoven/missForest

该仓库实现了基于随机森林的一种非参数混合类型补缺算法

  • https://github.com/cran/softImpute

该仓库实现了通过迭代软阈值SVD的完成矩阵进行补缺的算法

  • https://github.com/zjunet/STI

该仓库实现了基于社群关系进行多源时间序列补缺的算法

  • https://github.com/xinychen/transdim

该仓库实现了当前主流的基于矩阵分解的时间序列缺失值填充算法和预测算法

  • ...

04

总结

时间序列数据的补缺有很多不同的方法。在进行补缺之前,第一步需要我们对缺失的性质做出判断:如果是Missing at Random还是Missing Not at Random,一般前者删除,后者填充。但是填充不一定能带来更好结果,要先自己根据缺失比例和原因进行判断。

再者,如果你对数据生成机制很熟悉的情况下,可能一些简单方法就可以实现很好的数据补缺。对于本身纯粹依赖算法,不能给出解释机制的时间序列补缺是不能完全信服的,因为缺失本身表明这些样本信息不足。这里常常需要增加专业知识的判断,因为专业知识判断就相当于额外增补信息。

参考

[1] Inci M. Baytas, Cao Xiao, Xi Zhang, Fei Wang, Anil K. Jain, and Jiayu Zhou. Patient Subtyping via Time-Aware LSTM Networks. KDD 2017.

[2] Yu, H. F., Rao, N., & Dhillon, I. S.Temporal regularized matrix factorization for high-dimensional time series prediction. NeurIPS 2016.

[3] Zongtao, L; Yang, Y; Wei, H; Zhongyi, T; Ning, L and Fei, W. How Do Your Neighbors Disclose Your Information: Social-Aware Time Series Imputation. WWW 2019

END

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

个人微信

备注:昵称+学校/公司+方向

如果没有备注不拉群!

拉你进AI蜗牛车交流群

【时间序列】时间序列数据的缺失填补方法总结相关推荐

  1. NLP之TFTS读入数据:TF之TFTS读入时间序列数据的几种方法

    NLP之TFTS读入数据:TF之TFTS读入时间序列数据的几种方法 目录 T1.从Numpy 数组中读入时间序列数据 T2.从csv文件中读入时间序列数据 T1.从Numpy 数组中读入时间序列数据 ...

  2. 文献记录(part61)--基于不完备数据聚类的缺失数据填补方法

    学习笔记,仅供参考,有错必纠 关键词: 数据填补:不完备数据:聚类:约束容差集合差异度 基于不完备数据聚类的缺失数据填补方法 摘要 缺失数据的处理是数据挖掘领域进行数据预处理的一个重要问题.传统的缺失 ...

  3. 数据缺失,数据异常,数据标准化的处理方法

    数据缺失 一.缺失值产生的原因 缺失值的产生的原因多种多样,主要分为机械原因和人为原因.机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段 ...

  4. 【Python】干货分享 | Pandas处理时间序列的数据

    在进行金融数据的分析以及量化研究时,总是避免不了和时间序列的数据打交道,常见的时间序列的数据有比方说一天内随着时间变化的温度序列,又或者是交易时间内不断波动的股票价格序列,今天小编就为大家来介绍一下如 ...

  5. 数据清洗 Chapter07 | 简单的数据缺失处理方法

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  6. 浅析时间序列用户生命周期的聚类方法

    http://mp.weixin.qq.com/s?src=3&timestamp=1482222651&ver=1&signature=5N0Cdx1JH9TunFAYxxO ...

  7. 时间序列平稳化的 8 种方法比较及Matlab实现

    时间序列平稳化的 8 种方法比较及Matlab实现 文章目录 时间序列平稳化的 8 种方法比较及Matlab实现 平稳化方法 趋势项处理 趋势拟合法 实验报告 程序源代码 k 阶差分法 实验报告 程序 ...

  8. 长时间序列遥感数据植被物候提取/遥感数据产品分析暨MODIS NDVILAI多年产品数据批处理分析/Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析

    基于MATLAB长时间序列遥感数据植被物候提取与分析 1.本课程基于matlab语言 2.提供所有代码 3.以实践案例为课程内容主线,原理与操作相结合 4.根据讲解内容,布置作业,巩固所学内容及拓展在 ...

  9. em模型补缺失值_基于EM算法数据单变量缺失处理方法研究

    龙源期刊网 http://www.qikan.com.cn 基于 EM 算法数据单变量缺失处理方法研究 作者:黄铉 来源:<科技传播> 2015 年第 20 期 摘 要 数据分析方法大都针 ...

  10. python pandas 对带时间序列的数据进行重采样处理

    今天老板要处理一批带有时间序列的数据,源数据为1秒钟一行的csv数据,处理之后变成15分钟一行的数据. 源数据示例如下: time B00 B01 ... RollMean2.5 RollMean10 ...

最新文章

  1. 《快速搞垮一个技术团队的20个“必杀技”》
  2. 人工智能导论笔记——江湖救急版
  3. matlab RBF 神经网络拟合
  4. Linux下目录快速切换小工具bd
  5. 166. 分数到小数
  6. 演示:取证分析IPV6组播地址的构成原理
  7. Dart教程(四):语法
  8. ToDesk 远程软件推荐测评
  9. 数据结构和算法基础(6)——常用十种算法
  10. access ribbon 编程_彻底玩转MS ACCESS 2016功能区编程设计(01)
  11. Java设置PPT幻灯片背景——纯色、渐变、图片背景
  12. 笔记本电脑无线网络连接不上怎么办
  13. 如何做一个基于微信小说小程序系统毕业设计毕设作品
  14. 正则表达式测试工具 java,正则表达式测试工具RegexTester
  15. [2016][34]基于大数据的牛顿(Knewton)平台自适应学习机制分析
  16. springMVC Controller层接收 JSON参数遇到得问题
  17. 51单片机,点亮LED灯和闪烁
  18. vivo Z3i的usb调试模式在哪里,开启vivo Z3iusb调试模式的教程
  19. object-c中的对象的释放
  20. VOT2018——研究指南

热门文章

  1. Linux上如何安装微信! 或登录网页版微信提示:为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。
  2. can总线程序讲解_CANOpen系列教程02_理解CAN总线协议
  3. 暖春战疫,程序员买买买指南
  4. java sqlldr_sqlldr详解
  5. SQL server2019导入Access 2016数据失败解决方法
  6. html5 拾色器原理,HTML_html5 学习简单的拾色器 ,下面是源码 需要浏览器支持htm - phpStudy...
  7. 人工智能学习资源汇总
  8. VirtualBox Linux网络配置
  9. 京东架构专家分享京东架构之路
  10. Linux 网络驱动