LVQ_LNK(1)

NAME
lvq_lnk - Learning vector quantizer

SYNOPSIS
Program for training and testing a learning vector quantizer. It shifts previously calculated cluster centers to improve performance of a nearest cluster classifier.

lvq_lnk [ -fclparam file ] [ -lvq_type n ] [ -alpha x ]
[ -window x ] [ -epsilon x ] [ -epochs n ]
[ -classifier_options ]

EXAMPLE
kmeans -train -create -ncenters 16 -fparam kmeans.param \
-pathdata $LNKHOME/data/class -fdescribe vowel.defaults \
-finput vowel.train -npatterns 338

lvq_lnk -lvq_type 1 -alpha .3 -epochs 5 -fclparam kmeans.param \
-train -create -pathdata $LNKHOME/data/class \
-finput vowel.train -fdescribe vowel.defaults \
-fparam lvq.param -npatterns 338

lvq_lnk -pathdata $LNKHOME/data/class -finput vowel.eval \
-fdescribe vowel.defaults -fparam lvq.param -npatterns 166

DESCRIPTION

When training, a learning vector quantizer reads centers from a cluster file and assigns labels to them using nearest neighbor based voting. After labeling the centers, it moves them according to one of the following algorithms:

LVQ1
    Update the position of the center closest to the current pattern. Move it toward the pattern if the classes are the same. Move it away from the pattern if the classes differ. The step size for the movement is alpha(t), which decreases linearly to 0 over the course of training.

OLVQ
    Update centers as LVQ1 did. Each center has its own step size which is decreased when the center moves toward a pattern and increased when the center is moved away from a pattern.

LVQ2
    Update the positions of the two centers closest to the current pattern, if they meet certain conditions. One must be of the correct class, the other of an incorrect class and the ratio of their distances from the pattern must fall inside a window. The idea is to move only those centers which are on the borders between classes. The step size for movement is the same as in LVQ1.

LVQ3
    Update centers as LVQ2 did. Also update the two nearest centers if they are both of the correct class. The step size for movement is scaled by epsilon when both centers are of the correct class.

When testing, a learning vector quantizer does nearest neighbor classification. The class assigned to a pattern is the class of the center nearest to that pattern.

OPTIONS
-- Prints a list of all flags and arguments.

-fclparam filename
    The file in pathexp with the initial centers.

-lvq_type n
    n determines which LVQ algorithm to use during training. The algorithms are described above.

    0 OLVQ

    1 LVQ1

    2 LVQ2

    3 LVQ3

-alpha x
    x is the initial value of alpha, the step size for center movement.
    0.0 < alpha < 1.0

-window x
    x is used in finding the window width for LVQ2 and LVQ3. The actual window width is:
    window = (1.0 - x)/(1.0 + x)
    0.0 < x < 1.0

-epsilon x
    x is the value for epsilon, the additional scaling factor for the step size in LVQ3 when the two nearest centers are of the correct class.
    0.0 < epsilon < 1.0

-epochs n
    n is the number of times to run through all of the data in the input file during training. This flag has no effect when testing.

-classifier_options
    lvq_lnk accepts the general classifier arguments described on the classifier(1) manual page. Certain arguments are not used by the program, and so are not available.

    Unavailable arguments from general list:

    -ninputs -features -normalize -fnorm
        The settings for these flags are read from the cluster file used to initialize the centers.

    -adjust_test_priors -test_priors_list -test_uniform_priors
        Because lvq_lnk does nearest neighbor classification, there are no outputs to scale for adjusting the priors during testing.

    -log_outputs
        lvq_lnk does not currently store outputs in the error file.

REFERENCE
Teuvo Kohonen, Statistical Pattern Recognition Revisited, in Advanced Neural Computers, edited by R. Eckmiller, Elsevier Science Publishers B. V. (North-Holland), 1990.

SEE ALSO
classifier(1), lvq2c(1), lvq_plot_bound(1), lvq_feat_sel(1)

HISTORY
First written 20 May 1992 by Linda Kukolich

BUGS
Send bug reports to Linda Kukolich (kukolich@sst.ll.mit.edu)