How can the Neighbourhood function of a Self Organizing map be estimated?

3 views (last 30 days)
Happy new year :) I would like to write a code for a self organizing map without using the matlab inbuilt SOM function. How can i estimate the neighbourhood function.
h=alpha.*exp(-((ri-rc).^2)/2.*(width).^2);
ri and rc are the vectorial location on the display grid. Alpha and width decreases monotonically with the regression steps. My questions are how do i compute ri, rc and the width so as to get the neighbourhood function?
Any ideas will be appreciated!
x1=signal(1);
x2=signal(2);
x3=signal(3);
x4=signal(4);
x=[x1;x2;x3;x4];
alpha=0.01;
width=2;%%%may be
w=zeros(1,length(x1));
D = sqrt(sum((x1-w).^2));%%%Euclidean Distance
c=min(D);
while max(max(abs(delw)))> 0.00001
for j=1:4
h=alpha.*exp(-((ri-rc).^2)/2.*(width).^2);
deltaw=(h.*(x(:,j)-w));
w=w+delw;
end
alpha=alpha*0.9;
width=width.*0.9;
D = sqrt(sum((x(:,j)-w).^2));%%%Euclidean Distance
c=min(D);
end
This is the idea i have on the SOM script but i am very unssure if it makes any sense. Suggestions please

Answers (1)

Thorsten
Thorsten on 9 Jan 2013
Edited: Thorsten on 9 Jan 2013
width = 2; % == sigma of Gaussian neighboring function
% change to select size of neighborhood that is about 3 x sigma
b = ceil(3*width); % 99.8% of the Gaussin is in [-3*sigma, 3*sigma];
% BTW: 99.8% is normcdf(3) or 0.5*erfc(-3/sqrt(2))
x = -b:b; y = x; [X Y] = meshgrid(x, y);
G = 1/(2*pi*width^2)*exp(-(X.^2+Y.^2)/(2*width^2)); % 2D Gaussian
G = G/sum(G(:)); % normalize
I = rand(100); % sample input
R = conv2(I, G); % input weighted by neighboring function
subplot(1,3,1), surfl(x, y, G), title('Gaussian neighboring function G')
axis square
subplot(1,3,2), imshow(I, []), title('Input')
subplot(1,3,3), imshow(R, []), title('Input weighted by G')
  1 Comment
Ijeoma Madu
Ijeoma Madu on 11 Jan 2013
Thanks but why is y=x? How can i interprete the neighbourhood function you used above with the one below
h=alpha.*exp(-((ri-rc).^2)/2.*(width).^2);
ri and rc are the vector of the coordinates of cells c and i.

Sign in to comment.

Categories

Find more on Live Scripts and Functions in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!