热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

光速对齐时间序列

光速对齐时间序列“时间序列是无处不在且越来越流行的数据类型[…]”。几乎任何增量测量的信号, 沿时间轴还是线性有序集,可以视为时间序列。示例包括心电图,温度或电压测量,音频,服务器

光速对齐时间序列

“时间序列是无处不在且越来越流行的数据类型[…]”。几乎任何增量测量的信号 沿时间轴还是线性有序集可以视为时间序列。示例包括心电图,温度或电压测量,音频,服务器日志,还有重量级数据,例如视频和时间分辨的MRI体积。对数量不断增加的时间序列数据进行有效而精确的处理,对于每位数据科学家都至关重要。

介绍了RapidAligner –一个CUDA加速库,可使用以下三种流行的锁定步骤对统一采样的本地对齐方式,在一个非常长的时间序列流(主题)中,对齐一个短时间序列片段(查询)。

时间序列:



  1. 滚动欧氏距离(sdist)

  2. 滚动均值调整的欧氏距离(mdist)

  3. 滚动平均值和幅度调整后的欧氏距离(zdist)

RapidAligner库是免费软件,可以与各种流行的数据科学和机器学习框架(例如NumPy,CuPy,RAPIDS,Numba和Pytorch)集成。源代码可在NVIDIA RapidAligner下公开获得。

本文的其余部分结构如下:

l  简要介绍了流行的锁定步骤措施和(本地)规范化技术。

l  演示了RapidAligner库的用法。

l  结论。


时间序列数据挖掘简介

时间序列是成对的序列(t [i],x [i]),其中实值时间戳t [i]线性排列,相应值x [i]是在时间t [i]测得的数量。如果所有时间戳均等,即所有i的t [i + 1] -t [i] = const,可以忽略时间,将测量序列x [i]称为均匀采样的时间序列。将简单地将具有实值标量x [i]的统一采样时间序列称为没有奇特属性的时间序列

要比较两个时间序列Q =(q [0],q [1],…,q [m-1])和S =(s [0],s [1],…,s [m- 1])的长度| Q | = | S | = m。一个明显的方法,将Q和S解释为m维向量,计算差的Lp范数。

 

 

 参数p的流行选择是对于所谓的欧几里得距离为p = 2,对于所谓的曼哈顿或出租车距离为p = 1(见图1)。介绍了使用索引的一对一分配i-> i比较残差q [i] -s [i]的相似性度量-所谓的锁步度量。以后将使用诸如q [i] -s [j]之类的索引的动态分配来讨论CUDA加速测度,也称为弹性测度

 

 

 图1:两个心电图(ECG)测量值Q(蓝色信号)和S(橙色信号)的长度均为| Q | = | S | = 421,索引残留(灰色垂直条)下4采样为两倍。

在长度为| S | = n的长流S中,对齐长度为| Q | = m的短查询Q时,即0

 

 

 对于每个对齐位置j,必须对m个贡献进行求和。结果,计算所有锁定步长,对齐的渐近最坏情况复杂度,与时间序列长度m和n_O((n-m + 1)* m)的乘积成正比。即使对于中等大小的查询和流,此数字也可能是巨大的,当以简单的方式执行时,可能使大规模时间序列对齐在计算上难以处理。将针对特殊情况p = 2讨论如何实现以超快的对数线性时间运行的CUDA加速方案。

查看ECG流的较大部分(参见图2)时,可能会发现平均信号值存在时间漂移,也称为基线漂移。通常在连续测量的时间序列中发生,并且可能是由多种外部因素引起的,例如由于心电图中的汗水导致皮肤电导率变化,影响心电图中电极的人体运动,电阻漂移以及温度引起的电压漂移电源变化,记录环境数量时的温度漂移,圣诞节等季节性影响或全球大流行中股价的时间漂移​​。

 

 

 图2:使用欧几里德距离作为滚动相似性度量,在较长的心跳流S(橙色信号)中对齐的短ECG查询Q(蓝色信号)。注意S值的时间漂移​​

为相似形状的数据流进行挖掘时,基线漂移是有问题的–在测量轴上具有不同偏移量的两个相似形状可能比具有相似偏移量的两个不相似形状具有更大的距离。简单有效的对策,查询和候选序列引入规范化过程。例如,可以计算查询muQ的平均值,并为n-m + 1个候选序列muS [j]中的每一个计算平均值,消除相应窗口中的偏移量(请参见图3)。下面,将局部均值调整后的滚动欧氏距离mdist称为:

 

 

 

 

 图3:平均值不消失的心跳(左侧蓝色信号)及其均值调整后的变量(右侧橙色信号)。

 仔细观察图1和图2,可以进一步看出幅度的时间变化。蓝色查询中值的范围明显小于图1中橙色候选序列的幅度。在挖掘形状时,标度的时间漂移​​可能导致无意义的匹配。简单的解决方案,分别将值除以查询sigmaQ和比对候选sigmaS [j]的标准偏差来对比例进行归一化。均值和幅度调整称为z归一化,指均值和单位方差均消失的正常随机变量的z得分(参见图4)。相应的滚动度量应称为zdist:

 

 

 库RapidAligner以大规模并行方式支持CUDA加速计算的上述三个滚动度量sdist,mdist和zdist。将从JupyterLab内看到简单用法。

 

 

 图4:心跳具有均值和非单位方差不消失(左侧的蓝色信号)及均值和幅度调整(z归一化)的变量(右侧的橙色信号)。


