时间序列分类总结(time-series classification)

2023-11-01


       时间序列是很多数据不可缺少的特征之一,其应用很广泛,如应用在天气预测,人流趋势,金融预测等。感觉在时间序列的使用上大致可以分为两部分,一种是基于时间序列的分类任务,一种是基于时间序列对未来的预测。因为最近在思考这一方面的问题,想做一个综述出来,若有不认同点,麻烦拍砖。

一、传统方法(需要手工设计)

1、DTW(dynamic time warping)& KNN

       在深度学习大量使用之前,在时间序列分类方面,DTW和KNN的结合是一种很有用的方法。
       在做两个不同的时间序列匹配的时候,虽然我们可以通过肉眼发现它们之间存在着很高的相似性,但是由于部分位置的拉伸或者压缩,或者沿着时间轴上存在着平移,对两者直接计算欧氏距离效果一般不是很好,而定义规则进行对齐又无法适用实际应用中的多种情况,而DTW是在1970年提出了,其思想在一定程度上解决了该问题,通过动态规划的方法,来计算损失(即距离),最小的作为输出结果。在这里插入图片描述
       上图来自于参考博客[2]中,虽然其时序信号比较简单,但是也表达出来了两个正弦信号虽然相似但是存在差异性。DTW能够计算这两个序列的相似程度,并且给出一个能最大程度降低两个序列距离的点到点的匹配。
在这里插入图片描述
这是一个计算的小例子。(参考自[2])
比如说,给定一个样本序列X和比对序列Y,Z:
X:3,5,6,7,7,1
Y:3,6,6,7,8,1,1
Z:2,5,7,7,7,7,2
请问是X和Y更相似还是X和Z更相似?
DTW首先会根据序列点之间的距离(欧氏距离),获得一个序列距离矩阵 MM,其中行对应X序列,列对应Y序列,矩阵元素为对应行列中X序列和Y序列点到点的欧氏距离:
在这里插入图片描述
在这里插入图片描述
      通过这个方法,可以通过动态规划来获得一个更为合理的度量结果,用该结果来表示两个样本之间的相似性关系,其动态搜索的过程也可以表示为下图。
在这里插入图片描述
      而DTW和KNN之间的结合可以表示为下图所示,用DTW来获得一种度量结果,然后通过KNN进行聚类,方法简单,在传统方法中很受欢迎。
在这里插入图片描述

2、基于特征的方法

      这一类的方法都是一些通过某种度量关系来提取相关特征的方法,如词袋法,通过找到该时间序列中是否有符合已有词袋中的特征(序列的样子),将一个序列用词来表示,再对词进行分类。而其他的基于特征的方法都是利用了类似的方法,如提取统计量,基于规则等,再通过分类模型进行分类。

二、深度学习

1、MLP、FCN、ResNet

      基于深度学习的方法在实际上的处理和处理二维数据的方法上基本相同,由于时序信息每一个样本都可以看作为一个数组。而MLP的输入正好是一个向量(数组),通过全连接的形式对整体数组的每一个元素逐层赋予权重,并求得最后的分类,这种方法是一种比较粗暴的学习方法,直接学习所有元素直接的线性或非线性相关关系,但是并没有去深度挖掘数组中更好的表现特征,分类效果不佳。
在这里插入图片描述
      FCN是将MLP中的全链接层用卷积层进行替代,Resnet也是,但是其中的卷积层都用一维卷积核进行了替代。
在这里插入图片描述
      上表来自于参考文献【5】中的,可以看到深度学习的方法效果基本上与传统方法相接近,甚至有所超过,其中整体表现最好的是FCN。
      在天池比赛-合肥高新杯心电大赛的决赛方案中,我发现最后获得较高收益的baseline模型有如xcetion这样的参数量较多的模型,我想这样模型的好处可能是能从多个方面去挖掘更加大量的数据吧,但是在处理一个时序性问题中,要说明这些模型哪个更优并没办法,只能通过实验去获得。
这是该比赛的答辩链接,里面提供了很多的解决思路,很受启发。
https://tianchi.aliyun.com/course/video?spm=5176.12586971.1001.1.51df7b91Avma5o&liveId=41127

2、LSTM_FCN、BiGRU-CNN

