时间序列表征之SAX(Symbolic Aggregate approXimation)算法

news2024/11/15 8:34:33

前言

对于研究时间序列表征、时间序列分类,时间序列状态转换等方向,常用的简单粗暴的一个方法是SAX (Symbolic Aggregate approXimation), 由Jessica Lin等在2003年发表的论文中提出的,该论文的题目为《A Symbolic Representation of Time Series, with Implications for Streaming Algorithms》。

论文链接:https://www.cs.ucr.edu/~eamonn/SAX.pdf

一、时间表征方法

文中举例了很多种时间序列表征方法,并做了分类,具体可以在文中看看,不过都比较经典,毕竟有点久远了。

53999c0d097e1c183f5b796225119a04.png

sax就属于{}那个分类

447f3e4a196dc484897afdcd96acd750.png其中四种的可视化:

  1. 离散傅里叶变换(DFT)

  2. 离散小波变换(DWT)

  3. 分段线性(PAA)和分段常数模型(APCA)

  4. 奇异值分解(SVD)

举例的这几个我估摸着除了第三个其他都很熟悉了,当然第三个也很简单,不赘述了。

二、 SAX算法

2.1 概述

其实sax算法十分简单,且高效。

086a5c3e3cb2794a2f4b0f9658613886.png

其实就两个步骤

  1. Piecewise Aggregate Approximation

  2. Symbol Representation

剩下两个是参数

  1. w:PAA片段的个数

  2. a:SR转换的alphabet里面元素的个数,比如a=3就是abc,如果是4就是abcd

2.2 PAA过程

e1168d3d104af3d00cc2c3f2afd3fad3.png

简单来说就是一个时间序列(一条线), 一共有n个点,现在转换为w个片段。

所以这里所谓的降维,是降的一个序列平行的维度,而并非pca的特征纬度的降维。

看一下图更清楚了:

c4c2ac491973bb94a457f17e3d6f323a.png

120个点转换为8个片段,可以试着带进公式看看(你会发现,其实就是要分成多少块,每一块算一下平均值罢了)

2.3 Discretization过程

转换为PAA后,可应用进一步转换以获取离散表示。

这里强调离散化要求产生具有等概率的符号,通过标准化的时间序列具有高斯分布,如下图

ae4244f38caf3b8c06450d3c6092e5a6.png

这幅图为从8个不同的时间序列中提取长度为128的子序列,并绘制得到的数据正态概率图。

这时通过breakpoints来进行离散化

f334f7a4ef787644da13b90b8394743c.png

这里的数字345等代表离散个数,比如3的三个离散区间为(-inf,-0.43) [-0.43, 0.43)[0.43, inf)

这里的分割方式,都是按照Gaussian分不的等概率区间来分的。

如果这里的离散用abc这种字母,则在离散为三个空间的话,则对应离散, 如下图所示:

  1. (-inf,-0.43) -> a

  2. [-0.43, 0.43)-> b

  3. [0.43, inf)-> c

cafb8a65c4e9e32a145d0aad33f6a107.png

2.4 距离比较

  1. 时间序列原始比较

3094265c70927dc0450b3fb9d974f38c.png a473a8a8cb6e1e2a7a59ca6f682289b1.png
  1. 转换为paa比较

7f18b80d7c272fc1e90e1568a8b2761b.png a35e9aba84b87c59dc6531d0f7273bd3.png
  1. sax比较方式 遵循最小比较原则

9d9d3faea35d02f80dbf50c45716cf8f.png a469eed00dbd9c79a07eaefd13f87523.png

最小原则含义:

1115cf50f670b3e2674f51e126fd87c9.png相邻两个距离为0, 比如离散相邻的a和b的距离为0

比如参考这个表格:

离散为四个,则

  1. (-inf, -0.67) -> a

  2. [-0.67, 0) -> b

  3. [0, 0.67) -> c

  4. [0.67, inf) ->d

ab距离为 -0.67-(-0.67) = 0 ac距离为 0-(-0.67) = 0.67

