diff --git a/artlib/common/VAT.py b/artlib/common/VAT.py index 3ae48b8..17d8b79 100644 --- a/artlib/common/VAT.py +++ b/artlib/common/VAT.py @@ -1,9 +1,8 @@ """VAT. -Bezdek, J. C., & Hathaway, R. J. (2002). -VAT: A tool for visual assessment of cluster tendency. -Proceedings of the 2002 International Joint Conference on Neural Networks. -doi:10.1109/IJCNN.2002.1007487 +.. # Bezdek, J. C., & Hathaway, R. J. (2002). .. # VAT: A tool for visual assessment of +cluster tendency. .. # Proceedings of the 2002 International Joint Conference on Neural +Networks. .. # doi:10.1109/IJCNN.2002.1007487 """ import numpy as np @@ -17,6 +16,21 @@ def VAT( ) -> Tuple[np.ndarray, np.ndarray]: """Visual Assessment of Cluster Tendency (VAT) algorithm. + VAT was originally designed as a visualization tool for clustering behavior of data. + When the VAT-reordered distance matrix is plotted as an image, clusters will appear + in visually distinct groups along the diagonal. However, it has since been + discovered that the reordering significantly improves the results of order-dependent + clustering methods like ART. It is therefore recommended to pre-process data with + VAT prior to presentation when possible. + + .. # Bezdek, J. C., & Hathaway, R. J. (2002). + .. # VAT: A tool for visual assessment of cluster tendency. + .. # Proceedings of the 2002 International Joint Conference on Neural Networks. + .. # doi:10.1109/IJCNN.2002.1007487 + + .. bibliography:: ../../references.bib + :filter: citation_key == "bezdek2002vat" + Parameters ---------- data : np.ndarray diff --git a/artlib/cvi/iCVIFuzzyArt.py b/artlib/cvi/iCVIFuzzyArt.py index 8a18d22..4e3c37a 100644 --- a/artlib/cvi/iCVIFuzzyArt.py +++ b/artlib/cvi/iCVIFuzzyArt.py @@ -1,4 +1,10 @@ -"""TODO: Add Reference in correct format. +"""iCVI Fuzzy ART + +.. # da Silva, Leonardo Enzo Brito, Nagasharath Rayapati, and Donald C. Wunsch. +.. # "iCVI-ARTMAP: using incremental cluster validity indices and adaptive resonance +.. # theory reset mechanism to accelerate validation and achieve multiprototype +.. # unsupervised representations." +.. # IEEE Transactions on Neural Networks and Learning Systems 34.12 (2022): 9757-9770. The original matlab code can be found at https://github.com/ACIL-Group/iCVI-toolbox/tree/master @@ -7,6 +13,9 @@ Pages 314-316 and 319-320 Extended icvi offline mode can be found at https://ieeexplore.ieee.org/document/9745260 +.. bibliography:: ../../references.bib + :filter: citation_key == "da2022icvi" + """ import numpy as np from typing import Optional, Literal, Callable @@ -15,7 +24,19 @@ class iCVIFuzzyART(FuzzyART): - """ICVI Fuzzy Art For Clustering.""" + """ICVI Fuzzy Art For Clustering. + + .. # da Silva, Leonardo Enzo Brito, Nagasharath Rayapati, and Donald C. Wunsch. + .. # "iCVI-ARTMAP: using incremental cluster validity indices and adaptive resonance + .. # theory reset mechanism to accelerate validation and achieve multiprototype + .. # unsupervised representations." + .. # IEEE Transactions on Neural Networks and Learning Systems + .. # 34.12 (2022): 9757-9770. + + .. bibliography:: ../../references.bib + :filter: citation_key == "da2022icvi" + + """ CALINSKIHARABASZ = 1 diff --git a/artlib/elementary/ART1.py b/artlib/elementary/ART1.py index f14c42f..bc6b1c2 100644 --- a/artlib/elementary/ART1.py +++ b/artlib/elementary/ART1.py @@ -1,10 +1,10 @@ -"""ART1. +"""ART1 :cite:`carpenter1987massively`.""" -Carpenter, G. A., & Grossberg, S. (1987a). A massively parallel architecture for a self- -organizing neural pattern recognition machine. Computer Vision, Graphics, and Image -Processing, 37, 54 – 115. doi:10. 1016/S0734-189X(87)80014-2. - -""" +# Carpenter, G. A., & Grossberg, S. (1987a). +# A massively parallel architecture for a self-organizing neural pattern +# recognition machine. +# Computer Vision, Graphics, and Image +# Processing, 37, 54 – 115. doi:10. 1016/S0734-189X(87)80014-2. import numpy as np from typing import Optional, List, Tuple, Union, Dict @@ -13,13 +13,18 @@ class ART1(BaseART): - """ART1 for Clustering. + """ART1 for Binary Clustering. + + This module implements ART1 as first published in: :cite:`carpenter1987massively`. + + + .. # Carpenter, G. A., & Grossberg, S. (1987a). + .. # A massively parallel architecture for a self-organizing neural pattern + .. # recognition machine. + .. # Computer Vision, Graphics, and Image + .. # Processing, 37, 54 – 115. doi:10. 1016/S0734-189X(87)80014-2. - This module implements ART1 as first published in Carpenter, G. A., & Grossberg, S. - (1987a). A massively parallel architecture for a self-organizing neural pattern - recognition machine. Computer Vision, Graphics, and Image Processing, 37, 54 – 115. - doi:10. 1016/S0734-189X(87)80014-2. ART1 is intended for binary data clustering - only. + ART1 is exclusively for clustering binary data. """ diff --git a/artlib/elementary/ART2.py b/artlib/elementary/ART2.py index 6c37b3b..e734410 100644 --- a/artlib/elementary/ART2.py +++ b/artlib/elementary/ART2.py @@ -1,21 +1,26 @@ -"""ART2. +"""ART2 :cite:`carpenter1987art`, :cite:`carpenter1991art`. -Carpenter, G. A., & Grossberg, S. (1987b). -ART 2: self-organization of stable category recognition codes for analog input patterns. -Appl. Opt., 26, 4919–4930. doi:10.1364/AO.26.004919. +:: -Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991b). -ART 2-A: An adaptive resonance algorithm for rapid category learning and recognition. -Neural Networks, 4, 493 – 504. doi:10.1016/0893-6080(91) 90045-7. - -================================================================== -DISCLAIMER: DO NOT USE ART2!!! -IT DOES NOT WORK -It is provided for completeness only. -Stephan Grossberg himself has said ART2 does not work. -================================================================== + ================================================================== + DISCLAIMER: DO NOT USE ART2!!! + IT DOES NOT WORK + It is provided for completeness only. + Stephan Grossberg himself has said ART2 does not work. + ================================================================== """ + +# Carpenter, G. A., & Grossberg, S. (1987b). +# ART 2: self-organization of stable category recognition codes for analog input +# patterns. +# Appl. Opt., 26, 4919–4930. doi:10.1364/AO.26.004919. + +# Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991b). +# ART 2-A: An adaptive resonance algorithm for rapid category learning and +# recognition. +# Neural Networks, 4, 493 – 504. doi:10.1016/0893-6080(91) 90045-7. + import numpy as np from typing import Optional, List from warnings import warn @@ -25,14 +30,24 @@ class ART2A(BaseART): """ART2-A for Clustering. - This module implements ART2-A as first published in - Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991b). - ART 2-A: An adaptive resonance algorithm for rapid category learning and - recognition. - Neural Networks, 4, 493 – 504. doi:10.1016/0893-6080(91) 90045-7. + This module implements ART2-A as first published in: + :cite:`carpenter1987art`, :cite:`carpenter1991art` + + + .. # Carpenter, G. A., & Grossberg, S. (1987b). + .. # ART 2: self-organization of stable category recognition codes for analog input + .. # patterns. + .. # Appl. Opt., 26, 4919–4930. doi:10.1364/AO.26.004919. + + .. # Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991b). + .. # ART 2-A: An adaptive resonance algorithm for rapid category learning and + .. # recognition. + .. # Neural Networks, 4, 493 – 504. doi:10.1016/0893-6080(91) 90045-7. + - ART2-A is similar to ART1 but designed for analog data. This method is implemented - for historical purposes and is not recommended for use. + ART2-A is similar to :class:`~artlib.elementary.ART1.ART1` but designed for analog + data. This method is implemented for historical purposes and is not recommended + for use. """ diff --git a/artlib/elementary/BayesianART.py b/artlib/elementary/BayesianART.py index bc2ecd9..6b19f9b 100644 --- a/artlib/elementary/BayesianART.py +++ b/artlib/elementary/BayesianART.py @@ -1,9 +1,9 @@ -"""Bayesian ART. +"""Bayesian ART :cite:`vigdor2007bayesian`.""" +# Vigdor, B., & Lerner, B. (2007). +# The Bayesian ARTMAP. +# IEEE Transactions on Neural +# Networks, 18, 1628–1644. doi:10.1109/TNN.2007.900234. -Vigdor, B., & Lerner, B. (2007). The Bayesian ARTMAP. IEEE Transactions on Neural -Networks, 18, 1628–1644. doi:10.1109/TNN.2007.900234. - -""" import numpy as np from typing import Optional, Iterable, List, Callable, Literal, Tuple, Union, Dict import operator @@ -15,11 +15,17 @@ class BayesianART(BaseART): """Bayesian ART for Clustering. - This module implements Bayesian ART as first published in Vigdor, B., & Lerner, B. - (2007). The Bayesian ARTMAP. IEEE Transactions on Neural Networks, 18, 1628–1644. - doi:10.1109/TNN.2007.900234. Bayesian ART clusters data in Bayesian Distributions - (Hyper-ellipsoids) and is similar to Gaussian ART but differs in that it allows - arbitrary rotation of the hyper-ellipsoid. + This module implements Bayesian ART as first published in: + :cite:`vigdor2007bayesian`. + + .. # Vigdor, B., & Lerner, B. (2007). + .. # The Bayesian ARTMAP. + .. # IEEE Transactions on Neural + .. # Networks, 18, 1628–1644. doi:10.1109/TNN.2007.900234. + + Bayesian ART clusters data in Bayesian Distributions (Hyper-ellipsoids) and is + similar to :class:`~artlib.elementary.GaussianART.GaussianART` but differs in that + it allows arbitrary rotation of the hyper-ellipsoid. """ diff --git a/artlib/elementary/EllipsoidART.py b/artlib/elementary/EllipsoidART.py index 1425c5a..0c5b9d2 100644 --- a/artlib/elementary/EllipsoidART.py +++ b/artlib/elementary/EllipsoidART.py @@ -1,15 +1,14 @@ -"""Ellipsoid ART. +"""Ellipsoid ART :cite:`anagnostopoulos2001a`, :cite:`anagnostopoulos2001b`.""" +# Anagnostopoulos, G. C., & Georgiopoulos, M. (2001a). +# Ellipsoid ART and ARTMAP for incremental clustering and classification. +# In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) +# (pp. 1221–1226). volume 2. doi:10.1109/IJCNN.2001.939535. -Anagnostopoulos, G. C., & Georgiopoulos, M. (2001a). Ellipsoid ART and ARTMAP for -incremental clustering and classification. In Proc. IEEE International Joint Conference -on Neural Networks (IJCNN) (pp. 1221–1226). volume 2. doi:10.1109/IJCNN.2001.939535. +# Anagnostopoulos, G. C., & Georgiopoulos, M. (2001b). +# Ellipsoid ART and ARTMAP for incremental unsupervised and supervised learning. +# In Aerospace/Defense Sensing, Simulation, and Controls (pp. 293– 304). +# International Society for Optics and Photonics. doi:10.1117/12.421180. -Anagnostopoulos, G. C., & Georgiopoulos, M. (2001b). Ellipsoid ART and ARTMAP for -incremental unsupervised and supervised learning. In Aerospace/Defense Sensing, -Simulation, and Controls (pp. 293– 304). International Society for Optics and Photonics. -doi:10.1117/12.421180. - -""" import numpy as np from typing import Optional, List, Tuple, Union, Dict from matplotlib.axes import Axes @@ -20,12 +19,22 @@ class EllipsoidART(BaseART): """Ellipsoid ART for Clustering. - This module implements Ellipsoid ART as first published in Anagnostopoulos, G. C., & - Georgiopoulos, M. (2001a). Ellipsoid ART and ARTMAP for incremental clustering and - classification. In Proc. IEEE International Joint Conference on Neural Networks - (IJCNN) (pp. 1221–1226). volume 2. doi:10.1109/IJCNN.2001.939535. Ellipsoid ART - clusters data in Hyper-ellipsoids. It is highly sensitive to sample presentation - order as the second sample will determine the orientation of the principal axes. + This module implements Ellipsoid ART as first published in: + :cite:`anagnostopoulos2001a`, :cite:`anagnostopoulos2001b`. + + .. # Anagnostopoulos, G. C., & Georgiopoulos, M. (2001a). + .. # Ellipsoid ART and ARTMAP for incremental clustering and classification. + .. # In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) + .. # (pp. 1221–1226). volume 2. doi:10.1109/IJCNN.2001.939535. + + .. # Anagnostopoulos, G. C., & Georgiopoulos, M. (2001b). + .. # Ellipsoid ART and ARTMAP for incremental unsupervised and supervised learning. + .. # In Aerospace/Defense Sensing, Simulation, and Controls (pp. 293– 304). + .. # International Society for Optics and Photonics. doi:10.1117/12.421180. + + Ellipsoid ART clusters data in Hyper-ellipsoids. It is highly sensitive to sample + presentation order as the second sample will determine the orientation of the + principal axes. """ diff --git a/artlib/elementary/FuzzyART.py b/artlib/elementary/FuzzyART.py index fd849d0..5410b7e 100644 --- a/artlib/elementary/FuzzyART.py +++ b/artlib/elementary/FuzzyART.py @@ -1,11 +1,9 @@ -"""Fuzzy ART. +"""Fuzzy ART :cite:`carpenter1991fuzzy`.""" +# Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991c). +# Fuzzy ART: Fast stable learning and categorization of analog patterns by an +# adaptive resonance system. +# Neural Networks, 4, 759 – 771. doi:10.1016/0893-6080(91)90056-B. -Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991c). -Fuzzy ART: Fast stable learning and categorization of analog patterns by an adaptive -resonance system. -Neural Networks, 4, 759 – 771. doi:10.1016/0893-6080(91)90056-B. - -""" import numpy as np from typing import Optional, Iterable, List, Tuple, Union, Dict from matplotlib.axes import Axes @@ -58,13 +56,16 @@ def get_bounding_box( class FuzzyART(BaseART): """Fuzzy ART for Clustering. - This module implements Fuzzy ART as first published in - Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991c). - Fuzzy ART: Fast stable learning and categorization of analog patterns by an - adaptive resonance system. - Neural Networks, 4, 759 – 771. doi:10.1016/0893-6080(91)90056-B. + This module implements Fuzzy ART as first published in: + :cite:`carpenter1991fuzzy`. + + .. # Carpenter, G. A., Grossberg, S., & Rosen, D. B. (1991c). + .. # Fuzzy ART: Fast stable learning and categorization of analog patterns by an + .. # adaptive resonance system. + .. # Neural Networks, 4, 759 – 771. doi:10.1016/0893-6080(91)90056-B. - Fuzzy ART is a hyper-box based clustering method. + Fuzzy ART is a hyper-box based clustering method that is exceptionally fast and + explainable. """ diff --git a/artlib/elementary/GaussianART.py b/artlib/elementary/GaussianART.py index 11f76c2..34a917b 100644 --- a/artlib/elementary/GaussianART.py +++ b/artlib/elementary/GaussianART.py @@ -1,11 +1,8 @@ -"""Gaussian ART. - -Williamson, J. R. (1996). -Gaussian ARTMAP: A Neural Network for Fast Incremental Learning of Noisy -Multidimensional Maps. -Neural Networks, 9, 881 – 897. doi:10.1016/0893-6080(95)00115-8. - -""" +"""Gaussian ART :cite:`williamson1996gaussian`.""" +# Williamson, J. R. (1996). +# Gaussian ARTMAP: A Neural Network for Fast Incremental Learning of Noisy +# Multidimensional Maps. +# Neural Networks, 9, 881 – 897. doi:10.1016/0893-6080(95)00115-8. import numpy as np from typing import Optional, Iterable, List, Tuple, Union, Dict @@ -17,15 +14,18 @@ class GaussianART(BaseART): """Gaussian ART for Clustering. - This module implements Gaussian ART as first published in - Williamson, J. R. (1996). - Gaussian ARTMAP: A Neural Network for Fast Incremental Learning of - Noisy Multidimensional Maps. - Neural Networks, 9, 881 – 897. doi:10.1016/0893-6080(95)00115-8. + This module implements Gaussian ART as first published in: + :cite:`williamson1996gaussian`. + + .. # Williamson, J. R. (1996). + .. # Gaussian ARTMAP: A Neural Network for Fast Incremental Learning of Noisy + .. # Multidimensional Maps. + .. # Neural Networks, 9, 881 – 897. doi:10.1016/0893-6080(95)00115-8. Guassian ART clusters data in Gaussian Distributions (Hyper-ellipsoids) and is - similar to Bayesian ART but differs in that the hyper-ellipsoid always have their - principal axes square to the coordinate frame. It is also faster than Bayesian ART. + similar to :class:`~artlib.elementary.BayesianART.BayesianART` but differs in that + the hyper-ellipsoid always have their principal axes square to the coordinate + frame. It is also faster than :class:`~artlib.elementary.BayesianART.BayesianART`. """ diff --git a/artlib/elementary/HypersphereART.py b/artlib/elementary/HypersphereART.py index 38b6e76..73ff933 100644 --- a/artlib/elementary/HypersphereART.py +++ b/artlib/elementary/HypersphereART.py @@ -1,11 +1,9 @@ -"""Hyperpshere ART. +"""Hyperpshere ART :cite:`anagnostopoulos2000hypersphere`.""" +# Anagnostopoulos, G. C., & Georgiopulos, M. (2000). +# Hypersphere ART and ARTMAP for unsupervised and supervised, incremental learning. +# In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) +# (pp. 59–64). volume 6. doi:10.1109/IJCNN.2000.859373. -Anagnostopoulos, G. C., & Georgiopulos, M. (2000). Hypersphere ART and ARTMAP for -unsupervised and supervised, incremental learning. In Proc. IEEE International Joint -Conference on Neural Networks (IJCNN) (pp. 59–64). volume 6. -doi:10.1109/IJCNN.2000.859373. - -""" import numpy as np from typing import Optional, Iterable, List from matplotlib.axes import Axes @@ -16,11 +14,16 @@ class HypersphereART(BaseART): """Hypersphere ART for Clustering. - This module implements Ellipsoid ART as first published in Anagnostopoulos, G. C., & - Georgiopulos, M. (2000). Hypersphere ART and ARTMAP for unsupervised and supervised, - incremental learning. In Proc. IEEE International Joint Conference on Neural - Networks (IJCNN) (pp. 59–64). volume 6. doi:10.1109/IJCNN.2000.859373. Hyperpshere - ART clusters data in Hyper-spheres similar to k-means with a dynamic k. + This module implements Ellipsoid ART as first published in: + :cite:`anagnostopoulos2000hypersphere`. + + .. # Anagnostopoulos, G. C., & Georgiopulos, M. (2000). + .. # Hypersphere ART and ARTMAP for unsupervised and supervised, incremental + .. # learning. + .. # In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) + .. # (pp. 59–64). volume 6. doi:10.1109/IJCNN.2000.859373. + + Hyperpshere ART clusters data in Hyper-spheres similar to k-means with a dynamic k. """ diff --git a/artlib/elementary/QuadraticNeuronART.py b/artlib/elementary/QuadraticNeuronART.py index a492c42..1d0c6f7 100644 --- a/artlib/elementary/QuadraticNeuronART.py +++ b/artlib/elementary/QuadraticNeuronART.py @@ -1,12 +1,11 @@ -"""Quadratic Neuron ART. +"""Quadratic Neuron ART :cite:`su2001application`, :cite:`su2005new`.""" +# Su, M.-C., & Liu, T.-K. (2001). +# Application of neural networks using quadratic junctions in cluster analysis. +# Neurocomputing, 37, 165 – 175. doi:10.1016/S0925-2312(00)00343-X. -Su, M.-C., & Liu, T.-K. (2001). Application of neural networks using quadratic junctions -in cluster analysis. Neurocomputing, 37, 165 – 175. doi:10.1016/S0925-2312(00)00343-X. - -Su, M.-C., & Liu, Y.-C. (2005). A new approach to clustering data with arbitrary shapes. -Pattern Recognition, 38, 1887 – 1901. doi:10.1016/j.patcog.2005.04.010. - -""" +# Su, M.-C., & Liu, Y.-C. (2005). +# A new approach to clustering data with arbitrary shapes. +# Pattern Recognition, 38, 1887 – 1901. doi:10.1016/j.patcog.2005.04.010. import numpy as np from typing import Optional, Iterable, List, Tuple, Union, Dict @@ -19,11 +18,19 @@ class QuadraticNeuronART(BaseART): """Quadratic Neuron ART for Clustering. - This module implements Quadratic Neuron ART as first published in Su, M.-C., & Liu, - Y.-C. (2005). A new approach to clustering data with arbitrary shapes. Pattern - Recognition, 38, 1887 – 1901. doi:10.1016/j.patcog.2005.04.010. Quadratic Neuron ART - clusters data in Hyper-ellipsoid by utilizing a quadratic neural network for - activation and resonance. + This module implements Quadratic Neuron ART as first published in: + :cite:`su2001application`, :cite:`su2005new`. + + .. # Su, M.-C., & Liu, T.-K. (2001). + .. # Application of neural networks using quadratic junctions in cluster analysis. + .. # Neurocomputing, 37, 165 – 175. doi:10.1016/S0925-2312(00)00343-X. + + .. # Su, M.-C., & Liu, Y.-C. (2005). + .. # A new approach to clustering data with arbitrary shapes. + .. # Pattern Recognition, 38, 1887 – 1901. doi:10.1016/j.patcog.2005.04.010. + + Quadratic Neuron ART clusters data in Hyper-ellipsoid by utilizing a quadratic + neural network for activation and resonance. """ diff --git a/artlib/fusion/FusionART.py b/artlib/fusion/FusionART.py index 343f3ea..58449ef 100644 --- a/artlib/fusion/FusionART.py +++ b/artlib/fusion/FusionART.py @@ -1,13 +1,11 @@ -"""Fusion ART. +"""Fusion ART :cite:`tan2007intelligence`.""" +# Tan, A.-H., Carpenter, G. A., & Grossberg, S. (2007). +# Intelligence Through Interaction: Towards a Unified Theory for Learning. +# In D. Liu, S. Fei, Z.-G. Hou, H. Zhang, & C. Sun (Eds.), +# Advances in Neural Networks – ISNN 2007 (pp. 1094–1103). +# Berlin, Heidelberg: Springer Berlin Heidelberg. +# doi:10.1007/ 978-3-540-72383-7_128. -Tan, A.-H., Carpenter, G. A., & Grossberg, S. (2007). -Intelligence Through Interaction: Towards a Unified Theory for Learning. -In D. Liu, S. Fei, Z.-G. Hou, H. Zhang, & C. Sun (Eds.), -Advances in Neural Networks – ISNN 2007 (pp. 1094–1103). -Berlin, Heidelberg: Springer Berlin Heidelberg. -doi:10.1007/ 978-3-540-72383-7_128. - -""" import numpy as np from typing import Optional, Union, Callable, List, Literal, Tuple, Dict from copy import deepcopy @@ -45,13 +43,16 @@ def get_channel_position_tuples( class FusionART(BaseART): """Fusion ART for Data Fusion and Regression. - This module implements Fusion ART as first described in - Tan, A.-H., Carpenter, G. A., & Grossberg, S. (2007). - Intelligence Through Interaction: Towards a Unified Theory for Learning. - In D. Liu, S. Fei, Z.-G. Hou, H. Zhang, & C. Sun (Eds.), - Advances in Neural Networks – ISNN 2007 (pp. 1094–1103). - Berlin, Heidelberg: Springer Berlin Heidelberg. - doi:10.1007/ 978-3-540-72383-7_128. + This module implements Fusion ART as first described in: + :cite:`tan2007intelligence`. + + .. # Tan, A.-H., Carpenter, G. A., & Grossberg, S. (2007). + .. # Intelligence Through Interaction: Towards a Unified Theory for Learning. + .. # In D. Liu, S. Fei, Z.-G. Hou, H. Zhang, & C. Sun (Eds.), + .. # Advances in Neural Networks – ISNN 2007 (pp. 1094–1103). + .. # Berlin, Heidelberg: Springer Berlin Heidelberg. + .. # doi:10.1007/ 978-3-540-72383-7_128. + Fusion ART accepts an arbitrary number of ART modules, each assigned a different data channel. The activation and match functions for all ART modules are then fused such that all modules must be simultaneously active and resonant in order for a diff --git a/artlib/hierarchical/DeepARTMAP.py b/artlib/hierarchical/DeepARTMAP.py index 9e771b4..b11475a 100644 --- a/artlib/hierarchical/DeepARTMAP.py +++ b/artlib/hierarchical/DeepARTMAP.py @@ -1,11 +1,8 @@ -"""Deep ARTMAP. - -Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). -ARTMAP: Supervised real-time learning and classification of nonstationary data by a -self-organizing neural network. -Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. - -""" +"""Deep ARTMAP :cite:`carpenter1991artmap`.""" +# Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). +# ARTMAP: Supervised real-time learning and classification of nonstationary data by a +# self-organizing neural network. +# Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. import numpy as np from sklearn.base import BaseEstimator, ClassifierMixin, ClusterMixin from typing import Optional, cast, Union, Literal, Tuple @@ -19,12 +16,19 @@ class DeepARTMAP(BaseEstimator, ClassifierMixin, ClusterMixin): """DeepARTMAP for Hierachical Supervised and Unsupervised Learning. - This module implements DeepARTMAP, a generalization of the ARTMAP class that allows - an arbitrary number of data channels to be divisively clustered. DeepARTMAP support - both supervised and unsupervised modes. If only two ART modules are provided, - DeepARTMAP reverts to standard ARTMAP where the first module is the A module and the - second module is the B module. DeepARTMAP does not currently have a direct citation - and is an original creation of this library. + This module implements DeepARTMAP, a generalization of the + :class:`~artlib.supervised.ARTMAP.ARTMAP` class :cite:`carpenter1991artmap` that + allows an arbitrary number of data channels to be divisively clustered. DeepARTMAP + support both supervised and unsupervised modes. If only two ART modules are + provided, DeepARTMAP reverts to standard :class:`~artlib.supervised.ARTMAP.ARTMAP` + where the first module is the A-module and the second module is the B-module. + DeepARTMAP does not currently have a direct citation and is an original creation + of this library. + + .. # Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). + .. # ARTMAP: Supervised real-time learning and classification of nonstationary data + .. # by a self-organizing neural network. + .. # Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. """ diff --git a/artlib/hierarchical/SMART.py b/artlib/hierarchical/SMART.py index 42ac2b3..8952607 100644 --- a/artlib/hierarchical/SMART.py +++ b/artlib/hierarchical/SMART.py @@ -1,10 +1,9 @@ -"""SMART. - -Bartfai, G. (1994). Hierarchical clustering with ART neural networks. In Proc. IEEE -International Conference on Neural Networks (ICNN) (pp. 940–944). volume 2. -doi:10.1109/ICNN.1994.374307. - -""" +"""SMART :cite:`bartfai1994hierarchical`.""" +# Bartfai, G. (1994). +# Hierarchical clustering with ART neural networks. +# In Proc. IEEE International Conference on Neural Networks (ICNN) +# (pp. 940–944). volume 2. +# doi:10.1109/ICNN.1994.374307. import numpy as np from typing import Union, Type, Optional, Literal, Tuple @@ -17,13 +16,19 @@ class SMART(DeepARTMAP): """SMART for Hierachical Clustering. - This module implements SMART as first published in Bartfai, G. (1994). Hierarchical - clustering with ART neural networks. In Proc. IEEE International Conference on - Neural Networks (ICNN) (pp. 940–944). volume 2. doi:10.1109/ICNN.1994.374307. SMART - accepts an uninstatiated ART class and hierarchically clusters data in a divisive - fashion by using a set of vigilance values that monotonically increase in their - restrictiveness. SMART is a special case of DeepARTMAP, which forms the backbone of - this class, where all channels receive the same data. + This module implements SMART as first published in: :cite:`bartfai1994hierarchical` + + .. # Bartfai, G. (1994). + .. # Hierarchical clustering with ART neural networks. + .. # In Proc. IEEE International Conference on Neural Networks (ICNN) + .. # (pp. 940–944). volume 2. + .. # doi:10.1109/ICNN.1994.374307. + + SMART accepts an uninstantiated :class:`~artlib.common.BaseART.BaseART` class and + hierarchically clusters data in a divisive fashion by using a set of vigilance + values that monotonically increase in their restrictiveness. SMART is a special + case of :class:`~artlib.hierarchical.DeepARTMAP.DeepARTMAP`, which forms the + backbone of this class, where all channels receive the same data. """ diff --git a/artlib/reinforcement/FALCON.py b/artlib/reinforcement/FALCON.py index d65dd2f..8946ffb 100644 --- a/artlib/reinforcement/FALCON.py +++ b/artlib/reinforcement/FALCON.py @@ -1,14 +1,13 @@ -"""FALCON. +"""FALCON :cite:`tan2004falcon`, :cite:`tan2008integrating`.""" +# Tan, A.-H. (2004). +# FALCON: a fusion architecture for learning, cognition, and navigation. +# In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) +# (pp. 3297–3302). volume 4. doi:10.1109/ IJCNN.2004.1381208. -Tan, A.-H. (2004). FALCON: a fusion architecture for learning, cognition, and -navigation. In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) (pp. -3297–3302). volume 4. doi:10.1109/ IJCNN.2004.1381208. - -Tan, A.-H., Lu, N., & Xiao, D. (2008). Integrating Temporal Difference Methods and Self- -Organizing Neural Networks for Reinforcement Learning With Delayed Evaluative Feedback. -IEEE Transactions on Neural Networks, 19 , 230–244. doi:10.1109/TNN.2007.905839 - -""" +# Tan, A.-H., Lu, N., & Xiao, D. (2008). +# Integrating Temporal Difference Methods and Self-Organizing Neural Networks for +# Reinforcement Learning With Delayed Evaluative Feedback. +# IEEE Transactions on Neural Networks, 19 , 230–244. doi:10.1109/TNN.2007.905839 import numpy as np from typing import Optional, Literal, Tuple, Union, List @@ -20,15 +19,17 @@ class FALCON: """FALCON for Reinforcement Learning. - This module implements the reactive FALCON as first described in - Tan, A.-H. (2004). - FALCON: a fusion architecture for learning, cognition, and navigation. - In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) - (pp. 3297–3302). volume 4. doi:10.1109/IJCNN.2004.1381208. + This module implements the reactive FALCON as first described in: + :cite:`tan2004falcon`. + + .. # Tan, A.-H. (2004). + .. # FALCON: a fusion architecture for learning, cognition, and navigation. + .. # In Proc. IEEE International Joint Conference on Neural Networks (IJCNN) + .. # (pp. 3297–3302). volume 4. doi:10.1109/ IJCNN.2004.1381208. - FALCON is based on a Fusion-ART backbone but only accepts 3 channels: State, Action, - and Reward. Specific functions are implemented for getting optimal reward and action - predictions. + FALCON is based on a :class:`~artlib.fusion.FusionART.FusionART` backbone but only + accepts 3 channels: State, Action, and Reward. Specific functions are implemented + for getting optimal reward and action predictions. """ @@ -291,13 +292,17 @@ def get_rewards(self, states: np.ndarray, actions: np.ndarray) -> np.ndarray: class TD_FALCON(FALCON): """TD-FALCON for Reinforcement Learning. - This module implements TD-FALCON as first described in Tan, A.-H., Lu, N., & Xiao, - D. (2008). Integrating Temporal Difference Methods and Self-Organizing Neural - Networks for Reinforcement Learning With Delayed Evaluative Feedback. IEEE - Transactions on Neural Networks, 19 , 230–244. doi:10.1109/TNN.2007.905839. TD- - FALCON is based on a FALCON backbone but includes specific function for temporal- - difference learning. Currently, only SARSA is implemented and only Fuzzy ART base - modules are supported. + This module implements TD-FALCON as first described in: + :cite:`tan2008integrating`. + + .. # Tan, A.-H., Lu, N., & Xiao, D. (2008). + .. # Integrating Temporal Difference Methods and Self-Organizing Neural Networks for + .. # Reinforcement Learning With Delayed Evaluative Feedback. + .. # IEEE Transactions on Neural Networks, 19 , 230–244. doi:10.1109/TNN.2007.905839 + + TD-FALCON is based on a :class:`FALCON` backbone but includes specific function for + temporal-difference learning. Currently, only SARSA is implemented and only + :class:`~artlib.elementary.FuzzyART.FuzzyART` base modules are supported. """ diff --git a/artlib/reinforcement/__init__.py b/artlib/reinforcement/__init__.py index 93dc41b..fb10e97 100644 --- a/artlib/reinforcement/__init__.py +++ b/artlib/reinforcement/__init__.py @@ -13,6 +13,7 @@ The modules herein only provide for reactive and SARSA style learning. `SARSA `_ + `Reactive agents `_ """ diff --git a/artlib/supervised/ARTMAP.py b/artlib/supervised/ARTMAP.py index 4529146..a24a389 100644 --- a/artlib/supervised/ARTMAP.py +++ b/artlib/supervised/ARTMAP.py @@ -1,11 +1,8 @@ -"""ARTMAP. - -Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). -ARTMAP: Supervised real-time learning and classification of nonstationary data by a -self-organizing neural network. -Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. - -""" +"""ARTMAP :cite:`carpenter1991artmap`.""" +# Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). +# ARTMAP: Supervised real-time learning and classification of nonstationary data by a +# self-organizing neural network. +# Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. import numpy as np from typing import Literal, Tuple, Dict, Union, Optional from artlib.common.BaseART import BaseART @@ -16,19 +13,22 @@ class ARTMAP(SimpleARTMAP): """ARTMAP for Classification and Regression. - This module implements ARTMAP as first published in - Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). - ARTMAP: Supervised real-time learning and classification of nonstationary data by a - self-organizing neural network. - Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. + This module implements ARTMAP as first published in: :cite:`carpenter1991artmap`. - ARTMAP joins accepts two ART modules A and B which cluster the dependent channel - (samples) and the independent channel (labels) respectively while linking them with - a many-to-one mapping. If your labels are integers, use SimpleARTMAP for a faster - and more direct implementation. ARTMAP also provides the ability to fit a regression - model to data and specific functions have been implemented to allow this. However, - FusionART provides substantially better fit for regression problems which are not - monotonic. + .. # Carpenter, G. A., Grossberg, S., & Reynolds, J. H. (1991a). + .. # ARTMAP: Supervised real-time learning and classification of nonstationary data + .. # by a self-organizing neural network. + .. # Neural Networks, 4, 565 – 588. doi:10.1016/0893-6080(91)90012-T. + + ARTMAP accepts two :class:`~artlib.common.BaseART.BaseART` modules A and B which + cluster the dependent + channel (samples) and the independent channel (labels) respectively while linking + them with a many-to-one mapping. If your labels are integers, + use :class:`~artlib.supervised.SimpleARTMAP.SimpleARTMAP` for a faster and more + direct implementation. ARTMAP also provides the ability to fit a regression model to + data and specific functions have been implemented to allow this. However, + :class:`~artlib.fusion.FusionART.FusionART` provides substantially better fit for + regression problems which are not monotonic. """ @@ -248,9 +248,7 @@ def partial_fit( """ self.validate_data(X, y) - self.module_b.partial_fit( - y, match_tracking=match_tracking, epsilon=epsilon - ) + self.module_b.partial_fit(y, match_tracking=match_tracking, epsilon=epsilon) super(ARTMAP, self).partial_fit( X, self.labels_b, diff --git a/artlib/supervised/SimpleARTMAP.py b/artlib/supervised/SimpleARTMAP.py index 1674bd5..f77eff0 100644 --- a/artlib/supervised/SimpleARTMAP.py +++ b/artlib/supervised/SimpleARTMAP.py @@ -1,10 +1,7 @@ -"""Simple ARTMAP. - -Serrano-Gotarredona, T., Linares-Barranco, B., & Andreou, A. G. (1998). -Adaptive Resonance Theory Microchips: Circuit Design Techniques. -Norwell, MA, USA: Kluwer Academic Publishers. - -""" +"""Simple ARTMAP :cite:`gotarredona1998adaptive`.""" +# Serrano-Gotarredona, T., Linares-Barranco, B., & Andreou, A. G. (1998). +# Adaptive Resonance Theory Microchips: Circuit Design Techniques. +# Norwell, MA, USA: Kluwer Academic Publishers. import numpy as np from typing import Optional, Literal, Dict, Union, Tuple from matplotlib.axes import Axes @@ -18,16 +15,20 @@ class SimpleARTMAP(BaseARTMAP): """SimpleARTMAP for Classification. - This module implements SimpleARTMAP as first published in - Serrano-Gotarredona, T., Linares-Barranco, B., & Andreou, A. G. (1998). - Adaptive Resonance Theory Microchips: Circuit Design Techniques. - Norwell, MA, USA: Kluwer Academic Publishers. + This module implements SimpleARTMAP as first published in: + :cite:`gotarredona1998adaptive`. - SimpleARTMAP allows the clustering of data samples while enforcing a many-to-one - mapping from sample clusters to labels. It accepts an instantiated ART module and - dynamically adapts the vigilance function to prevent resonance when the many-to-one - mapping is violated. This enables SimpleARTMAP to identify discrete clusters - belonging to each category label. + .. # Serrano-Gotarredona, T., Linares-Barranco, B., & Andreou, A. G. (1998). + .. # Adaptive Resonance Theory Microchips: Circuit Design Techniques. + .. # Norwell, MA, USA: Kluwer Academic Publishers. + + SimpleARTMAP is a special case of :class:`~artlib.supervised.ARTMAP.ARTMAP` + specifically for classification. It allows the clustering of data samples while + enforcing a many-to-one mapping from sample clusters to labels. It accepts an + instantiated :class:`~artlib.common.BaseART.BaseART` module and dynamically adapts + the vigilance function to prevent resonance when the many-to-one mapping is + violated. This enables SimpleARTMAP to identify discrete clusters belonging to + each category label. """ @@ -308,9 +309,7 @@ def partial_fit( ) for i, (x, c_b) in enumerate(zip(X, y)): self.module_a.pre_step_fit(X) - c_a = self.step_fit( - x, c_b, match_tracking=match_tracking, epsilon=epsilon - ) + c_a = self.step_fit(x, c_b, match_tracking=match_tracking, epsilon=epsilon) self.module_a.labels_[i + j] = c_a self.module_a.post_step_fit(X) return self diff --git a/artlib/topological/DualVigilanceART.py b/artlib/topological/DualVigilanceART.py index 45b8d9c..29ea422 100644 --- a/artlib/topological/DualVigilanceART.py +++ b/artlib/topological/DualVigilanceART.py @@ -1,9 +1,7 @@ -"""Dual Vigilance ART. - -Brito da Silva, L. E., Elnabarawy, I., & Wunsch II, D. C. (2019). Dual vigilance fuzzy -adaptive resonance theory. Neural Networks, 109, 1–5. doi:10.1016/j.neunet.2018.09.015. - -""" +"""Dual Vigilance ART :cite:`da2019dual`.""" +# Brito da Silva, L. E., Elnabarawy, I., & Wunsch II, D. C. (2019). +# Dual vigilance fuzzy adaptive resonance theory. +# Neural Networks, 109, 1–5. doi:10.1016/j.neunet.2018.09.015. import numpy as np from typing import Optional, Callable, List, Literal, Union, Dict from warnings import warn @@ -16,16 +14,22 @@ class DualVigilanceART(BaseART): """Dual Vigilance ART for Clustering. - This module implements Dual Vigilance ART as first published in Brito da Silva, L. - E., Elnabarawy, I., & Wunsch II, D. C. (2019). Dual vigilance fuzzy adaptive - resonance theory. Neural Networks, 109, 1–5. doi:10.1016/j.neunet.2018.09.015. Dual - Vigilance ART allows a base ART module to cluster with both an upper and lower - vigilance value. The upper-vigilance value allows the base ART module to cluster - normally, however, data is simultaneously clustered using the lower vigilance level - to combine multiple base ART categories into a single abstracted category. This - permits clusters to be combined to form arbitrary shapes. For example if the base - ART module is fuzzy ART, a Dual Vigilance Fuzzy ART clustering result would look - like a series of hyper-boxes forming an arbitrary geometry. + This module implements Dual Vigilance ART as first published in: :cite:`da2019dual`. + + .. # Brito da Silva, L. E., Elnabarawy, I., & Wunsch II, D. C. (2019). + .. # Dual vigilance fuzzy adaptive resonance theory. + .. # Neural Networks, 109, 1–5. doi:10.1016/j.neunet.2018.09.015. + + Dual Vigilance ART allows a :class:`~artlib.common.BaseART.BaseART` module to + cluster with both an upper and lower vigilance value. The upper-vigilance value + allows the :class:`~artlib.common.BaseART.BaseART` module to cluster normally, + however, data is simultaneously clustered using the lower vigilance level to + combine multiple base ART categories into a single abstracted category. This + permits clusters to be combined to form arbitrary shapes. For example if the + :class:`~artlib.common.BaseART.BaseART` module is + :class:`~artlib.elementary.FuzzyART.FuzzyART`, a Dual Vigilance Fuzzy ART + clustering result would look like a series of hyper-boxes forming an arbitrary + geometry. """ diff --git a/artlib/topological/TopoART.py b/artlib/topological/TopoART.py index 8f5fae6..35efe23 100644 --- a/artlib/topological/TopoART.py +++ b/artlib/topological/TopoART.py @@ -1,13 +1,10 @@ -"""Topo ART. - -Tscherepanow, M. (2010). -TopoART: A Topology Learning Hierarchical ART Network. -In K. Diamantaras, W. Duch, & L. S. Iliadis (Eds.), -Artificial Neural Networks – ICANN 2010 (pp. 157–167). -Berlin, Heidelberg: Springer Berlin Heidelberg. -doi:10.1007/978-3-642-15825-4_21. - -""" +"""Topo ART :cite:`tscherepanow2010topoart`.""" +# Tscherepanow, M. (2010). +# TopoART: A Topology Learning Hierarchical ART Network. +# In K. Diamantaras, W. Duch, & L. S. Iliadis (Eds.), +# Artificial Neural Networks – ICANN 2010 (pp. 157–167). +# Berlin, Heidelberg: Springer Berlin Heidelberg. +# doi:10.1007/978-3-642-15825-4_21. import numpy as np from typing import Optional, Callable, List, Literal, Tuple, Union, Dict @@ -22,19 +19,21 @@ class TopoART(BaseART): """Topo ART for Topological Clustering. - This module implements Topo ART as first published in - - Tscherepanow, M. (2010). - TopoART: A Topology Learning Hierarchical ART Network. - In K. Diamantaras, W. Duch, & L. S. Iliadis (Eds.), - Artificial Neural Networks – ICANN 2010 (pp. 157–167). - Berlin, Heidelberg: Springer Berlin Heidelberg. - doi:10.1007/978-3-642-15825-4_21. - - Topo ART clusters accepts an instatiated base ART module and generates a topological - clustering by recording the first and second resonant cluster relationships in an - adjacency matrix. Further, it updates the second resonant cluster with a lower - learning rate than the first, providing for a distributed learning model. + This module implements Topo ART as first published in: + :cite:`tscherepanow2010topoart`. + + .. # Tscherepanow, M. (2010). + .. # TopoART: A Topology Learning Hierarchical ART Network. + .. # In K. Diamantaras, W. Duch, & L. S. Iliadis (Eds.), + .. # Artificial Neural Networks – ICANN 2010 (pp. 157–167). + .. # Berlin, Heidelberg: Springer Berlin Heidelberg. + .. # doi:10.1007/978-3-642-15825-4_21. + + Topo ART clusters accepts an instantiated :class:`~artlib.common.BaseART.BaseART` + module and generates a topological clustering by recording the first and second + resonant cluster relationships in an adjacency matrix. Further, it updates the + second resonant cluster with a lower learning rate than the first, providing for + a distributed learning model. """ diff --git a/artlib/topological/__init__.py b/artlib/topological/__init__.py index 72f9273..e8e583a 100644 --- a/artlib/topological/__init__.py +++ b/artlib/topological/__init__.py @@ -5,11 +5,12 @@ geometry of the data. Topological clustering techniques, such as hierarchical clustering and Mapper, are often used in fields like data analysis and computational topology. -The two modules herein provide contrasting advantages. TopoART allows for the creation -of an adjacency matrix which can be useful when clusters overlap or are in close -proximity. Dual Vigilance ART allows for the abstract merging of many smaller clusters -and is well suited to problems where the clusters take-on complex geometries where other -clustering approaches would fail. +The two modules herein provide contrasting advantages. +:class:`~artlib.topological.TopoART.TopoART` allows for the creation of an adjacency +matrix which can be useful when clusters overlap or are in close proximity. +:class:`~artlib.topological.DualVigilanceART.DualVigilanceART` allows for the abstract +merging of many smaller clusters and is well suited to problems where the clusters +take-on complex geometries where other clustering approaches would fail. `Topological clustering `_ diff --git a/docs/source/citation.rst b/docs/source/citation.rst index 1b5e4dd..035e8bf 100644 --- a/docs/source/citation.rst +++ b/docs/source/citation.rst @@ -2,11 +2,11 @@ Citation ================================== If you use this project in your research, please cite it as: -.. bibliography:: references.bib +.. bibliography:: artlib_citation.bib :style: unsrt :all: Alternatively, you can cite the project using the following BibTeX entry: -.. literalinclude:: references.bib +.. literalinclude:: artlib_citation.bib :language: bibtex diff --git a/docs/source/conf.py b/docs/source/conf.py index d69d5b3..68f3418 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -45,7 +45,7 @@ def setup(app): # autoapi_python_class_content = 'both' # autoclass_content = 'both' -bibtex_bibfiles = ['references.bib'] +bibtex_bibfiles = ['artlib_citation.bib', '../../references.bib'] intersphinx_mapping = { 'python': ('https://docs.python.org/3', None), diff --git a/docs/source/index.rst b/docs/source/index.rst index 0fabef5..1573794 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -22,6 +22,7 @@ AdaptiveResonanceLib Home contributing contact license + references citation .. toctree:: diff --git a/docs/source/references.rst b/docs/source/references.rst new file mode 100644 index 0000000..45f1346 --- /dev/null +++ b/docs/source/references.rst @@ -0,0 +1,6 @@ +References +================================== + +.. bibliography:: ../../references.bib + :style: unsrt + :all: \ No newline at end of file diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..3188944 --- /dev/null +++ b/references.bib @@ -0,0 +1,196 @@ +@inproceedings{bezdek2002vat, + title={VAT: A tool for visual assessment of (cluster) tendency}, + author={Bezdek, James C and Hathaway, Richard J}, + booktitle={Proceedings of the 2002 International Joint Conference on Neural Networks. IJCNN'02 (Cat. No. 02CH37290)}, + volume={3}, + pages={2225--2230}, + year={2002}, + organization={IEEE} +} +@article{da2022icvi, + title={iCVI-ARTMAP: using incremental cluster validity indices and adaptive resonance theory reset mechanism to accelerate validation and achieve multiprototype unsupervised representations}, + author={da Silva, Leonardo Enzo Brito and Rayapati, Nagasharath and Wunsch, Donald C}, + journal={IEEE Transactions on Neural Networks and Learning Systems}, + volume={34}, + number={12}, + pages={9757--9770}, + year={2022}, + publisher={IEEE} +} +@article{carpenter1987massively, + title={A massively parallel architecture for a self-organizing neural pattern recognition machine}, + author={Carpenter, Gail A and Grossberg, Stephen}, + journal={Computer vision, graphics, and image processing}, + volume={37}, + number={1}, + pages={54--115}, + year={1987}, + publisher={Elsevier} +} +@article{carpenter1987art, + title={ART 2: Self-organization of stable category recognition codes for analog input patterns}, + author={Carpenter, Gail A and Grossberg, Stephen}, + journal={Applied optics}, + volume={26}, + number={23}, + pages={4919--4930}, + year={1987}, + publisher={Optica Publishing Group} +} +@article{carpenter1991art, + title={ART 2-A: An adaptive resonance algorithm for rapid category learning and recognition}, + author={Carpenter, Gail A and Grossberg, Stephen and Rosen, David B}, + journal={Neural networks}, + volume={4}, + number={4}, + pages={493--504}, + year={1991}, + publisher={Elsevier} +} +@article{vigdor2007bayesian, + title={The bayesian artmap}, + author={Vigdor, Boaz and Lerner, Boaz}, + journal={IEEE Transactions on Neural Networks}, + volume={18}, + number={6}, + pages={1628--1644}, + year={2007}, + publisher={IEEE} +} +@inproceedings{anagnostopoulos2001a, + title={Ellipsoid ART and ARTMAP for incremental clustering and classification}, + author={Anagnostopoulos, Georgios C and Georgiopoulos, Michael}, + booktitle={IJCNN'01. International Joint Conference on Neural Networks. Proceedings (Cat. No. 01CH37222)}, + volume={2}, + pages={1221--1226}, + year={2001}, + organization={IEEE} +} +@inproceedings{anagnostopoulos2001b, + title={Ellipsoid ART and ARTMAP for incremental unsupervised and supervised learning}, + author={Anagnostopoulos, Georgios C and Georgiopoulos, Michael}, + booktitle={Applications and Science of Computational Intelligence IV}, + volume={4390}, + pages={293--304}, + year={2001}, + organization={SPIE} +} +@article{carpenter1991fuzzy, + title={Fuzzy ART: Fast stable learning and categorization of analog patterns by an adaptive resonance system}, + author={Carpenter, Gail A and Grossberg, Stephen and Rosen, David B}, + journal={Neural networks}, + volume={4}, + number={6}, + pages={759--771}, + year={1991}, + publisher={Elsevier} +} +@article{williamson1996gaussian, + title={Gaussian ARTMAP: A neural network for fast incremental learning of noisy multidimensional maps}, + author={Williamson, James R}, + journal={Neural networks}, + volume={9}, + number={5}, + pages={881--897}, + year={1996}, + publisher={Elsevier} +} +@inproceedings{anagnostopoulos2000hypersphere, + title={Hypersphere ART and ARTMAP for unsupervised and supervised, incremental learning}, + author={Anagnostopoulos, Georgios C and Georgiopulos, M}, + booktitle={Proceedings of the IEEE-INNS-ENNS International Joint Conference on Neural Networks. IJCNN 2000. Neural Computing: New Challenges and Perspectives for the New Millennium}, + volume={6}, + pages={59--64}, + year={2000}, + organization={IEEE} +} +@article{su2001application, + title={Application of neural networks using quadratic junctions in cluster analysis}, + author={Su, Mu-Chun and Liu, Ta-Kang}, + journal={Neurocomputing}, + volume={37}, + number={1-4}, + pages={165--175}, + year={2001}, + publisher={Elsevier} +} +@article{su2005new, + title={A new approach to clustering data with arbitrary shapes}, + author={Su, Mu-chun and Liu, Yi-chun}, + journal={pattern recognition}, + volume={38}, + number={11}, + pages={1887--1901}, + year={2005}, + publisher={Elsevier} +} +@inproceedings{tan2007intelligence, + title={Intelligence through interaction: Towards a unified theory for learning}, + author={Tan, Ah-Hwee and Carpenter, Gail A and Grossberg, Stephen}, + booktitle={International Symposium on Neural Networks}, + pages={1094--1103}, + year={2007}, + organization={Springer} +} +@inproceedings{bartfai1994hierarchical, + title={Hierarchical clustering with ART neural networks}, + author={Bartfai, Guszti}, + booktitle={Proceedings of 1994 IEEE International Conference on Neural Networks (ICNN'94)}, + volume={2}, + pages={940--944}, + year={1994}, + organization={IEEE} +} +@inproceedings{tan2004falcon, + title={FALCON: A fusion architecture for learning, cognition, and navigation}, + author={Tan, Ah-Hwee}, + booktitle={2004 IEEE International Joint Conference on Neural Networks (IEEE Cat. No. 04CH37541)}, + volume={4}, + pages={3297--3302}, + year={2004}, + organization={IEEE} +} +@article{tan2008integrating, + title={Integrating temporal difference methods and self-organizing neural networks for reinforcement learning with delayed evaluative feedback}, + author={Tan, Ah-Hwee and Lu, Ning and Xiao, Dan}, + journal={IEEE transactions on neural networks}, + volume={19}, + number={2}, + pages={230--244}, + year={2008}, + publisher={IEEE} +} +@inproceedings{carpenter1991artmap, + author={Carpenter, G.A. and Grossberg, S. and Reynolds, J.H.}, + booktitle={[1991 Proceedings] IEEE Conference on Neural Networks for Ocean Engineering}, + title={ARTMAP: supervised real-time learning and classification of nonstationary data by a self-organizing neural network}, + year={1991}, + volume={}, + number={}, + pages={341-342}, + keywords={Subspace constraints;Databases;Neural networks;Supervised learning;Resonance;Pattern recognition;System testing;Benchmark testing;Machine learning;Machine learning algorithms}, + doi={10.1109/ICNN.1991.163370} +} +@misc{gotarredona1998adaptive, + title={Adaptive Resonance Theory Microchips Circuit Design Techniques}, + author={Gotarredona, Teresa Serrano and Barranco, B Linares and Andreou, AG}, + year={1998}, + publisher={Norwell, MA: Kluwer} +} +@article{da2019dual, + title={Dual vigilance fuzzy adaptive resonance theory}, + author={da Silva, Leonardo Enzo Brito and Elnabarawy, Islam and Wunsch II, Donald C}, + journal={Neural Networks}, + volume={109}, + pages={1--5}, + year={2019}, + publisher={Elsevier} +} +@inproceedings{tscherepanow2010topoart, + title={TopoART: A topology learning hierarchical ART network}, + author={Tscherepanow, Marko}, + booktitle={International Conference on Artificial Neural Networks}, + pages={157--167}, + year={2010}, + organization={Springer} +} diff --git a/scripts/generate_references.py b/scripts/generate_references.py index 6a7a24f..51f0404 100644 --- a/scripts/generate_references.py +++ b/scripts/generate_references.py @@ -23,7 +23,7 @@ def generate_references(): modified_bibtex = "\n".join(bibtex_lines) # Write the modified content to references.bib - output_path = os.path.join("docs", "source", "references.bib") + output_path = os.path.join("docs", "source", "artlib_citation.bib") with open(output_path, "w", encoding="utf-8") as f: f.write(modified_bibtex) else: