Learn R Programming

som (version 0.3-3)

som: Function to train a Self-Organizing Map

Description

Produces an object of class "som" which is a Self-Organizing Map fit of the data.

Usage

som.init(data, xdim, ydim, init="linear")
som(data, xdim, ydim, init="linear", alpha=NULL, alphaType="inverse",
neigh="gaussian", topol="rect", radius=NULL, rlen=NULL, err.radius=1,
inv.alp.c=NULL)
som.train(data, code, xdim, ydim, alpha=NULL, alphaType="inverse",
neigh="gaussian", topol="rect", radius=NULL, rlen=NULL, err.radius=1, inv.alp.c=NULL)
som.update(obj, alpha = NULL, radius = NULL, rlen = NULL, err.radius =
1, inv.alp.c = NULL)
som.project(obj, newdat)

Arguments

obj
a `som' object.
newdat
a new dataset needs to be projected onto the map.
code
a matrix of initial code vector in the map.
data
a data frame or matrix of input data.
xdim
an integer specifying the x-dimension of the map.
ydim
an integer specifying the y-dimension of the map.
init
a character string specifying the initializing method. The following are permitted: "sample" uses a radom sample from the data; "random" uses random draws from N(0,1); "linear" uses the linear grids u
alpha
a vector of initial learning rate parameter for the two training phases. Decreases linearly to zero during training.
alphaType
a character string specifying learning rate funciton type. Possible choices are linear function ("linear") and inverse-time type function ("inverse").
neigh
a character string specifying the neighborhood function type. The following are permitted:

"bubble" "gaussian"

topol
a character string specifying the topology type when measuring distance in the map. The following are permitted:

"hexa" "rect"

radius
a vector of initial radius of the training area in som-algorithm for the two training phases. Decreases linearly to one during training.
rlen
a vector of running length (number of steps) in the two training phases.
err.radius
a numeric value specifying the radius when calculating average distortion measure.
inv.alp.c
the constant C in the inverse learning rate function: alpha0 * C / (C + t);

Value

  • `som.init' initializes a map and returns the code matrix. `som' does the two-step som training in a batch fashion and return a `som' object. `som.train' takes data, code, and traing parameters and perform the requested som training. `som.update' takes a `som' object and further train it with updated paramters. `som.project' projects new data onto the map. An object of class "som" representing the fit, which is a list containing the following components:
  • datathe dataset on which som was applied.
  • inita character string indicating the initializing method.
  • xdiman integer specifying the x-dimension of the map.
  • ydiman integer specifying the y-dimension of the map.
  • codea metrix with nrow = xdim*ydim, each row corresponding to a code vector of a cell in the map. The mapping from cell coordinate (x, y) to the row index in the code matrix is: rownumber = x + y * xdim
  • visuala data frame of three columns, with the same number of rows as in data: x and y are the coordinate of the corresponding observation in the map, and qerror is the quantization error computed as the squared distance (depends topol) between the observation vector and its coding vector.
  • alpha0a vector of initial learning rate parameter for the two training phases.
  • alphaa character string specifying learning rate funciton type.
  • neigha character string specifying the neighborhood function type.
  • topola character string specifying the topology type when measuring distance in the map.
  • radius0a vector of initial radius of the training area in som-algorithm for the two training phases.
  • rlena vector of running length in the two training phases.
  • qerrora numeric value of average distortion measure.
  • code.suma dataframe summaries the number of observations in each map cell.

References

Kohonen, Hynninen, Kangas, and Laaksonen (1995), SOM-PAK, the Self-Organizing Map Program Package (version 3.1). http://www.cis.hut.fi/research/papers/som_tr96.ps.Z

Examples

Run this code
data(yeast)
yeast <- yeast[, -c(1, 11)]
yeast.f <- filtering(yeast)
yeast.f.n <- normalize(yeast.f)
foo <- som(yeast.f.n, xdim=5, ydim=6)
foo <- som(yeast.f.n, xdim=5, ydim=6, topol="hexa", neigh="gaussian")

Run the code above in your browser using DataLab