diff --git a/docs/source/bibliography.bib b/docs/source/bibliography.bib index adb22198f..d8cd50fed 100644 --- a/docs/source/bibliography.bib +++ b/docs/source/bibliography.bib @@ -708,4 +708,15 @@ @article{Utilities3 author = {Houduo Qi and Defeng Sun}, title = {A Quadratically Convergent Newton Method for Computing the Nearest Correlation Matrix}, journal = {{SIAM} Journal on Matrix Analysis and Applications} +} + +@article{dsilva2018parsimonious, + title={Parsimonious representation of nonlinear dynamical systems through manifold learning: A chemotaxis case study}, + author={Dsilva, Carmeline J and Talmon, Ronen and Coifman, Ronald R and Kevrekidis, Ioannis G}, + journal={Applied and Computational Harmonic Analysis}, + volume={44}, + number={3}, + pages={759--773}, + year={2018}, + publisher={Elsevier} } \ No newline at end of file diff --git a/docs/source/dimension_reduction/dmaps.rst b/docs/source/dimension_reduction/dmaps.rst index 82c5f9ea0..97d5f21f0 100644 --- a/docs/source/dimension_reduction/dmaps.rst +++ b/docs/source/dimension_reduction/dmaps.rst @@ -8,6 +8,9 @@ the data. On this graph a random walk is defined with a Markov transition probab data points. An eigendecomposition of the Markov transition probability matrix is used to obtain lower-dimensional coordinates that reveal the instrinsic structure of the data. +The :class:`.DiffusionMaps` class also implements the parsimonious Diffusion Maps representation from +:cite:t:`dsilva2018parsimonious`. + DiffusionMaps Class ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/UQpy/dimension_reduction/diffusion_maps/DiffusionMaps.py b/src/UQpy/dimension_reduction/diffusion_maps/DiffusionMaps.py index 3a152ff86..5d47354e5 100644 --- a/src/UQpy/dimension_reduction/diffusion_maps/DiffusionMaps.py +++ b/src/UQpy/dimension_reduction/diffusion_maps/DiffusionMaps.py @@ -27,7 +27,7 @@ class DiffusionMaps: def __init__( self, kernel_matrix: Numpy2DFloatArray = None, - data: Union[np.ndarray, list[GrassmannPoint]] = None, + data: Union[Numpy2DFloatArray, list[GrassmannPoint]] = None, kernel: Kernel = None, alpha: AlphaType = 0.5, n_eigenvectors: IntegerLargerThanUnityType = 2, @@ -38,20 +38,21 @@ def __init__( ): """ - :param kernel_matrix: Kernel matrix defining the similarity between the points. Either `kernel_matrix` or both - `data` and `kernel` parameters must be provided. In the second case the respective `kernel_matrix` computed - and provided as input for the evaluation of the :class:`.DiffusionMaps`. In case all three of the - aforementioned parameters are provided, then :class:`.DiffusionMaps` will be fitted only using the - `kernel_matrix` - :param data: Cloud of data points. Either `kernel_matrix` or both `data` and `kernel` parameters must be + :param kernel_matrix: Kernel matrix defining the similarity between the data points. Either `kernel_matrix` or + both `data` and `kernel` parameters must be provided. In the former case, `kernel_matrix` is precomputed + using a :class:`Kernel` class. In the second case the `kernel_matrix` is internally and used for the + evaluation of the :class:`.DiffusionMaps`. In case all three of the aforementioned parameters are provided, + then :class:`.DiffusionMaps` will be fitted only using the `kernel_matrix` + :param data: Set of data points. Either `kernel_matrix` or both `data` and `kernel` parameters must be provided. - :param kernel: Kernel object defining the similarity between the points. Either `kernel_matrix` or both - `data` and `kernel` parameters must be provided. + :param kernel: Kernel object used to compute the kernel matrix defining similarity between the data points. + Either `kernel_matrix` or both `data` and `kernel` parameters must be provided. :param alpha: A scalar that corresponds to different diffusion operators. `alpha` should be between zero and one. :param n_eigenvectors: Number of eigenvectors to retain. :param is_sparse: Work with sparse matrices to improve computational performance. - :param n_neighbors: If :code:`distance_matrix is True` defines the number of nearest neighbors. + :param n_neighbors: If :code:`is_sparse is True`, defines the number of nearest neighbors to use when making + matrices sparse. :param random_state: Random seed used to initialize the pseudo-random number generator. If an :any:`int` is provided, this sets the seed for an object of :class:`numpy.random.RandomState`. Otherwise, the object itself can be passed directly.