-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Taiyou edited this page Jan 26, 2026
·
3 revisions
Delay embedding (Takens' embedding) for multidimensional time series data in Python.
delay-embedding は、多次元時系列データに対して遅延埋め込み (delay embedding / Takens' embedding) を適用するための Python ライブラリです。
- 多次元時系列対応: 単変量・多変量どちらの時系列にも対応
- 逆変換: 埋め込み行列から元の時系列を復元(平均化による近似復元)
-
自動最適化:
dimension="auto",delay="auto"でデータから最適パラメータを自動推定 -
最適パラメータ推定:
- 最適遅延 τ: 自己相互情報量 (Auto Mutual Information) の最初の極小値
- 最適埋め込み次元 m: 偽最近傍法 (False Nearest Neighbours, FNN)
-
scikit-learn 互換:
BaseEstimator/TransformerMixin継承。Pipeline に統合可能 - NumPy ベース: 依存関係は NumPy のみ。軽量で高速
- giotto-tda と同一結果: 既存ライブラリとの数値比較で完全一致を確認済み
pip install git+https://github.com/Taiyou/delay-embedding.git
# scikit-learn 連携が必要な場合
pip install "delay-embedding[sklearn] @ git+https://github.com/Taiyou/delay-embedding.git"import numpy as np
from delay_embedding import DelayEmbedding
# --- 自動最適化(推奨)---
ts = np.column_stack([np.sin(t), np.cos(t)])
emb = DelayEmbedding(dimension="auto", delay="auto")
embedded = emb.fit_transform(ts)
print(emb.delay_, emb.dimension_) # 推定値を確認
# --- 手動指定 ---
emb = DelayEmbedding(dimension=3, delay=5)
embedded = emb.transform(ts)
# --- sklearn Pipeline ---
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
pipe = Pipeline([
("embed", DelayEmbedding(dimension="auto", delay="auto")),
("scale", StandardScaler()),
])
result = pipe.fit_transform(ts)- API Reference — クラスと関数の詳細
- Verification — 動作検証と可視化結果(単変量)
- Multivariate Validation — 多次元データの検証結果
- Comparison with giotto-tda — 既存ライブラリとの比較
- Test Suite — テストスイートの説明
Takens の定理 (1981) は、力学系の状態空間が十分な埋め込み次元 m と適切な遅延 τ を用いた遅延座標によって再構成できることを保証します。
d 次元の時系列 x(t) に対して、遅延埋め込みは以下のベクトルを構成します:
y(t) = [x(t), x(t+τ), x(t+2τ), ..., x(t+(m-1)τ)]
出力は d*m 次元のベクトルとなります。
- 遅延 τ: 自己相互情報量 (AMI) の最初の極小値を選択。これにより、各遅延コピー間の冗長性を最小化しながら十分な相関を保持
- 埋め込み次元 m: 偽最近傍法 (FNN) により、低次元空間での見かけの近傍が高次元に展開した際に「偽の近傍」でなくなる最小次元を選択