其实就是大的离散值代表的区间的下界限和小离散值代表区间的上界限相减得到距离

2.5 数据压缩

这里给出了sax和其他几种常见压缩方法的可视化对比

ed0b1631c86f2a1bb6c61a03a2af20e5.png

压缩完的时间序列离散化为:ffffffeeeddcbaabceedcbaaaaacddee

其他信息可以去看原文数据压缩部分Numerosity Reduction

三、结果

主要做了使用sax之后时间序列聚类和分类的实验

3.1 聚类

层次聚类6dc6e26af9029c366723fa50748c11fb.png

可以客观地说明SAX更优秀,因为它正确地将每个类别分配到其自己的子树中

3.2 分类

在cc和cbf两个数据集上测试,使用leaving-one-out cross validation方法7ae90990c99d495a115b866089628cb2.png

四、总结

  1. breakpoint那里其实操作空间很大,可以自主的根据自己的场景去调整,或者可以通过对数据分布的学习,动态调整,并非一定要是Gaussian分布,而且要注意如果是动态学习的breakpoints,一定要记住在train的结果把breakpoints保留,类似于fit模式

  2. 尝试下来,极值对该方法影响还是很大的,最好去掉那些极大值之后再进行sax

  3. Word Size和Alphabet size参数对最终的结果影响很大,受数据分布影响也很大,如果已经去掉极值,建议可以把要处理的数据进行sax转换之后再进行可视化,看是否可以保留原数据的模样

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

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

c984f67281e09ea312e884593d265e57.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/672280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏捷方法中测试人员的价值?

敏捷方法在软件开发中受到青睐,特别是在互联网应用服务系统的开发中,越来越多的公司采用敏捷方法,包括XP、Scrum、Lean、Crystal、FDD等。具体的敏捷方法在操作时有一些区别,但基本思想是一致的,如客户至上、拥抱变化、…

yolov8 源码解读 (part1: backbone, head)

yolov8 除了目标检测之外,还有实例分割功能, 这里解读检测和分割代码。 先上一张结构图,这个图里没有分割模块,后面会在代码里说明分割模块。 本篇解读红色框内的部分。 可以看到每个模块右边都有一个数字:0,1,… 这个数字是模块的顺序编号,按0,1,…,21的顺序进行,而…

澎湃新闻对话腾讯丁珂:从“治已病”到“治未病”,企业需快速构建“安全免疫力”

作者:澎湃新闻记者 周頔 随着数字化进程加快,企业数字化体系的边界在不断拓展,安全风险和挑战不断增加,传统被动防御的安全应对常显疲态,数字安全时代亟待建立全新的安全范式。 6月13日,腾讯安全联合IDC等…

华为某正式员工哀叹:自己被劝退了,同期入职的OD还好好的,正式员工还没外包稳定!...

在打工人心中,正式员工的含金量远远高于外包,但最近却有人爆料:华为正式员工还没外包稳定! 一位硕士毕业、工作两年的华为正式员工说,自己被劝退了,但隔壁组同期入职的OD还好好的,正式员工竟然还…

Instant-NGP稿子

Instant-NGP是英伟达2022年发表的一篇论文,全称是使用哈希编码的多分辨率的即时神经图形原语 那这篇文章呢 这篇文章提出了一种对输入做哈希encoding的方式,来让很小的网络也能学到很高的质量。 这个图片是文中的一个图片,表现了可以在训练…

大数据Doris(四十六):Stream Load基本原理和语法介绍

文章目录 Stream Load基本原理和语法介绍 一、基本原理 二、语法与结果 1、语法 2、返回结果 Stream Load基本原理和语法介绍 Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。Stream load 同步执行导入…

简要介绍 | 图像聚类:概念、原理与方法

