logo

シンディアルゴリズムとは? 📂統計的分析

シンディアルゴリズムとは?

アルゴリズム 1

状態空間が Rn\mathbb{R}^{n} であるダイナミカルシステムが、次のようにスムース関数 f:RnRnf : \mathbb{R}^{n} \to \mathbb{R}^{n} で与えられているとしよう。 x˙=f(x) \dot{\mathbf{x}} = f \left( \mathbf{x} \right) 簡単に x=(x1,,xn)\mathbf{x} = \left( x_{1} , \cdots , x_{n} \right) そしてx˙=(x1˙,,xn˙)\dot{\mathbf{x}} = \left( \dot{x_{1}} , \cdots , \dot{x_{n}} \right) と示される場合、mNm \in \mathbb{N} の時点 {tk}k=1m\left\{ t_{k} \right\}_{k=1}^{m} について、次のようにデザインマトリックス を構築する。 X=[xT(t1)xT(t2)xT(tm)]=[x1(t1)x2(t1)xn(t1)x1(t2)x2(t2)xn(t2)x1(tm)x2(tm)xn(tm)]X˙=[x˙T(t1)x˙T(t2)x˙T(tm)]=[x˙1(t1)x˙2(t1)x˙n(t1)x˙1(t2)x˙2(t2)x˙n(t2)x˙1(tm)x˙2(tm)x˙n(tm)]Rm×n \begin{align*} X =& \begin{bmatrix} \mathbf{x}^{T} \left( t_{1} \right) \\ \mathbf{x}^{T} \left( t_{2} \right) \\ \vdots \\ \mathbf{x}^{T} \left( t_{m} \right) \end{bmatrix} = \begin{bmatrix} x_{1} \left( t_{1} \right) & x_{2} \left( t_{1} \right) & \cdots & x_{n} \left( t_{1} \right) \\ x_{1} \left( t_{2} \right) & x_{2} \left( t_{2} \right) & \cdots & x_{n} \left( t_{2} \right) \\ \vdots & \vdots & \ddots & \vdots \\ x_{1} \left( t_{m} \right) & x_{2} \left( t_{m} \right) & \cdots & x_{n} \left( t_{m} \right) \end{bmatrix} \\ \dot{X} =& \begin{bmatrix} \dot{\mathbf{x}}^{T} \left( t_{1} \right) \\ \dot{\mathbf{x}}^{T} \left( t_{2} \right) \\ \vdots \\ \dot{\mathbf{x}}^{T} \left( t_{m} \right) \end{bmatrix} = \begin{bmatrix} \dot{x}_{1} \left( t_{1} \right) & \dot{x}_{2} \left( t_{1} \right) & \cdots & \dot{x}_{n} \left( t_{1} \right) \\ \dot{x}_{1} \left( t_{2} \right) & \dot{x}_{2} \left( t_{2} \right) & \cdots & \dot{x}_{n} \left( t_{2} \right) \\ \vdots & \vdots & \ddots & \vdots \\ \dot{x}_{1} \left( t_{m} \right) & \dot{x}_{2} \left( t_{m} \right) & \cdots & \dot{x}_{n} \left( t_{m} \right) \end{bmatrix} \in \mathbb{R}^{m \times n} \end{align*} XX独立変数に、いくつかの非線形関数を適用して得られる派生変数で作られた行列 Θ(X)Rm×p\Theta \left( X \right) \in \mathbb{R}^{m \times p}ライブラリと呼び、各カラムを基底basisまたは候補candidateとも呼ぶ。 X˙=Θ(X)Ξ \dot{X} = \Theta \left( X \right) \Xi 上の行列方程式STLSQを実施して、可能な限りスパースΞRp×n\Xi \in \mathbb{R}^{p \times n} を求めるスパース回帰を通じて、与えられたダイナミカルシステムの支配方程式governing equationを見つけるアルゴリズムを シンディーsINDy(Sparse Identification of Nonlinear Dynamical systems) アルゴリズムと呼ぶ。

説明

シンディーは、与えられたデータから可能な限りスパースな微分方程式を見つけ出し、データ駆動型モデルdata-driven modelを見つける方法の一つとして、2011年にライYing-Chen Lai教授らが提案した圧縮センシングに似ているが、過小決定系の代わりに過剰決定系を使用し、ノイズのあるデータに対する数値的なロバスト性を向上させたアルゴリズムである。

STLSQ

STLSQ: フルランク行列 XRm×pX \in \mathbb{R}^{m \times p}YRm×nY \in \mathbb{R}^{m \times n} に対し、行列方程式 Y=XB Y = X B が与えられた場合、できるだけスパースBRp×nB \in \mathbb{R}^{p \times n} を探すスパース回帰問題を考える。STLSQsequentially Thresholded Least-Squares Algorithmは、シンディーアルゴリズムを提案したブラントンbruntonの論文で使用されたメソッドで、その名の通り、最小二乗法を繰り返しながら、各成分の絶対値が与えられたスレッショルディング λ\lambda 以下に落ちると 00 として処理し、そのカラム(独立変数)を削除する方式で構成されている。

ダイナミカルシステムから得られたデータにSTLSQを使用することがシンディーアルゴリズムと言われているが、実際の関連を考えると、シンディーのために特別に設計された方法がSTLSQそのものである。 STLSQSINDyY=X˙X=Θ(X)B=Ξ \begin{align*} \text{STLSQ} \cdots& \text{SINDy} \\ Y =& \dot{X} \\ X =& \Theta (X) \\ B =& \Xi \end{align*}

ライブラリ

Θ(X)=[1xyzx2xyxzy2z5] \Theta (X) = \begin{bmatrix} 1 & x & y & z & x^{2} & xy & xz & y^{2} & \cdots & z^{5} \end{bmatrix} ライブラリΘ(X)\Theta (X)は、上のように多項関数で単に埋めることができる。かなりシンプルなスムースシステムであれば、十分に高い次数を使った場合、XXの多項関数でX˙\dot{X}を近似できることは、ストーン・ワイエルシュトラスの定理により数学的に保証されているし、三角関数 sin(kx)\sin (kx)cos(kx)\cos (kx) は、フーリエ基底とも呼ばれることがある2

上の図は、シンディーが実際にどのように機能するかを非常によく説明している。 dxdt=σx+σydydt=xz+ρxydzdt=xyβz \begin{align*} {{dx} \over {dt}} =& - \sigma x + \sigma y \\ {{dy} \over {dt}} =& - xz + \rho x - y \\ {{dz} \over {dt}} =& xy - \beta z \end{align*} ローレンツアトラクターと仮定した場合、その軌道からデータをサンプリングした後、上述した方法で行列方程式を立て、STLSQを使用して元の「微分方程式自体」を復元した。ローレンツアトラクターの微分方程式は、xxyyxzxzxyxy のように2次以下の多項式で構成されているため、成功裏に支配方程式を見つけることができる。


  1. Brunton. (2016). Discovering governing equations from data by sparse identification of nonlinear dynamical systems: https://doi.org/10.1073/pnas.1517384113 ↩︎

  2. https://docs.sciml.ai/DataDrivenDiffEq/stable/basis/ ↩︎