在这里插入图片描述
      LSTM_FCN的方法比较简单,是将输入分别输入到两个分支中,LSTM和FCN,并在最后将两个输出分支进行concat进行softmax获得分类结果。在这篇论文中,作者说这种方法取得了比FCN更好的效果。
      在其他的一些比赛方案中,也有resnet+LSTM+FC的组合形式,通过Resnet的一维卷积先提取相关特征,然后通过LSTM学习一维特征向量的相关关系,再进行分类,可能针对于不同的问题还是要试试才知道哪个的效果更加好。
      BiGRU-CNN与以上方法相比实际上并没有做什么大的改进,就是将LSTM分支替换成双向的GRU分支。

3、MC-CNN(multi-channel CNN)、MCNN(multi-scale CNN)

在这里插入图片描述
       MC-CNN是我在网上看到了另外一种处理方法,它应用于NLP中,与之前的方法不同的是,这种方法比较重要的一步是初始化不同的embedding,对数据进行编码,形成多个通道的输入,再通过卷积层学习,最后进行分类。Embedding这一步我觉得是一种数据变换的方法,但是并不是特别理解,猜想可能是embedding变换后的数据更加适合于学习的缘故吧。
      MCNN应该是将图像处理中的多尺度的思想融入了时间序列处理中,将不同的feature map输出出来,进行预测分类,可以参考FPN这种结构。

参考文献

【1】Time Series Classifification from Scratch with Deep Neural Networks: A Strong Baseline
【2】https://blog.csdn.net/raym0ndkwan/article/details/45614813(DTW个人觉得讲的比较清楚的博客)
【3】https://nbviewer.jupyter.org/github/markdregan/K-Nearest-Neighbors-with-Dynamic-
Time-Warping/blob/master/K_Nearest_Neighbor_Dynamic_Time_Warping.ipynb
【4】http://www.doc88.com/p-0334856528441.html(BiGRU CNN)
【5】Time Series Classifification from Scratch with Deep Neural Networks: A Strong Baseline
【6】LSTM Fully Convolutional Networks for Time Series Classification

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间序列分类总结(time-series classification) 的相关文章

  • Maven之pom.xml文件中的Build配置

    Maven之pom xml文件中的Build配置 前言 在日常的开发中 我们经常使用maven来管理和构建我们的项目 即使现在使用了各种springboot等方便快捷的框架 jar包的引入也是通过maven来进行的 因此有必要了解pom x
  • Batch和Epoch之间的区别是什么?

    写在前面 快速理解 随机梯度下降 SGD 是一种迭代学习算法 它使用训练数据集来更新模型 Batch 批量 大小是梯度下降算法的超参数 在模型的内部参数更新之前控制训练样本的数量 一个周期内一次批量训练的样本数 Epoch数是梯度下降算法的
  • python 图片与二进制之间的转换

    一 PIL格式图片转成二进制 先读取为PIL格式 再转为二进制 import io import base64 from PIL import Image def image2byte image 图片转byte image 必须是PIL格
  • java代码分层 handle_java 代码分层

    JAVA代码层次 阿里推荐 开放接口层 可直接封装 Service 方法暴露成 RPC 接口 通过 Web 封装成 http 接口 进行 网关安全控制 流量控制等 终端显示层 各个端的模板渲染并执行显示的层 当前主要是 velocity 渲
  • PyTorch torch.optim.lr_scheduler 学习率设置 调参 -- CosineAnnealingLR

    lr scheduler 学习率 学习率的参数调整是深度学习中一个非常重要的一项 Andrew NG 吴恩达 认为一般如果想调参数 第一个一般就是学习率 作者初步学习者 有错误直接提出 热烈欢迎 共同学习 感谢Andrew ng的机器学习和
  • easyui tabs 一个窗口修改完成后刷新另一个窗口

    在一个tab中添加或删除数据后 要改变主页 相当于链接的另一个tab 的内容 1 在要刷新的窗口的初始化中添加 js 刷新方法 并保存到 window top 中 window top Refresh CloudHomePage Conte
  • 二、基础平滑、面积折线图与折线堆叠、面积堆叠《手把手教你 ECharts 数据可视化详解》

    注 本系列教程需要对应 JavaScript html css 基础 否则将会导致阅读时困难 本教程将会从 ECharts 的官方示例出发 详解每一个示例实现 从中学习 ECharts ECharts 官方示例 https echarts
  • Mybatis学习(二)--getMapper接口绑定方案和多参数传值

    在Mybatis的基础使用中 如果想向一个sql语句中传递多个参数 只能将parameterType设置为某个类或者Map 不能直接传入多个参数 接口绑定方案可以实现直接传入多个参数 Mybatis的接口绑定方案与基本的使用方法不同的地方在
  • unity 射线获取坐标

    射线 碰到障碍物就会断开 鼠标点击屏幕获得一个二维坐标 通过相机的射线转换为三维世界坐标 private Vector3 worldPos 鼠标点击的点所对应的世界里面的位置 点击鼠标右键 if Input GetMouseButton 1
  • ThinkPHP文件包含漏洞分析

    出品 长白山攻防实验室 ID A Tree 0x00 声明 以下内容 来自长白山攻防实验室的A Tree作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作者不承担任何责
  • Vue3集成高德地图方法

    1 注册高德开发者账号 获取key和安全密钥 2 下载依赖 可参考高德官方文档 https lbs amap com api jsapi v2 guide webcli map vue1 npm i amap amap jsapi load
  • GD32f103 8M晶振改12M , 要修改的地方

    手里的单片机是gd32f103ret6 晶振和官方库默认的8M不一致 导致串口乱码 网上找了好久全是STM32的例子 不过还是有参考意义的 以下是gd32f10x 的设置方式 1 Keil中的Target设置 PS 这一项好像会自动设置 安
  • 7、变量进阶

    7 变量进阶 理解 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1 1 引用的概念 在 Py
  • [论文阅读]《how to share a secret》

    how to share a secret Adi Shamir 文章主要讲了如何将数据D分为n份 任意k份可以重组成D 任意k 1份不会泄露任何关于D的信息 这种技术能为密码系统构建鲁棒的密钥管理机制 即使灾难破坏一半信息或者安全性被破坏
  • 浅谈C++

    引子 程序运行时产生的数据都属于临时数据 程序一旦运行结束都会被释放通过文件可以将数据持久化 C 中对文件操作需要包含头文件 lt fstream gt C 提供了丰富的文件操作功能 你可以使用标准库中的fstream库来进行文件的读取 写
  • 【接口测试】POST请求提交数据的三种方式及Postman实现

    1 什么是POST请求 POST请求是HTPP协议中一种常用的请求方法 它的使用场景是向客户端向服务器提交数据 比如登录 注册 添加等场景 另一种常用的请求方法是GET 它的使用场景是向服务器获取数据 2 POST请求提交数据的常见编码格式
  • 【从零到一的Raspberry】数莓派踩坑实录(二) 内核编译配置和模块安装

    写在前面 本次作业具有挑战性 不过不管哪一环节出错了 你都要知道如何把它还原到初始状态 这样你就不是在危险地操作 而有还原的保障 因此在第0节我会介绍一种还原数莓派系统的方法 这样你就可以在内核无法运行时还原到默认系统 后面从第一章开始 带
  • AD 利用IPC封装创建向导快速创建封装

    首先在扩展更新里查看是否有IPC封装 工具里面第二个会有很多常见封装类型 选择SOP NEXT 会填写一些数据 相对应在数据手册上进行填写即可 下图左上角问的是要不要加散热焊盘 散热焊盘主要看原件是否真实需要 上图要填的值一般来说默认就可以

