-
Notifications
You must be signed in to change notification settings - Fork 0
Multivariate Validation
多次元時系列に対する遅延埋め込みが正しく機能しているかを、6つの観点から検証しました。
検証スクリプト: examples/validate_multivariate.py
| # | 検証項目 | 結果 | 判定 |
|---|---|---|---|
| 1 | チャネル順序 | 期待通りのインターリーブ | PASS |
| 2 | チャネル間相関の保存 | 最大差 0.000023 | PASS |
| 3 | Lorenz 系の構造保存 | バタフライ構造が復元 | PASS |
| 4 | ノイズ耐性 | σ=0.5 でも距離相関 0.79 | PASS |
| 5 | スケール不変性 | ラウンドトリップ誤差 ~1e-13 | PASS |
| 6 | 単変量 vs 多変量の一貫性 | 差分 = 0 (完全一致) | PASS |
多変量埋め込みのメモリレイアウトを、小さなデータで具体値を照合して検証します。
入力: 2チャネル, 5ステップ
[[1, 100], [2, 200], [3, 300], [4, 400], [5, 500]]
出力 (m=3, τ=1):
Row 0: [1, 100, 2, 200, 3, 300] → [ch0(t), ch1(t), ch0(t+1), ch1(t+1), ch0(t+2), ch1(t+2)]
結論: チャネルはインターリーブ形式 [ch0(t), ch1(t), ch0(t+τ), ch1(t+τ), ...] で配置されます。これは各時刻の全チャネルをまとめてから次の遅延コピーに移る方式です。
相関を持つ3チャネルの時系列 (y = 0.8x + noise, z = -0.5x + 0.3y + noise) に対して、埋め込み前後で相関行列が保存されるかを検証します。

結果: 埋め込み前後の相関行列の最大差は 0.000023。これは端の切り詰め(τ分の短縮)による統計的な微差であり、遅延埋め込み自体がチャネル間の相関構造を歪めていないことを示しています。
遅延埋め込みは各チャネルを独立に遅延コピーするため、チャネル間の相関構造が保存されることは自明ではありません。実際には、同一時刻の全チャネルをまとめてコピーするため、相関構造は正確に保存されます。
Lorenz アトラクタの (x, y) 2チャネルを多変量埋め込みし、バタフライ構造が復元されるか視覚的に検証します。単変量 x のみの埋め込みとも比較しています。

結果:
- 左: 真のアトラクタ (x, y, z)
- 中央: 2チャネル多変量埋め込み → [x(t), y(t), x(t+τ)] の3D射影でバタフライ構造が復元
- 右: 単変量 x(t) のみの埋め込み → 同様に構造が復元
多変量埋め込みは複数チャネルの情報を活用するため、少ない遅延コピー (m=2) でも高次元の構造を捉えられます。
加法性ガウスノイズ (σ = 0 ~ 0.5) を3チャネルのデータに加え、2つの指標で評価します。

transform → inverse_transform のラウンドトリップ誤差は、全ノイズレベルで ~4e-17 (計算機イプシロン程度)。ノイズが乗ったデータでも、逆変換は数値的に正確です。
| パラメータ | RMSE (σ=0) | RMSE (σ=0.5) |
|---|---|---|
| m=2, τ=1 | ~4e-17 | ~4e-17 |
| m=3, τ=2 | ~4e-17 | ~6e-17 |
| m=4, τ=3 | ~4e-17 | ~4e-17 |
クリーンデータとノイズ入りデータの埋め込み空間におけるペアワイズ距離の相関を評価します。
| ノイズ σ | 距離相関 |
|---|---|
| 0 | 1.000 |
| 0.01 | 0.999 |
| 0.05 | 0.998 |
| 0.1 | 0.990 |
| 0.2 | 0.964 |
| 0.5 | 0.794 |
結論: σ=0.5(信号振幅の50%)という大きなノイズでも距離相関 0.79 を維持。埋め込みの幾何的構造はノイズに対してロバストです。
振幅が大きく異なる3チャネル(~1, ~1000, ~0.001)を持つデータに対する検証です。

結果:
| 条件 | ラウンドトリップ最大誤差 |
|---|---|
| 混合スケール (1, 1000, 0.001) | 1.14e-13 |
| 正規化後 | 2.22e-16 |
遅延埋め込み自体はスケールに依存しない線形操作です。ラウンドトリップは全スケールで正確に動作します。
注意点: 埋め込み空間の分散は大振幅チャネルに支配されるため(左下図)、距離ベースの後段処理(FNN、最近傍探索など)を行う場合は事前正規化を推奨します。
多変量埋め込みから各チャネルの遅延コピーを抽出した結果と、チャネルごとに単変量埋め込みした結果を比較します。

結果:
| チャネル | 最大差 |
|---|---|
| x | 0.00e+00 |
| y | 0.00e+00 |
完全一致。多変量埋め込みは各チャネルを独立に遅延コピーしてインターリーブしたものと数値的に同一です。つまり:
multivariate_result[:, 0::d] == univariate_embedding(channel_0)
multivariate_result[:, 1::d] == univariate_embedding(channel_1)
この性質により、多変量埋め込みの結果を信頼して利用できます。
多次元データの遅延埋め込みを検証するには、以下のチェックリストを推奨します:
- 値の直接検証: 小さなデータでチャネル配置を確認
- 統計量の保存: 相関行列、分散など統計的性質の前後比較
- 既知システムでの構造復元: Lorenz 等の力学系で位相的構造を視覚確認
- ノイズ下でのロバスト性: ラウンドトリップ精度と幾何的整合性
- スケール感度: 異なる振幅チャネルの影響確認
- 一貫性チェック: 多変量と単変量のチャネル別比較