# somtrain

## Purpose

Kohonen training algorithm for SOM.

## Synopsis

    net = somtrain{net, options, x)

## Description

`net = somtrain{net, options, x)` uses Kohonen's algorithm to train a SOM. Both on-line and batch algorithms are implemented. The learning rate (for on-line) and neighbourhood size decay linearly. There is no error function minimised during training (so there is no termination criterion other than the number of epochs), but the sum-of-squares is computed and returned in `options(8)`.

The optional parameters have the following interpretations.

`options(1)` is set to 1 to display error values; also logs learning rate `alpha` and neighbourhood size `nsize`. Otherwise nothing is displayed.

`options(5)` determines whether the patterns are sampled randomly with replacement. If it is 0 (the default), then patterns are sampled in order. This is only relevant to the on-line algorithm.

`options(6)` determines if the on-line or batch algorithm is used. If it is 1 then the batch algorithm is used. If it is 0 (the default) then the on-line algorithm is used.

`options(14)` is the maximum number of iterations (passes through the complete pattern set); default 100.

`options(15)` is the final neighbourhood size; default value is the same as the initial neighbourhood size.

`options(16)` is the final learning rate; default value is the same as the initial learning rate.

`options(17)` is the initial neighbourhood size; default 0.5*maximum map size.

`options(18)` is the initial learning rate; default 0.9. This parameter must be positive.

## Examples

The following example performs on-line training on a SOM in two stages: ordering and convergence.

    net = som(nin, [8, 7]);
    options = foptions;

    % Ordering phase
    options(1) = 1;
    options(14) = 50;
    options(18) = 0.9;  % Initial learning rate
    options(16) = 0.05; % Final learning rate
    options(17) = 8;    % Initial neighbourhood size
    options(15) = 1;    % Final neighbourhood size
    net2 = somtrain(net, options, x);

    % Convergence phase
    options(14) = 400;
    options(18) = 0.05;
    options(16) = 0.01;
    options(17) = 0;
    options(15) = 0;
    net3 = somtrain(net2, options, x);

## See Also

`kmeans`, `som`, `somfwd`

Pages: Index

Copyright (c) Ian T Nabney (1996-9)