本文摘译自https://towardsdatascience.com/introduction-to-matrix-profiles-5568f3375d90

在时间序列分析中,通常对两件事感兴趣:异常和趋势。例如,医生检查一个心电图,是为了发现表明患者高危的异常事件。在零售行业工作的个人需要了解什么商品销售以及何时出售(季节性)以增加利润。找到时间序列内异常和趋势的一种方法是执行相似连接(similarity join)。本质上,可以通过计算每对序列片段之间的距离,将时间序列的片段与自身进行比较。尽管使用嵌套循环实现朴素算法的工作量很小,但对于一个中等大小的时间序列,使用这种方法可能需要数月或数年才能得到答案。而利用Matrix Profile算法可以大大减少计算时间。

Matrix Profile是2016年推出的一种相对较新的用于时间序列分析的数据结构,由加利福尼亚河滨大学的Eamonn Keogh和新墨西哥大学的Abdullah Mueen开发。使用Matrix Profile的一些优点是,它与领域无关,快速,提供精确(在需要时近似)的解决方案并且仅需要单个参数。

Matrix Profile概述

Matrix Profile具有两个主要组成部分:Distance profile和Profile index。Distance profile是最小标准化欧几里得距离的向量。Profile index包含其第一个最近邻居的索引。换句话说,它是其最相似的子序列的位置。

计算Matrix Profile的算法使用滑动窗口方法。当窗口大小为m时,算法为:
1.计算窗口子序列相对于整个时间序列的距离
2.设置排除区域以忽略不重要的匹配
3.用最小值更新Distance profile
4.设置第一个最近邻居索引

上面概述的距离计算将会发生n-m +1次;其中,n是时间序列的长度,m是窗口大小。由于子序列是从时间序列本身中提取的,因此需要一个排除区域来防止不重要的匹配。例如,匹配自身的代码片段或非常接近自身的代码片段被视为不重要的匹配。排除区域仅是当前窗口索引前后的窗口大小(m)的一半。在计算最小距离和最近邻居索引时,将忽略这些索引处的值。下面显示了从第二个窗口开始的距离分布计算的可视化效果。


第二个窗口的值(X2到X5)在时间序列上滑动来计算每个子序列的点积。一旦计算出所有的点积,就将排除区域应用于distances,并将最小距离存储在Matrix Profile中。扔掉多余的距离,仅保持最小的距离,可以将空间复杂度降低到0(n)。

Motifs and Discords

简而言之,motif是时间序列中的重复模式,而discard则是异常。通过计算矩阵配置文件,可以轻松找到前K个motif或discard。Matrix Profile在欧几、里得空间中存储距离,这意味着接近0的距离与时间序列中的另一个子序列最相似,而远离0的距离(例如100)与任何其他子序列都不一样。提取最小距离可得出motif,最大距离可得出discard。

Matrix Profile算法

有几种算法可以计算Matrix Profile。下表提供了一些非详尽的算法列表以及有关它们的简短说明。

Matrix Profile挖掘算法

一旦计算出Matrix Profile,就必须使用其他算法从中提取信息。之前在讨论motif和discard时简要提到了这一点。这是要在Matrix Profile之上运行的算法的非详尽列表。

案例:纽约市黄色出租车出租车乘客计数

原始数据:

在不同的窗口大小上计算Matrix Profiles:

top K discords算法:

后记

正好刚入门学习Matrix Profile,没有在网上找到相关的中文学习资料,看到这篇Medium上的介绍文章还不错,就摘取了一些内容翻译过来了。这篇文章讲的很浅,要学习更多内容可以参考原文链接后的参考资料进行进一步学习。希望对大家有一些帮助。

Matrix Profile介绍相关推荐

  1. 【Matrix Profile VII】

    Matrix Profile VII 一.文献相关信息 二.论文拟解决的主要问题 三.论文的主要研究内容 四.论文使用的所有理论方法/算法 五.时间序列链 六.STOMP和LRSTOMP 七.时间序列 ...

  2. Maven——profile介绍

    2019独角兽企业重金招聘Python工程师标准>>> 4       profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定 ...

  3. Maven简介(三)——profile介绍

    Maven简介(三)--profile介绍 博客分类: maven mavenprofile激活active  4       profile介绍 4.1     profile简介 profile可 ...

  4. Profile介绍与使用

    Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活.指定参数等方式快速切换环境 1.多profile文件形式 下面的代码系:默认8080端口,当能找到dev环境的配置文件时,优 ...

  5. Spring系列(十一):@Profile 注解用法介绍

    今天给大家分享Spring属性注入的注解@Profile 介绍,希望对大家能有所帮助! 一.@Profile 注解的作用 在Spring容器中如果存在同一类型的多个组件,可以使用@Profile注解标 ...

  6. 二维码Data Matrix的解码实现(zxing-cpp)

    二维码Data Matrix的介绍可以参考http://blog.csdn.net/fengbingchun/article/details/44279967 ,以下是通过zxing-cpp开源库实现 ...

  7. 二维码Data Matrix编码、解码使用举例

    二维码Data Matrix的介绍见: http://blog.csdn.net/fengbingchun/article/details/44279967  ,这里简单写了个生成二维码和对二维码进行 ...

  8. SpringBoot配置Profile以及配置文件的加载位置

    Profile介绍 Profile是Spring在不同环境的使用的时候提供的不同的配置方案,在Spring源码中对于Profile的解析也是放在第一位的.Spring配置解析的时候第一个判断的就是Pr ...

  9. maven仓库的优先级,profile的优先级

    在maven中主要有以下几种仓库的设置 本地仓库 settings里面profile中设置的仓库 mirror仓库 pom文件中的repository 结论: 本地仓库 >profile > ...

最新文章

  1. ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel
  2. GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机
  3. Android学习拾遗
  4. _Linux 系统挂载数据盘
  5. database design
  6. ERP流程的一个生动的示例~~
  7. 杭电1259ZJUTACM
  8. 英特尔开源计算机视觉数据标签工具CVAT,加速数据注释
  9. mysql数据没有同步更新_MySQL数据库主从没有同步的两种解决方案
  10. foreman容器化部署
  11. 常见数据分析误区有哪些
  12. A1055[The World's Richest]好题
  13. FastStone Capture9.6
  14. 用myeclipse向Tomcat发布项目的时候出现发布的项目名和文件名称不一致的现象的解决方法(图文)
  15. PHP 无限极分类下拉列表实现
  16. CityMaker学习教程13 osg模型的移动
  17. 【标签】那些想读的书
  18. Ubuntu16.04安装cello
  19. MySQL-SQL语句命令
  20. Talib技术因子详解(四)

热门文章

  1. 学术会议日常英语交流_有效的日常会议的3个问题
  2. 如何检测、清理Greenplum膨胀、垃圾
  3. 【未来有约】清华学霸、沙县舞王…竟还是突破RPA天花板的人?
  4. Uni-app使用原生aar本地包云打包报错
  5. 23考研 武汉理工计算机专硕-计算机技术(085404)-22408初试记录
  6. python speed为0但是速度过快_python代码加速
  7. unknown symbol in module, or unknown parameter
  8. Mac终端添加快捷命令
  9. 【日常学习笔记】2019/1/(4,7)(SSM再熟悉与网页传值)
  10. 智能路灯的应用场景,主要面临哪些痛点?