随机推荐

  • Ubuntu无法连接网络?

    文章目录 适用情况 Windows网络配置和虚拟机网络配置 Windows网络适配器配置 Ubuntu设置静态IP 图形化界面操作 指令文件操作 如果重新设置好以后 依旧不行 适用情况 如果您无法知晓 虚拟机出现是什么问题 始终就是无法连接
  • 黑盒测试的范围内容

    1 功能错误或遗漏 2 界面错误 3 数据结构或外部数内容据库访问错误 4 性能错误 5 初始化和终止错误
  • 动态规划(js版)

    1 动态规划算法介绍 理解动态规划 知乎好文 LeetCode简单的动态规划题 斐波那契数 爬楼梯 使用最小花费爬楼梯 有点小坑 不同路径 不同路径 II 注意初始值的设置 最小路径和 LeetCode较难的动态规划题 343 整数拆分 9
  • 哈希(Hash)与算法的衡量

    对于map来说 背后就是平衡搜索二叉树 具体可见 https blog csdn net weixin 42513339 article details 88889306 空间复杂度为 O logN 对于unorder map来说 背后就是
  • ubuntu18.04安装xmind思维导图 + 创建软件的快捷方式

    ubuntu18 04安装xmind思维导图 sh文件运行小知识 创建快捷方式 1 下载linux版本的 zip压缩包 2 运行sudo setup sh 2 1 sh 文件相关知识 补充 3 启动xmind 3 1 启动失败 font f
  • ggplot2中的条形图 geom_bar()

    20150226 1 ggplot 能直接计算aes 中x变量各个分类的数目 所以可以直接用原始数据 而不用像plot 一样要table 数据 2 geom bar mapping NULL data NULL stat bin posit
  • 从零搭建 Spring Cloud 服务(超级详细)

    点击上方 Java后端 选择 设为星标 优质文章 及时送达 作者 Anakki 链接 blog csdn net qq 29519041 article details 85238270 这里会介绍很多基础知识 直接想开始搭建微服务的可以看
  • 小学思品课如何使用计算机教学设计,关于小学思品教学设计与反思

    关于小学思品教学设计与反思 小学思想品德节约用水教学设计与反思 节约用水 教学设计与反思 一 指导思想 品德与生活课 注重学生的实践与参与性 突出教学实效性 让学生通过丰富的教学活动去亲身体验 亲自感受水的重要与水资源的匮乏 从而形成自觉的
  • Win10 系统下VisualStudio2019 配置Open3D-0.15.2(C++)

    目录 一 下载Open3D 0 15 2 二 编译 font color dd00dd 1 新建文件 CmakeList txt TestVisualizer h TestVisualizer cpp font color dd00dd 2
  • 进程、线程与JVM、CLR

    进程和线程的关系 网上有一副很经典的图可以让我们来理解进程和线程的关系 下面这副图是一个双向多车道的道路图 假如我们把整条道路看成是一个 进程 的话 那么图中由白色虚线分隔开来的各个车道就是进程中的各个 线程 了 这副图出自 http ww
  • chroot命令的基本用法

    chroot 切换根目录 chroot PATH TO TEMPROOT COMMAND chroot test virrot bin bash 切换根目录 并明确指明运行那个目录下面的bash 例子 切换根目录 root gdy ftpf
  • 实战Elastic Stack分析K8S应用日志--部署logstash

    logstash从kafka取数据输出到es 部署logstash docker pull logstash 6 8 6 docker images grep logstash docker tag d0a2dac51fcb harbor
  • 【M malloc送书第二期】朋友圈大佬都去读研了,这份备考书单我码住了!

    文章目录 01 数据结构与算法分析 02 计算机网络 自顶向下方法 03 现代操作系统 04 深入理解计算机系统 01 概率论基础教程 原书第10版 03 线性代数及其应用 八九月的朋友圈刮起了一股晒通知书潮 频频有大佬晒出 研究生入学通知
  • JSONObject与JSONArray总结及部分使用

    例如 取出name4值过程步骤 1 将以上字符串转换为JSONArray对象 2 取出对象的第一项 JSONObject对象 3 取出name1的值JSONObject对象 4 取出name2的值JSONObject对象 5 取出name4
  • 【react】高阶函数_函数柯里化

    高阶函数 如果一个函数符合下面2个规范中的任何一个 那该函数就是高阶函数 1 若A函数 接受的参数是一个函数 那么A就可以称之为高阶函数 2 若A函数 调用的返回值依然是一个函数 那么A就可以称之为高阶函数 常见的高阶函数有 Promise
  • JetBrain系列软件使用

    一 PHPSTORM 非常好用的插件 支持对一些动态调用的函数快速跳到函数定义处 DynamicReturnTypePlugin FIle gt Settings gt Plugins gt Marketplace 输入 DynamicRe
  • 使用Python对一张图像进行高斯模糊

    import cv2 src cv2 imread test jpg numpy数组 第二个参数 高斯核的宽和高 建议是奇数 第三个参数 x和y轴的标准差 result cv GaussianBlur src 45 45 15 cv2 im
  • MybatisPlus配置双数据库驱动

    个人博客纯净版 MybatisPlus配置双数据库驱动 代码搬运工 最近项目中需要用到2种数据库驱动连接数据库 下面我们基于MybatisPlus实现一下 具体实现 1 在pom xml中添加如下依赖
  • 三星修复软件+连接三星认证服务器,三星云服务从2月6日起不再支持第三方应用程序数据备份...

    原标题 三星云服务从2月6日起不再支持第三方应用程序数据备份 1 月 23 日消息 三星近日向用户发送电子邮件称 三星云服务将在 2 月 6 日停止支持第三方应用数据备份 届时三星将清除已经从这些应用备份的数据 用户将无法从这些备份中进行恢
  • 时间序列分类总结(time-series classification)

    时间序列分类总结 time series classification 一 传统方法 需要手工设计 1 DTW dynamic time warping KNN 2 基于特征的方法 二 深度学习 1 MLP FCN ResNet 2 LST