時系列

sktimeの時系列分類アルゴリズム

  目次 1.距離ベース(Distance-based) 2.間隔ベース(Interval-based) 3.辞書ベース(Dictionary-based) 4.頻度ベース(Frequency-based) 5.シェイプレットベース(Shapelet-based) 6.ハイブリッド(Hybrid)   一般的な分類アルゴリズムはデータの時間順序に含まれる情報を無視します。時系列分類アルゴリズムは、時系列分類の問題に対して表形式の分類器よりもパフォーマンスが優れている傾向があります。 sktimeには、時系列分類のための多くのアルゴリズムがあります。この記事は時系列分類アルゴリズムの5つのカテゴリを紹介します。   1.距離ベース(Distance-based ) これらの分類アルゴリズムは、距離メトリックを使用して分類します。   K-Nearest Neighbors (Dynamic Time Warping) 代表的なk最近傍(KNN)アルゴリズムは、ユークリッド距離メトリック(Euclidean distance) をdynamic time warping(DTW)メトリックに置き換えることにより、時系列に適合させることができます。DTWは、時間、速度、または長さが正確に一致しない可能性がある2つのシーケンス間の類似性を測定します。   メリット KNN+DTWは、シンプルでよい結果であり、ハイパーパラメータ調整を必要がありません。ベンチマークのベースアルゴリズムとしてよく利用します。   デメリット KNN+DTWは、計算に多くのスペースと時間を必要とします。 シリーズが特定のクラスに割り当てられた理由に関する限られた情報を提供します。 ノイズの多いデータはパフォーマンスが低下する可能性があります。   DTW(Dynamic Time Warping)動的時間伸縮法の記事 LINK   2.間隔ベース(Interval-based ) 時系列フォレスト分類(Time Series Forest Classifier) 時系列フォレスト(TSF)分類は、ランダムフォレスト分類器をシリーズデータに適合させます。下記のような計算を行います。 ランダムな開始位置とランダムな長さで、シリーズをランダムな間隔に分割します。 各区間から特徴量(平均、標準偏差、および勾配)を抽出します。 抽出された特徴量で決定木を学習します。 必要な数のツリーが構築し、学習時間が終わるまで、手順1〜3を繰り返します。 新しいデータは、モデルのすべての木の過半数の投票に従って分類されます。   メリット 実験的研究により、時系列フォレストは、動的なタイムワーピングを伴う最近傍などのベースラインよりも優れていることが示されています …

sktimeの時系列分類アルゴリズム Read More »

sktimeの時系列予測

目次 1. sktime 2. 実験: _2.1 環境構築 _2.2 データロード _2.3 モデル学習 _2.4 予測 _2.5 モデル評価   1. sktime Sktimeとはオープンソースのscikit-learns互換の時系列アルゴリズムのPythonライブラリです。時系列関連のタスクを使用した機械学習の統合インターフェースを提供します。これらのタスクは、次のような学習ベースのタスクと密接に関連しています。 時系列予測 時系列回帰 時系列分類 ディープラーニングについては、コンパニオンパッケージsktime-dlを参照してください。 https://github.com/sktime/sktime-dl   今回の記事は時系列分類を開設したいと思います。   2. 実験: 環境:Colab データセット:BasicMotions データセットは、4つのアクティビティのスマートウォッチから生成されます。 参加者は、ウォーキング、休憩、ランニング、バドミントンの動きを記録する必要がありました。 データは、10秒間、10分の1秒ごとに1回記録されます。 http://www.timeseriesclassification.com/description.php?Dataset=BasicMotions   2.1 環境構築 ライブラリをインストールします。 !pip install sktime   ライブラリをインポートします。 import numpy as np from sklearn.model_selection import train_test_split from sklearn.pipeline import Pipeline from sktime.classification.compose import ( ColumnEnsembleClassifier, TimeSeriesForestClassifier, ) from sktime.classification.dictionary_based import BOSSEnsemble from sktime.classification.shapelet_based import MrSEQLClassifier from sktime.datasets import load_basic_motions from sktime.transformations.panel.compose import ColumnConcatenator   2.2 データロード …

sktimeの時系列予測 Read More »

時系列データとは?

時系列データとは、ある一時期の状態を表すような、時間的な変化を、連続的に観測して得られた値の系列のことです。例えば、毎日の売上データ、毎時間の気温、月ごとの来客数などです。時系列データの利用は、気候パターンの解析、交通状況の監視、人口統計学的傾向の調査データの事です。   一口に時間に関するデータといっても複数のタイプがあります。   ・点過程データ 間隔が一定ではないようなデータのタイプです。点過程データの目的は、事象が発生したという事を分析することです。地震・故障のタイミングや来客のデータに使われます。数量よりも発生するかどうかを分析のターゲットにしています。   ・時系列データ 時間的な変化を、連続的に得られたデータでそれぞれを直線で結んだものになります。通常時間のデータといえば、こちらを想定しています。   ・キューデータ 点過程データの一種になります。コールセンターの着信数・応答数、トランザクションログ、ATMの利用等の分析の時のデータタイプになります。   この中でも時系列データは「過去」と「現在」、そして「未来」があり、これらがつながっているデータであります。前の値によって、前の前の値が、現在の値に影響をしていることを「自己相関」と言います。データを時系列に並べることによって、過去の様子を分析することも可能ですし、これから先の事象について予測することが可能になります。しかし点過程データやキューデータでは過去に大きく依存しているかというとそうではありません。地震が起こるかどうかが前の起こったデータ見るのが難しいからです。また故障のタイミングも他の要因に起因している事も多く、要因から分析する事も多いからです。 では、時系列データを作成し簡単に分析してみます。   Python   import pandas as pd import numpy as np import matplotlib.pylab as plt   dateparse = lambda dates: pd.datetime.strptime(dates, ‘%Y-%m’) data = pd.read_csv(‘AirPassengers.csv’, parse_dates=[‘Month’], index_col=’Month’,date_parser=dateparse)     print (data.head()) plt.plot(data)                Month  …

時系列データとは? Read More »