tsfreshとは?

tsfreshは、Pythonの時系列データ解析のための強力なライブラリです。機械学習や統計解析において、時系列データから自動的に有意な特徴量を抽出することができます。「time series feature extraction based on scalable hypothesis tests」の略称で、複雑な時系列データから洞察を得るプロセスを大幅に簡素化します。

主な特徴

  • 時系列データから自動的に多数の特徴量を生成
  • 統計的仮説検定に基づく特徴量選択
  • pandasデータフレームとの高い互換性
  • 機械学習モデルの前処理に最適

インストール方法

pipを使用してインストールできます:

pip install tsfresh

使用例

以下に、tsfreshを使用して時系列データから特徴量を抽出する基本的な例を示します:

import pandas as pd
import numpy as np
from tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_container import TSFreshDataFrameContainer
 
# サンプルの時系列データを作成
def generate_time_series_data(n_samples=100, n_features=3):
    data = []
    for i in range(n_samples):
        for j in range(n_features):
            time_series = pd.DataFrame({
                'id': [i] * 50,
                'time': range(50),
                'value': np.cumsum(np.random.normal(0, 1, 50))
            })
            data.append(time_series)
    return pd.concat(data)
 
# データの生成
df = generate_time_series_data()
 
# 特徴量の抽出
X = extract_features(df, column_id='id', column_value='value')
 
# 特徴量選択(統計的に有意な特徴量のみを選択)
X_selected = select_features(X, y=np.random.randint(0, 2, len(X)))
 
print("オリジナルの特徴量数:", X.shape[1])
print("選択された特徴量数:", X_selected.shape[1])
 

このコード例では、以下のステップを実行しています:

  1. ダミーの時系列データを生成
  2. extract_features()関数で特徴量を抽出
  3. select_features()で統計的に有意な特徴量を選択

注意点と推奨事項

  • 大規模なデータセットでは処理時間に注意(1つの変数でも結構な時間がかかる。)
  • 前処理として、データのクリーニングと正規化を推奨
  • 特徴量の解釈には統計的な知識が必要

リンク