当前位置:   article > 正文

时间序列分类算法 极简设计之ROCKET、MiniRocket详解及python实战

rocket算法

前言

时间序列分类任务也是比较常见的任务,根据分类,来判断时间序列的性质,类别等。

其中rocket算法十分另类,看似用的非常简单且暴力的方式,却拿到了不错的效果,以及拥有非常快的推理和训练速度。

后续还有minirocket,在rocket的基础上进行简化,在基本上不损失精度的前提下,拥有更快的速度。

ROCKET(RandOm Convolutional KErnel Transform)

ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels

论文:https://arxiv.org/abs/1910.13051 github:https://github.com/angus924/rocket

理论知识

ROCKET算法的优点在于其简单性和效率。梳理一下训练和预测过程:

  1. 随机生成卷积核: 生成大量卷积核(例如10,000个)。且这些卷积核都是不同的,拥有随机的长度、扩张和填充,以及随机的权重和偏差,这意味着它们不是从数据中学习得到的,而是预先设定的。

  2. 对时间序列进行卷积: 使用生成的卷积核对每个时间序列进行卷积运算。提取时间序列数据中各种模式和特征。

  3. 从卷积结果中提取特征: 对于每个卷积核得到的卷积结果,ROCKET计算两个简单的统计量:最大值(类似于maxpooling)和正数值的比例(ppv:proportion of positive values)。使得分类器能够衡量给定模式在时间序列中的流行程度。所以如果对于一条时间序列来说,会产生卷积核数量✖️2的特征树

  4. 训练线性分类器: 利用提取的特征来训练一个线性分类器(线性的都可以)。ROCKET通过将时间序列转换为特征向量,使得分类器可以应用于标准的机器学习任务。

  5. 进行预测: 使用训练好的分类器对新的时间序列数据进行分类预测。

实战

具体源码可以看

  • https://github.com/angus924/rocket/blob/master/code/rocket_functions.py

3a6a975089bb8b3dcdc5909347f6fb3c.jpeg

这块就是卷积提取特征的过程

具体使用:

  1. if __name__ == '__main__':
  2. x = np.random.uniform(0, 1, 30)
  3. x = x.reshape((1, len(x)))
  4. kernels = generate_kernels(30, 20)
  5. y = apply_kernels(x, kernels)
  6. print(y.shape)

结果

c4d913277926f2d76d57b14d02167190.jpeg

或者直接用sktime去学习怎么用,现在官方也在引导大家用sktime去用rocket,sktime里把rocket的几种变体融合在一起了

sktime:https://www.sktime.net/en/stable/

rocket api:https://www.sktime.net/en/stable/api_reference/auto_generated/sktime.classification.kernel_based.RocketClassifier.html

输入 可以是怎么多格式

  1. Parameters
  2. ----------
  3. X : 3D np.array (any number of dimensions, equal length series)
  4. of shape [n_instances, n_dimensions, series_length]
  5. or 2D np.array (univariate, equal length series)
  6. of shape [n_instances, series_length]
  7. or pd.DataFrame with each column a dimension, each cell a pd.Series
  8. (any number of dimensions, equal or unequal length series)
  9. or of any other supported Panel mtype
  10. for list of mtypes, see datatypes.SCITYPE_REGISTER
  11. for specifications, see examples/AA_datatypes_and_datasets.ipynb
  12. y : 1D np.array of int, of shape [n_instances] - class labels for fitting
  13. indices correspond to instance indices in X

这块不赘述了,直接看代码详解很详细,不光是 rocket,只要是分类的方法,在sktime里的输入格式都是一样的

  1. from sktime.classification.kernel_based import RocketClassifier
  2. from sktime.datasets import load_unit_test
  3. X_train, y_train = load_unit_test(split="train", return_X_y=True)
  4. print(X_train.shape, y_train.shape)
  5. X_test, y_test = load_unit_test(split="test", return_X_y=True)
  6. clf = RocketClassifier(num_kernels=500)
  7. clf.fit(X_train, y_train)
  8. y_pred = clf.predict(X_test)
  9. print(y_pred)

结果

  1. (20, 1) (20,)
  2. ['1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '2' '2' '1' '2' '2' '1'
  3. '2' '2' '2' '1']

MiniRocket

MINIROCKET: A Very Fast (Almost) Deterministic Transform for Time Series Classification

论文:https://arxiv.org/abs/2012.08791 github:https://github.com/angus924/minirocket

理论优化

MiniRocket ROCKET方法的一种更快、更小型的变体,它提供几乎相同的性能,同时极大地减少了计算的时间和资源消耗,在更大的数据集上比 Rocket 快 75 倍,同时保持基本相同的准确性。

核心思想是简化ROCKET的随机卷积核特征提取过程。主要是两个过程优化了,其他基本一致。

  1. 卷积核确定化

  2. 特征只用了ppv

301cd486ee31a9c33d857d2cec66c7f0.jpeg

论文一张图全部直接概括了。

实战

  1. from sktime.classification.kernel_based import RocketClassifier
  2. from sktime.datasets import load_unit_test
  3. X_train, y_train = load_unit_test(split="train", return_X_y=True)
  4. print(X_train.shape, y_train.shape)
  5. X_test, y_test = load_unit_test(split="test", return_X_y=True)
  6. clf = RocketClassifier(num_kernels=500, rocket_transform="minirocket")
  7. clf.fit(X_train, y_train)
  8. y_pred = clf.predict(X_test)
  9. print(y_pred)

推荐阅读:

我的2022届互联网校招分享

我的2021总结

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

互联网校招研发薪资汇总

公众号:AI蜗牛车

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

c1b340b4538a0d3db49e9b769c5e406c.jpeg

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/925323
推荐阅读
相关标签
  

闽ICP备14008679号