Pyts入门之时间序列的分类---SAX-VSM算法详解(三)

简介

相信不少人会被这个标题唬住,什么叫SAX-VSM算法,其实并不难,容我细细道来。

首先它来自2013年的"SAX-VSM: Interpretable Time Series Classification Using SAX and Vector Space Model"这篇论文,全称为Symbolic Aggregate approXimation in Vector Space Model(在向量空间模型中进行符号聚合近似),其实就是先进行符号聚合近似(SAX),再进行词向量的转换(VSM),细心的朋友应该会发现第一节中简单介绍过SAX。

看到这里,你们可能会想这和时间序列的分类有什么关系呢?

实际上,这是一种把时间序列转换为字母的特征表达,然后使用自然语言处理(NLP)的方法来进行分类的方法。

在Pyts中呢,对于SAX的实现使用了词袋模型,对于词向量的转换则使用了tf-idf模型,所以它的本质就是数字-词转换+Tf-idf。那么如何进行分类的任务呢?只要计算余弦相似度就可以了。
(余弦相似度的百度百科

所以,它的算法步骤分为以下五步(假设分类有两类):
1.对训练集中每一个时间序列进行窗口滑动抽取子序列。
2.对每一个子序列进行词转换为字母序列。
3.对字母序列进行tf-idf的向量转换,得到两类tf-idf向量。
4.对新的时间序列进行同样的转换,分别计算和两类tf-idf向量的余弦相似度。
5.两个相似度哪个更高,则把新的时间序列分为哪一类。

那么我们接下来先讲两个基本概念:

滑动窗口

可能有些朋友对滑动窗口没什么概念。。它长下面这样子:
在这里插入图片描述
比如目前窗口大小为4,步长为1,就是以1个数字为单位,里面有4个数字一起往右滑动,所以对上面这个序列进行抽取子序列的结果是:
主序列1:(0,1,2,3),(1,2,3,4),(2,3,4,5)
主序列2:(6,7,8,9),(7,8,9,10),(8,9,10,11)
抽取出了2x3总共六个子序列。

词转换

这里的词袋(bagofwords)其实更形象的说法是把数字变成字母(在0.11版本中将变成word_extractor,即文字提取),直接上代码,依旧以上面这两行序列作例子:

import numpy as np
from pyts.bag_of_words import BagOfWords
X = np.arange(12).reshape(2, 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值