RapidAligner的实际应用

开始计算数字。将使用讨论的三个指标sdist,mdist和zdist对齐22小时ECG流中的单个心跳。该数据集是屡获殊荣的UCR-Suite网站上列出的实验的一部分。克隆了RapidAligner存储库后,立即将RapidAligner库以及CuPY,NumPy和Matplotlib导入,以用于以后的验证和可视化。

 查看原始小区1 + 2.ipynb 与托管的GitHub

在下一步中,将加载ECG数据。查询的长度相当短,只有421个条目,但流显示了大约2000万个时间滴答。对完整查询(蓝色)和流的初始1000值(橙色)的首次检查显示偏移和幅度的时间漂移​​。

 查看原始小区3 + 4.ipynb 与托管的GitHub

下面的代码,将使用sdist度量来对齐查询在流中的位置,计算所有20,140,​​000-421 + 1的距离得分,进行argmin归约以确定最佳对齐位置。对于实验,在DGX A100服务器中选择单个A100 GPU 。需要注意的是,如果只在最佳匹配感兴趣的人们,可以进一步通过采用下限级联,作为证明加速已经快速计算。相反,rapidAligner的sdist调用返回所有位置的对齐分数,允许以后进行处理,例如计算排名匹配的不重叠分区。进一步重复对齐几次,进行可靠的运行时测量。两种计算模式“ fft”和“天真”都非常快,并且返回难以区分的结果:



  • “天真”:将所有n-m + 1个对齐候选者(可选)进行归一化,分别以最小的内存占用量进行比较,但渐近计算复杂度为O(n * m)。使用翘曲汇总的统计信息和累加方案,该模式仍然相当快。

  • “ fft”:如果m> log_2(n),可以利用卷积定理来显着加快计算速度,从而导致O(n * log n)运行时,但占用的内存更大。计算模式完全独立于查询的长度,建议使用大输入量。较高的内存使用量,主要是由计算速度快但位置不当的原语引起的,例如CUDA加速的快速傅立叶变换和前缀扫描。

 查看原始Cell5.ipynb 主办了由GitHub

查询和流(主题)都以双精度形式存储为普通NumPy数组在CPU上。结果,测得的运行时间包括CPU和GPU之间昂贵的内存传输。RapidAligner允许与所有CUDA阵列接口兼容框架(例如PyTorch,CuPy,Numba,RAPIDS和Jax)进行无缝互操作。可以进一步减少在快速GPU RAM中缓存数据时的运行时间,以避免CPU和GPU之间不必要的内存移动。即使在短查询条件下,基于傅立叶的模式,胜过简单的模式

 查看原始Cell6.ipynb 主办了由GitHub

这相当于单个GPU上每秒高达25亿次的完全对齐。仅使用驻留在GPU上的输入数据来报告运行时。sdist产生的匹配已经是不错的匹配,检查均值调整是否可以改善结果:

 查看原始Cell7.ipynb 主办了由GitHub

正如预期的那样,平均调整返回了更好的匹配,考虑的候选对象沿测量轴的相对偏移没有消失。对于2000万个对齐位置,执行时间保持在10 ms的低水平。这相当于每秒20亿次完全对齐。仍然可以使用zdist改善幅度失配:

查看原始Cell8.ipynb 主办了由GitHub

Etvoilà,z归一化的欧几里得距离,揭示了数据库中的doppelgänger,与查询几乎没有区别。在每秒超过16亿次对齐中,性能仍然很高。傅里叶模式的一个惊人特性,运行时间实际上独立于查询长度,对于固定的流长度和变化的查询大小,运行时间是恒定的。当对齐非常长的查询时,变得很方便。


结论

在较长的时间序列数据流中寻找形状是一项计算量大的任务,通常作为独立例程或作为子例程嵌入高级算法中,例如用于异常检测。具有空前的内存带宽的大型并行加速器(例如NVIDIA A100 GPU)非常适合解决这一挑战。quickAligner是轻量级的库,每秒处理数十亿个比对,同时支持候选序列的通用归一化模式。可以进一步采用高度优化的FFT例程cuFFT和前缀扫描CUB从CUDA-X软件堆栈中获取数据,提供与查询长度无关的对齐模式。源代码和笔记本可在NVIDIA RapidAligner下公开获得。 

 



推荐阅读
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 应用场景当遇到数据分类,聚类,预测等场景问题,普通的SQL方法无法解决,需要借助算法这件武器,比如聚类算法,分类算法,预测算法等等,但是手动去研究一个算法比较吃力,有没有那种工具, ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
  • sqlserver触发器写法_技术书籍荐读不可错过的SQL Server数据库书单来袭!
    朱熹读书之法,在循序渐进,熟读而精思。2019年转眼就要过去了,这一年,你读了哪些书,得到了哪些收获ÿ ... [详细]
author-avatar
naniwang99_537_742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有