注1:本文系“简要介绍”系列之一,仅从概念上对图像聚类进行非常简要的介绍,不适合用于深入和详细的了解。 图像聚类:概念、原理与方法 Cluster Analysis | NVIDIA Developer 1. 背景介绍 图像聚类(Image Clustering&a…

波浪理论与伦敦金价走势分析

艾略特波浪理论(Elliott Wave Theory)是一套能应用于伦敦金走势分析的理论,它认为市场的走势会不断重复一种模式,每一周期由5个上升浪和3个下跌浪组成。波浪理论将不同规模的趋势分成了九大类,最长的超大循环波(Grand supercycle) 是横跨200年…

Git版本管理实用指南

特别声明,本博文仅作个人日常使用Git参考之用。主要内容总结来源于:廖雪峰官网的Git教程🌻 🔎 什么是Git Git是目前世界上最先进的分布式版本控制系统,是Linux的创建者用C开发的。GitHub网站2008上线,它为…

ELKB架构安装

文章目录 安装JAVA JDK安装ES手动安装Problem: 无法访问localhost:9200Problem: 用户名密码验证 docker安装ES文件夹内容 安装node.js安装grunt 安装kibanaLogstashBeat 安装JAVA JDK https://www.java.com/en/ 添加环境变量C:\Program Files\Java\jdk-11.0.1\bin Elasticse…

在线广告系统工程架构

一、广告系统概览 广告投放系统:供广告主使用,核心功能包括会员续费、广告库管理、设定推广条件、设置广告出价、查看投放效果等。广告运营后台:供平台的产品运营使用,核心功能包括广告位管理、广告策略管理、以及各种运营工具。广…

HarmonyOS学习路之开发篇—多媒体开发(相机开发 一)

HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。 基本概念 相机静态能力 用于描述相机的固有能力的一系列参数,比如朝向、支持…

华为OD机试之按单词下标区间翻转文章内容(Java源码)

文章目录 按单词下标区间翻转文章内容题目描述输入描述输出描述示例代码 按单词下标区间翻转文章内容 题目描述 给定一段英文文章片段,由若干单词组成,单词间以空格间隔,单词下标从0开始。 请翻转片段中指定区间的单词顺序并返回翻转后的内…

芯片工程师求职题目之设计基础篇(1)

1. 进制转换 会算数值在二进制、八进制、十进制以及十六进制之间的任意转换。 会算数值的正码、反码、补码、BCD码。 2. 什么是格雷码(Gray code),它有什么优点。 在一组二进制编码中,若任意两个相邻的数值还有1位二进制数不同,则称这种编…

算法程序设计 之 最长公共子序列(4/8)

一、实验目的: 理解并掌握动态规划算法的基本思想和设计步骤。 实验内容若给定序列X{x1,x2,...,xm},Z{z1,z2,...,zk},若Z是X的子序列,当且仅当存在一个严格递增下标序列{i1,...,ik},使得对于所有j1,2,...,k有:zjxij。例如&#x…

智能家居APP软件开发有何优势?

传统家居行业营销模式已经无法满足现代人多样化个性化的需求,也跟不上互联网时代的发展步伐了,很多传统家居行业都陷入了营销困境。通过智能家居APP软件开发,可以利用互联网改造传统模式,探索新的发展模式,可以说智能家…

Bootstrap 简介

文章目录 Bootstrap 简介什么是 Bootstrap?Bootstrap 包的内容Bootstrap 实例 Bootstrap 简介 什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 历史 Bootstrap 是由 Twi…

【软件测试知识】什么是持续集成?

持续集成是一种 DevOps 软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成通常是指软件发布流程的构建或集成阶段,需要用到自动化组件(例如 CI 或构建服…

EasyUI表格增加筛选和导出的方法

一、前言 最近写前端页面,要从后台查询表格数据; 查到数据后,就想增加个数据筛选功能,如果再查后台的话会影响效率(还得加参数、再调用后台接口、后台再执行sql),就想前端能不能自己筛选下已经…

车载以太网 - 传输层 - TCP通信过程

目录 TCP 通信阶段 1、连接建立Connection establishment 2、数据传输 Data transfer 3、连接释放 Connection release TCP通信的三个阶段: TCP连接(三次握手) 1、Client(ECUA) -> Server(ECU B)第一次握手 2、Server -> Client 第二次握手…