Portability | portable |
---|---|
Stability | experimental |
Maintainer | amy@nualeargais.ie |
Safe Haskell | Safe-Inferred |
A module containing private SOM
internals. Most developers should
use SOM
instead. This module is subject to change without notice.
- data SOM gm k p = SOM {}
- defaultSOM :: Floating (Metric p) => gm p -> Metric p -> Metric p -> Int -> SOM gm k p
- customSOM :: gm p -> (Int -> Int -> Metric p) -> SOM gm k p
- gaussian :: Floating a => a -> a -> Int -> a
- decayingGaussian :: Floating a => a -> a -> Int -> Int -> Int -> a
- toGridMap :: GridMap gm p => SOM gm k p -> gm p
- trainNeighbourhood :: (Pattern p, Grid (gm p), GridMap gm p, Index (BaseGrid gm p) ~ Index (gm p)) => SOM gm k p -> Index (gm p) -> p -> SOM gm k p
- incrementCounter :: SOM gm k p -> SOM gm k p
Construction
A Self-Organising Map (SOM).
Although SOM
implements GridMap
, most users will only need the
interface provided by Data.Datamining.Clustering.Classifier
. If
you chose to use the GridMap
functions, please note:
- The functions
adjust
, andadjustWithKey
do not increment the counter. You can do so manually withincrementCounter
. - The functions
map
andmapWithKey
are not implemented (they just return anerror
). It would be problematic to implement them because the input SOM and the output SOM would have to have the sameMetric
type.
(GridMap gm p, ~ * k (Index (BaseGrid gm p)), Pattern p, Grid (gm p), GridMap gm (Metric p), ~ * k (Index (gm p)), ~ * k (Index (BaseGrid gm (Metric p))), Ord (Metric p)) => Classifier (SOM gm) k p | |
Foldable gm => Foldable (SOM gm k) | |
(Foldable gm, GridMap gm p, Grid (BaseGrid gm p)) => GridMap (SOM gm k) p | |
Grid (gm p) => Grid (SOM gm k p) |
defaultSOM :: Floating (Metric p) => gm p -> Metric p -> Metric p -> Int -> SOM gm k pSource
Creates a classifier with a default (bell-shaped) learning
function. Usage is
, where:
defaultSOM
gm r w t
gm
- The geometry and initial models for this classifier.
A reasonable choice here is
, wherelazyGridMap
g psg
is a
, andHexHexGrid
ps
is a set of random patterns. r
- The learning rate to be applied to the BMU (Best Matching Unit) at time zero. The BMU is the model which best matches the current target pattern.
w
- The width of the bell curve at time zero.
t
- Controls how rapidly the learning rate decays. After this time, any learning done by the classifier will be negligible. We recommend setting this parameter to the number of patterns (or pattern batches) that will be presented to the classifier. An estimate is fine.
customSOM :: gm p -> (Int -> Int -> Metric p) -> SOM gm k pSource
Creates a classifier with a custom learning function.
Usage is
, where:
customSOM
gm g
gm
- The geometry and initial models for this classifier.
A reasonable choice here is
, wherelazyGridMap
g psg
is a
, andHexHexGrid
ps
is a set of random patterns. f
- A function used to adjust the models in the classifier. This function will be invoked with two parameters. The first parameter will indicate how many patterns (or pattern batches) have previously been presented to this classifier. Typically this is used to make the learning rate decay over time. The second parameter to the function is the grid distance from the node being updated to the BMU (Best Matching Unit). The output is the learning rate for that node (the amount by which the node's model should be updated to match the target). The learning rate should be between zero and one.
gaussian :: Floating a => a -> a -> Int -> aSource
Calculates re^(-d^2/2w^2)
.
This form of the Gaussian function is useful as a learning rate
function. In
, gaussian
r w dr
specifies the highest learning
rate, which will be applied to the SOM node that best matches the
input pattern. The learning rate applied to other nodes will be
applied based on their distance d
from the best matching node.
The value w
controls the 'width' of the Gaussian. Higher values
of w
cause the learning rate to fall off more slowly with
distance d
.
decayingGaussian :: Floating a => a -> a -> Int -> Int -> Int -> aSource
Configures a typical learning function for classifiers.
returns a bell curve-shaped
function. At time zero, the maximum learning rate (applied to the
BMU) is decayingGaussian
r w0 tMaxr
, and the neighbourhood width is w
. Over time the bell
curve shrinks and the learning rate tapers off, until at time
tMax
, the learning rate is negligible.
Deconstruction
toGridMap :: GridMap gm p => SOM gm k p -> gm pSource
Extracts the grid and current models from the SOM.
Advanced control
trainNeighbourhood :: (Pattern p, Grid (gm p), GridMap gm p, Index (BaseGrid gm p) ~ Index (gm p)) => SOM gm k p -> Index (gm p) -> p -> SOM gm k pSource
Trains the specified node and the neighbourood around it to better
match a target.
Most users should use train
, which automatically determines
the BMU and trains it and its neighbourhood.
incrementCounter :: SOM gm k p -> SOM gm k pSource