Modules

This project implements a number of ART-based models with options that modulate their behavior (see the options section of the Guide)

This page lists both the implemented models and some of their variants

Constructor and option details are grouped in the ART reference and ARTMAP reference. Shared operations are documented under Training and Classification and evaluation.

Implemented Models

This project has implementations of the following ART (unsupervised) and ARTMAP (supervised) modules:

Variants

Each module contains many options that modulate its behavior. Some of these options are used to modulate the internals of the module, such as switching the match and activation functions, to achieve different modules that are found in the literature.

These variants are:

Gamma-Normalized FuzzyART

A Gamma-Normalized FuzzyART is implemented as a FuzzyART module where the gamma normalization option is set on gamma_normalization=true and the kernel width parameter is set to $\gamma >= 1.0$ ($\gamma_{ref}$ is 1.0 by default). It can be created with the convenience constructor:

my_gnfa = GammaNormalizedFuzzyART()

Under the hood, this simply does

my_gnfa = FuzzyART(gamma_normalization=true)

which also sets the match and activation function options to match=:gamma_match and activation=:gamma_activation, respectively.

Default ARTMAP

A Default ARTMAP is implemented as a Simplified FuzzyARTMAP module where the activation function is set to Default ARTMAP's choice-by difference function via activation=:choice_by_difference. It can be created with the convenience constructor:

my_dam = DAM()

Under the hood, this simply does

my_dam = SFAM(activation=:choice_by_difference)

Hypersphere ART

HypersphereART represents each category by a center and radius, stored in a column of art.W as [center; radius]. It supports the same batch and incremental train! and classify calls, optional training labels, get_bmu, progress display, and epoch limit as the other ART models.

art = HypersphereART(rho=0.6, beta=1.0)
x = [0.0 0.1 0.9 1.0; 0.0 0.2 0.8 1.0]
labels = train!(art, x)
predictions = classify(art, x)

Raw inputs are normalized using DataConfig. Hypersphere ART does not use complement coding: preprocessed=true means that the original features have already been normalized. For incremental raw input, configure the feature bounds first, for example with art.config = DataConfig(0, 1, 2).

The options opts_HypersphereART include vigilance rho, choice alpha, and learning rate beta. The radial extent r_bar defaults to sqrt(dim) / 2, the radius of the enclosing sphere for the normalized unit cube. An explicit positive r_bar controls the distance scale for category choice and vigilance; for custom input scales, choose it at least as large as half the maximum pairwise sample distance. With beta=1, a resonating sphere expands just enough to enclose an exterior sample while retaining its previously enclosed points. Interior samples leave it unchanged.

Like FuzzyART, HypersphereART selects its formulas through the activation, match, and update option symbols. Their defaults are :hypersphere_activation, :hypersphere_match, and :hypersphere_update, implemented in src/lib/symbols.jl. Replacement functions must support the [center; radius] weight layout; fuzzy formulas assume a different layout.