Copyright | (c) Amy de Buitléir 2012-2016 |
---|---|
License | BSD-style |
Maintainer | amy@nualeargais.ie |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
A module containing private SGM
internals. Most developers should
use SGM
instead. This module is subject to change without notice.
- exponential :: (Floating a, Integral t) => a -> a -> t -> a
- data SGM t x k p = SGM {
- toMap :: Map k (p, t)
- learningRate :: t -> x
- maxSize :: Int
- diffThreshold :: x
- allowDeletion :: Bool
- difference :: p -> p -> x
- makeSimilar :: p -> x -> p -> p
- nextIndex :: k
- makeSGM :: Bounded k => (t -> x) -> Int -> x -> Bool -> (p -> p -> x) -> (p -> x -> p -> p) -> SGM t x k p
- isEmpty :: SGM t x k p -> Bool
- numModels :: SGM t x k p -> Int
- modelMap :: SGM t x k p -> Map k p
- counterMap :: SGM t x k p -> Map k t
- labels :: SGM t x k p -> [k]
- models :: SGM t x k p -> [p]
- counters :: SGM t x k p -> [t]
- time :: Num t => SGM t x k p -> t
- addNode :: (Num t, Enum k, Ord k) => p -> SGM t x k p -> SGM t x k p
- deleteNode :: Ord k => k -> SGM t x k p -> SGM t x k p
- incrementCounter :: (Num t, Ord k) => k -> SGM t x k p -> SGM t x k p
- trainNode :: (Num t, Ord k) => SGM t x k p -> k -> p -> SGM t x k p
- leastUsefulNode :: Ord t => SGM t x k p -> k
- deleteLeastUsefulNode :: (Ord t, Ord k) => SGM t x k p -> SGM t x k p
- addModel :: (Num t, Ord t, Enum k, Ord k) => p -> SGM t x k p -> SGM t x k p
- classify :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)])
- classify' :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)], SGM t x k p)
- matchOrder :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
- trainAndClassify :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)], SGM t x k p)
- train :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> SGM t x k p
- trainBatch :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> [p] -> SGM t x k p
Documentation
exponential :: (Floating a, Integral t) => a -> a -> t -> a Source #
A typical learning function for classifiers.
returns the learning rate at time exponential
r0 d tt
.
When t = 0
, the learning rate is r0
.
Over time the learning rate decays exponentially; the decay rate is
d
.
Normally the parameters are chosen such that:
- 0 < r0 < 1
- 0 < d
A Simplified Self-Organising Map (SGM).
t
is the type of the counter.
x
is the type of the learning rate and the difference metric.
k
is the type of the model indices.
p
is the type of the input patterns and models.
SGM | |
|
makeSGM :: Bounded k => (t -> x) -> Int -> x -> Bool -> (p -> p -> x) -> (p -> x -> p -> p) -> SGM t x k p Source #
counterMap :: SGM t x k p -> Map k t Source #
Returns a map from node ID to counter (number of times the node's model has been the closest match to an input pattern).
counters :: SGM t x k p -> [t] Source #
Returns the current counters (number of times the node's model has been the closest match to an input pattern).
time :: Num t => SGM t x k p -> t Source #
The current "time" (number of times the SGM has been trained).
addNode :: (Num t, Enum k, Ord k) => p -> SGM t x k p -> SGM t x k p Source #
Adds a new node to the SGM.
deleteNode :: Ord k => k -> SGM t x k p -> SGM t x k p Source #
Removes a node from the SGM. Deleted nodes are never re-used.
trainNode :: (Num t, Ord k) => SGM t x k p -> k -> p -> SGM t x k p Source #
Trains the specified node to better match a target.
Most users should use
, which automatically determines
the BMU and trains it.train
leastUsefulNode :: Ord t => SGM t x k p -> k Source #
classify :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)]) Source #
identifies the model classify
s ps
that most closely
matches the pattern p
.
It will not make any changes to the classifier.
Returns the ID of the node with the best matching model,
the difference between the best matching model and the pattern,
and the SGM labels paired with the difference between the input
and the corresponding model.
The final paired list is sorted in decreasing order of similarity.
classify' :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)], SGM t x k p) Source #
trainAndClassify :: (Num t, Ord t, Num x, Ord x, Enum k, Ord k) => SGM t x k p -> p -> (k, x, [(k, x)], SGM t x k p) Source #
identifies the model in trainAndClassify
s ps
that most
closely matches p
, and updates it to be a somewhat better match.
If necessary, it will create a new node and model.
Returns the ID of the node with the best matching model,
the difference between the best matching model and the pattern,
the differences between the input and each model in the SGM,
and the updated SGM.