概要
SysIdentPy は、時系列データから非線形動的モデルを構築するための Python システム同定ツールキットです。中心となるフレームワークは NARMAX で、NARX、NAR、NFIR、ARX、ARMA などの変種があります。事前学習済みの予測器を提供するのではなく、モデリングのワークフローを提供します。ユーザーは自分のデータに合わせて、ラグ設定、基底関数、モデル選択手法、推定器を選択します。このパッケージは NumPy を基盤としており、宣言されている依存関係には SciPy と Matplotlib も含まれます。
提供されている例では、学習用の入力配列と出力配列をモデルの適合に渡し、その後、検証用配列を使って予測を生成します。多項式 NARX の例では、FROLS による構造選択と最小二乗推定を組み合わせ、選択された回帰項、推定パラメータ、誤差低減率を示します。別の例では、NARX 構成でカスタム PyTorch ニューラルネットワークまたは CatBoost 推定器を使用します。予測プロット、相対二乗誤差平方根、残差相関のユーティリティは、適合したモデルの評価に役立ちます。
適合に加えて、SysIdentPy は指定されたモデルを調べるための SimulateNARMAX を提供し、アフィン情報を用いた多目的パラメータ推定をサポートします。これらの機能は、動的プロセスモデルや非線形予測手法の評価に役立ちますが、提供されている例から、特定の化学プロセスや実運用への適合性が確立されているわけではありません。Array API ディスパッチは明示的に実験的な機能で、オプトインが必要です。NumPy 以外のバックエンドでの one-step prediction はバックエンド上で実行できますが、sequential prediction は現時点では CPU 上の NumPy にフォールバックしてから、結果を元に戻します。ニューラルネットワークの経路には PyTorch が必要ですが、パッケージのメタデータではオプション依存関係として記載されています。
主な機能
- 設定可能な入力および出力ラグを用いて、NARX、NAR、NARMA、NFIR、ARMA、ARX などの NARMAX 系モデルを構築します。
- FROLS、MetaMSS、AOLS、UOFR、Entropic Regression、Orthogonal Floating Search などの手法でモデル項を選択します。
- 線形および非線形の基底関数、15 種類を超えるパラメータ推定手法、アフィン情報を用いた多目的推定を提供します。
- カスタム PyTorch ニューラル NARX アーキテクチャと互換性のある外部推定器をサポートし、CatBoost NARX の例も提供します。
- SimulateNARMAX、予測指標、モデル項の表示、予測プロット、残差相関のユーティリティを提供します。
- 対応する選択アルゴリズム、シミュレーション、指標、ユーティリティ、および Polynomial、Fourier、Bilinear 基底関数で実験的な Array API ディスパッチを利用でき、sequential prediction のフォールバックについても説明されています。
用途
- 評価案:記録されたプロセス測定値に非線形入出力モデルを適合させ、プロセス制御への利用を検討する前に、予測と残差相関を評価します。
- 評価案:同じ学習・検証時系列を使って、多項式 NARX、ニューラル NARX、外部推定器を用いた NARX の各手法を比較します。
- 評価案:SimulateNARMAX で公開済みの NARMAX モデルを調べ、異なるパラメータ推定手法を比較します。
使い方
インストールガイドを読み、提供されているパッケージメタデータで Python と依存関係の要件を確認します。ニューラル NARX を評価する場合は PyTorch を含めてください。外部推定器の例では、追加パッケージが必要になる場合があります。
クイックスタートガイドに従い、入力・出力配列、ラグ設定、学習・検証のワークフローを確認します。プロセス測定値に応用する前に、提供されているシミュレーションデータの例から始めてください。
リポジトリの例を参考に、モデリングの経路を選びます。多項式の例では FROLS、Polynomial、LeastSquares を組み合わせています。別の例では NARXNN と CatBoost ベースの NARX を紹介しています。
学習データでモデルを適合させ、検証データで予測します。利用可能な場合は選択された項とパラメータを確認し、文書化されたユーティリティを使って予測プロット、相対二乗誤差平方根、残差相関を評価します。
別の配列バックエンドを評価する場合は、まず Array API ディスパッチガイドを確認します。バックエンド上で実行される one-step prediction と、文書に記載された NumPy/CPU のフォールバックを使う sequential prediction を区別してください。