0

I am a newbie to SOMs and am using the Matlab SOM package to examine sea level pressure over time. My 2D input array is (row x column): pressure (function of latitude and longitude) x time. When training is complete, and I plot the SOM weight positions, I get the following: enter image description here

Is this correct? All of the weight position plots that I see are not so 1:1, so my plot appears strange.

Here is my code (note: code will not execute, just for conceptual purposes)

slp = somedata; % dim: 30200 x 1550 [pressure x time]

% Calculate mean for each location over time
mean_slp = nanmean(slp,2);

% Calculate anomalies for each location over time
slp_anom = nan((i2-i1+1)*(j2-j1+1),nfiles);
for i = 1:time
    slp_anom(:,i) = slp3(:,i) - mean_slp(i,1);
end

% Normalize data
[slp_anom2,PS] = mapminmax(slp_anom);

net = selforgmap([4 4]);
net.trainParam.epochs = 1000;
net = train(net,slp_anom2);

I appreciate any and all feedback. Thanks!

Tim
  • 45
  • 1
  • 6

1 Answers1

0

What is a Weight positions plot in the context of the SOM algorithms's training?

How SOM are trained

The SOM algorithm essentially computes a set of prototype/codebook vectors of the same dimension as the input data. It does so by initializing # neurons according to some rule (random, PCA, etc.) inside the input space and then shifting their positions inside the input space so as to minimize a distance metric under the constraint of a neighborhood function that determines the influence of data point in the neurons' receptive field at each iteration.

Weight Position Plot

The Weight Positions Plot is a 3D plot (!) so you need to use the rotate 3D tool to be able to make sense of the map.

What you then see, depending on dimensionality, is a collection of pale-blue dots and red lines. The pale blue dots are the projections of the neuron positions according onto the two dimensions selected for the plot that have been shifted around the input space.

So the plot would look differently depending on which Weight Dimensions (aka. Input columns) you choose to compute the plot. Matlab typically chooses the first two input columns.

What about the water pressure?

I cannot help here as your dataset appear to be extremely wide for a simple pressure/time vector. Are the columns representing different measurement points on the globe? If so, you should ask yourself what would be gained by having a SOM model of that. What would you do when you got a new vector from a new timestamp? What would you like to do with it? What additinoal information would you gain?

ledawg
  • 2,395
  • 1
  • 11
  • 17