クラスタリングライブラリ「tslearn」とは。時系列で似た系列を探索しよう

tslearn 時系列

はじめに

時系列データの分析や処理は、多くの分野で重要な課題です。例えば、金融市場の動向分析、センサーデータの異常検知、音声認識、健康データのモニタリングなど、さまざまな応用があります。

これらの似た時系列データを検出することができれば、精度の高いモデルを作成できたり、効果的な施策に繋げることができます。今回は、そのような時系列データの類似性計算を簡単に実現できるPythonライブラリ「tslearn」の特徴と使い方について紹介します。

tslearnは、時系列データの分析に非常に効果的です。ただ、時系列分析は様々な手法があり、すべての理解をすることは非常に難しいです。これらについて理解が難しい場合は、経験豊富な方とマンツーマンで学習していくのもオススメです。

tslearnの特徴

「tslearn」は、時系列データの機械学習をサポートするためのオープンソースライブラリです。以下に、tslearnの主要な特徴を挙げます。

  1. 多様な距離計算方法:
  2. 豊富なクラスタリング手法:
    • k-means、DBA-k-means、時間的BIRCHなど、時系列データのクラスタリングに特化したアルゴリズムが利用可能です。
  3. 分類とレグレッション:
    • k-NN分類器、k-NNレグレッサーなど、時系列データの分類と回帰のためのモデルも提供されています。

tslearnのインストール

tslearnは、Pythonのpipコマンドを使って簡単にインストールできます。

pip install tslearn

tslearnの基本的な使い方

以下に、tslearnを使った基本的な時系列データの類似性計算とクラスタリングの例を紹介します。

データの準備

まずは、サンプルデータを準備します。ここでは、tslearn自体が提供するデータセットを使用します。

import pandas as pd
import japanize_matplotlib
import matplotlib.pyplot as plt
from tslearn.datasets import CachedDatasets
from tslearn.preprocessing import TimeSeriesScalerMinMax

# データセットの読み込み
X_train, y_train, X_test, y_test = CachedDatasets().load_dataset("Trace")

# データのスケーリング
scaler = TimeSeriesScalerMinMax()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# DataFrameに変換して表示
# ここでは各時系列の最初の10個の値を表示
df_train = pd.DataFrame([series.flatten()[:10] for series in X_train_scaled])
df_test = pd.DataFrame([series.flatten()[:10] for series in X_test_scaled])

print("Train Data (First 10 values of each series):")
print(df_train.head())

距離計算

次に、異なる時系列データ間の距離を計算してみます。ここでは、DTW(動的時間伸縮法)を使用します。

from tslearn.metrics import dtw

# DTW距離の計算
distance = dtw(X_train_scaled[0], X_train_scaled[1])
print(f"DTW距離: {distance}")

クラスタリング

時系列データのクラスタリングを行ってみましょう。ここでは、k-meansクラスタリングを使用します。

from tslearn.clustering import TimeSeriesKMeans

# k-meansクラスタリングの実行
model = TimeSeriesKMeans(n_clusters=3, metric="dtw")
y_pred = model.fit_predict(X_train_scaled)

print(f"クラスタリング結果: {y_pred}")

結果の可視化

最後に、クラスタリング結果を可視化します。

import matplotlib.pyplot as plt

# クラスタリング結果のプロット
for yi in range(3):
    plt.subplot(3, 1, yi + 1)
    for xx in X_train_scaled[y_pred == yi]:
        plt.plot(xx.ravel(), "k-", alpha=0.2)
    plt.plot(model.cluster_centers_[yi].ravel(), "r-")
    plt.title(f"クラスタ {yi + 1}")

plt.tight_layout()
plt.show()

まとめ

「tslearn」は、時系列データの類似性計算やクラスタリングを手軽に行うための強力なツールです。豊富なアルゴリズムと高い拡張性を持ち、さまざまな時系列データの解析に対応しています。

今回紹介した基本的な使い方を参考に、ぜひtslearnを使って自分のデータを分析してみてください。

さらに詳しい情報や高度な使用方法については、公式ドキュメントを参照することをオススメします。

時系列分析の学習にオススメの方法

Pythonによる時系列分析

こちらの書籍はデータを用いてビジネス活用する方にオススメです。時系列分析について、体系的にまとまっていますが、数式は多くなく初心者にもオススメの書籍となります。

スクール:現役のデータサイエンティストに教えてもらう

時系列分析はさまざまな分析手法が存在するため、詳細まで理解しようとするのは非常に難しいです。その途中で挫折してしまうことを避けるには現役のデータサイエンティストが教えてくれるスクールに通うのもオススメです。

データサイエンティストになるためにオススメのスクール5選。
はじめに近年、多くの企業でデータ活用が進み、AIやデータ分析への期待がますます高まっています。そのため、データサイエンティストは現代のビジネス界で最も需要のある職業の一つです。データ分析、機械学習、統計学、プログラミングなど多岐に...

コメント

Copied title and URL