Sparse identification of non-linear dynamics

From HandWiki
Short description: Data-driven algorithm


Sparse identification of nonlinear dynamics (SINDy) is a data-driven algorithm for obtaining dynamical systems from data.[1] Given a series of snapshots of a dynamical system and its corresponding time derivatives, SINDy performs a sparsity-promoting regression (such as LASSO) on a library of nonlinear candidate functions of the snapshots against the derivatives to find the governing equations. This procedure relies on the assumption that most physical systems only have a few dominant terms which dictate the dynamics, given an appropriately selected coordinate system and quality training data.[2] It has been applied to identify the dynamics of fluids, based on proper orthogonal decomposition, as well as other complex dynamical systems, such as biological networks.[3]

Mathematical Overview

First, consider a dynamical system of the form

[math]\displaystyle{ \dot{\textbf{x}}=\frac{d}{dt}\textbf{x}(t)=\textbf{f}(\textbf{x}(t)), }[/math]

where [math]\displaystyle{ \textbf{x}(t)\in\mathbb{R}^n }[/math] is a state vector (snapshot) of the system at time [math]\displaystyle{ t }[/math] and the function [math]\displaystyle{ \textbf{f}(\textbf{x}(t)) }[/math] defines the equations of motion and constraints of the system. The time derivative may be either prescribed or numerically approximated from the snapshots.

With [math]\displaystyle{ \textbf{x} }[/math] and [math]\displaystyle{ \dot{\textbf{x}} }[/math] sampled at [math]\displaystyle{ m }[/math] equidistant points in time ([math]\displaystyle{ t_1,t_2,\cdots,t_m }[/math]), these can be arranged into matrices of the form

[math]\displaystyle{ \bf{X}=\begin{bmatrix} \bf{x}^T(t_1) \\ \bf{x}^T(t_2) \\ \vdots \\ \bf{x}^T(t_m) \end{bmatrix} = \begin{bmatrix}x_1(t_1)&x_2(t_1)&\cdots&x_n(t_1)\\ x_1(t_2)&x_2(t_2)&\cdots&x_n(t_2)\\ \vdots&\vdots&\ddots&\vdots \\ x_1(t_m)&x_2(t_m)&\cdots&x_n(t_m) \end{bmatrix}, }[/math]

and similarly for [math]\displaystyle{ \dot{\textbf{X}} }[/math].

Next, a library [math]\displaystyle{ \bf{\Theta}(\textbf{X}) }[/math] of nonlinear candidate functions of the columns of [math]\displaystyle{ \textbf{X} }[/math] is constructed, which may be constant, polynomial, or more exotic functions (like trigonometric and rational terms, and so on):

[math]\displaystyle{ \ \ \ \bf{\Theta}(\bf{X})=\begin{bmatrix} \vline&\vline&\vline&\vline& &\vline&\vline& \\ 1&\bf{X}&\bf{X}^2&\bf{X}^3&\cdots & \sin(\bf{X})&\cos(\bf{X})&\cdots\\ \vline&\vline&\vline&\vline& &\vline&\vline& \end{bmatrix} }[/math]

The number of possible model structures from this library is combinatorically high. [math]\displaystyle{ \textbf{f}(\textbf{x}(t)) }[/math] is then substituted by [math]\displaystyle{ \bf{\Theta}(\textbf{X}) }[/math] and a vector of coefficients [math]\displaystyle{ \bf{\Xi}=\left[\bf{\xi}_1 \bf{\xi}_2 \cdots \bf{\xi}_n \right] }[/math] determining the active terms in [math]\displaystyle{ \textbf{f}(\textbf{x}(t)) }[/math]:

[math]\displaystyle{ \dot{\bf{X}}=\bf{\Theta}(\bf{X})\bf{\Xi} }[/math]

Because only a few terms are expected to be active at each point in time, an assumption is made that [math]\displaystyle{ \textbf{f}(\textbf{x}(t)) }[/math] admits a sparse representation in [math]\displaystyle{ \bf{\Theta}(\textbf{X}) }[/math]. This then becomes an optimization problem in finding a sparse [math]\displaystyle{ \bf{\Xi} }[/math] which optimally embeds [math]\displaystyle{ \dot{\textbf{X}} }[/math]. In other words, a parsimonious model is obtained by performing least squares regression on the system (4) with sparsity-promoting ([math]\displaystyle{ L_1 }[/math]) regularization

[math]\displaystyle{ \bf{\xi}_k=\underset{\bf{\xi}'_k}{\arg\min}\left|\left|\dot{\bf{X}}_k-\bf{\Theta}(\bf{X})\bf{\xi}'_k\right|\right|_2 +\lambda \left|\left|\bf{\xi}'_k\right|\right|_1, }[/math]

where [math]\displaystyle{ \lambda }[/math] is a regularization parameter. Finally, the sparse set of [math]\displaystyle{ \bf{\xi}_k }[/math] can be used to reconstruct the dynamical system:

[math]\displaystyle{ \dot{x}_k=\bf{\Theta}(\bf{x})\bf{\xi}_k }[/math]

References

  1. Brunton, Steven L.; Kutz, J. Nathan (2022-05-05) (in en). Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control. Higher Education from Cambridge University Press. doi:10.1017/9781009089517. ISBN 9781009089517. https://www.cambridge.org/highereducation/books/data-driven-science-and-engineering/6F9A730B7A9A9F43F68CF21A24BEC339. Retrieved 2022-10-25. 
  2. Brunton, Steven L.; Proctor, Joshua L.; Kutz, J. Nathan (2016-04-12). "Discovering governing equations from data by sparse identification of nonlinear dynamical systems" (in en). Proceedings of the National Academy of Sciences 113 (15): 3932–3937. doi:10.1073/pnas.1517384113. ISSN 0027-8424. PMID 27035946. Bibcode2016PNAS..113.3932B. 
  3. Mangan, Niall M.; Brunton, Steven L.; Proctor, Joshua L.; Kutz, J. Nathan (2016-05-26). "Inferring biological networks by sparse identification of nonlinear dynamics". arXiv:1605.08368 [math.DS].