Redes de competencia

Contenido

Problema 16.1

P16_1.png
Solución:
Faltan especificaciones, pero se supone que los vectores están en un circulo unitario. Así se necesitan 4 neuronal cercasnas a cada grupo de datos de entrenamiento (se formaran 4 clusters). Se eligen los vectores prototipo (los pesos) a la mitad de cada cuadrante.
P16_1_2.png

Problema 16.2

P16_2.png
P16_2_1.png
Solución:
p1 = [-1 0]';
p2 = [0 1]';
p3 = [1/sym(sqrt(2)),1/sym(sqrt(2))]';
w1 = [0 -1]';
w2 = [-2/sym(sqrt(5)) 1/sym(sqrt(5))]';
w3 = [-1/sym(sqrt(5)) 2/sym(sqrt(5))]';
alpha = 0.5;
W = [w1';w2';w3']
W = 
% entra el vector p1
W*p1
ans = 
a = compet(W*p1)
a = 
w2 = w2 + alpha * (p1-w2);
W = [w1';w2';w3'];
% entra p2
a = compet(W*p2)
a = 
w3 = w3 + alpha * (p2-w3);
W = [w1';w2';w3'];
% entra p3
a = compet(W*p3)
a = 
w3 = w3 + alpha * (p3-w3);
W = [w1';w2';w3'];
% entra p1
a = compet(W*p1)
a = 
w2 = w2 + alpha * (p1-w2);
W = [w1';w2';w3'];
% entra p2
a = compet(W*p2)
a = 
w3 = w3 + alpha * (p2-w3);
W = [w1';w2';w3'];
% entra p3
a = compet(W*p3)
a = 
w3 = w3 + alpha * (p3-w3);
W = [w1';w2';w3'];
eval(W)
ans = 3×2
0 -1.0000 -0.9736 0.1118 0.4140 0.8103
P16_2_2.png

Problema 16.3

P16_3.png
P16_3_1.png
Solución:
Se propone una solución gráfica
P16_3_2.png

Problema 16.4

P16_4.png
Solución:
p = [0.67 0.07 0.74]';
W = [0.41 0.45 0.41 0 0 0 -0.41 -0.45 -0.41;
0.41 0 -0.41 0.45 0 -0.45 0.41 0 -0.41;
0.82 0.89 0.82 0.89 1 0.89 0.82 0.89 0.82]';
alpha = 0.1;
figure
plot3(W(:,1),W(:,2),W(:,3))
xlim('auto')
ylim('auto')
zlim('auto')
view([-179.153 90.000])
P16_4_2.png
a = compet(W*p)
a = 9×1
0 1 0 0 0 0 0 0 0
% como el radio es de 1, se actualiza la neurona 1, 2 y 3
W(1,:) = (W(1,:)' + alpha * (p - W(1,:)'))';
W(2,:) = (W(2,:)' + alpha * (p - W(2,:)'))';
W(3,:) = (W(3,:)' + alpha * (p - W(3,:)'))';
W
W = 9×3
0.4360 0.3760 0.8120 0.4720 0.0070 0.8750 0.4360 -0.3620 0.8120 0 0.4500 0.8900 0 0 1.0000 0 -0.4500 0.8900 -0.4100 0.4100 0.8200 -0.4500 0 0.8900 -0.4100 -0.4100 0.8200
figure
plot3(W(:,1),W(:,2),W(:,3))
xlim('auto')
ylim('auto')
zlim('auto')
view([-179.153 90.000])

Problema 16.5

P16_5.png
P16_5_1.png
Solución:
W = [0 1 1 -1 -1;
0 -1 1 1 -1]'
W = 5×2
0 0 1 -1 1 1 -1 1 -1 -1
% creamos un p generico
syms p1 p2
p = [p1 p2]'
p = 
Si gana la primer neurona tenemos el primer cluster, si gana la segunda neurona tenemos el segundo cluster, si gana la neurona 3, 4, o 5 (subclases) tenemos el tercer cluster
% la entrada a la competencia
n = -[norm(W(1,:)-p') norm(W(2,:)-p') norm(W(3,:)-p') norm(W(4,:)-p') norm(W(5,:)-p')]'
n = 
entonces si gana la primer neurona
des = n(2:end,1)<=n(1,1)
des = 
% por ejemplo la promer desigualdad -2p1 +1 + 2p2 + 1 >= 0 ---> -p1 +p2 +1 >= 0
figure
h = ineqplot('(x-1).^2 + (y+1).^2 >=x.^2+y.^2',[-1.2 1.2 -1.2 1.2]);
set(h,'Color','r'); % Change color
figure
h = ineqplot('(x-1).^2 + (y-1).^2 >=x.^2+y.^2',[-1.2 1.2 -1.2 1.2]);
set(h,'Color','b'); % Change color
figure
h = ineqplot('(x+1).^2 + (y-1).^2 >=x.^2+y.^2',[-1.2 1.2 -1.2 1.2]);
set(h,'Color','g'); % Change color
figure
h = ineqplot('(x+1).^2 + (y+1).^2 >=x.^2+y.^2',[-1.2 1.2 -1.2 1.2]);
set(h,'Color','k'); % Change color
De forma similar, cuando gana la segunda segunda neurona, y de manera conjunta cuando ganan las tres ultimas neuronas
P16_5_2.png

Problema 16.6

P16_6.png
Solución:
De acuerdo a la geometria se tienen 3 clases y 9 sublaces tres para caa una
P16_6_2.png
Se eligen los vectores pritotipos como los centros de cada clustes, así el vector prototipo más cercan a cada cluster ganará la competencia en la primer capa
Se eligen los pesos de la segunda capa como de acuerdo al vector portotipoqque gane y pertenezca a la misma clase
Para porbar que el diseño es correcto se toma el vector
Al pasar a la segund capa
Las fronteras de desición quedan como
P16_6_3.png

Problema 16.7

P16_7.png
P16_7_1.png
Solución:
Primero se agrega la dimensión indicada
Se normalizan los vectores
Ahora la tercer componente tiene la información de la magnitud, que es igual al inverso de la magnitud de los vectores ectendidos (calculo directo)

App

Hamming Classification
nnd3hamc
Competitive Classification
nnd14cc
Competitive Learning
nnd14cl
1-D Feature Maps
nnd14fm1
2-D Feature Maps
nnd14fm2
LVQ1
nnd14lv1
LVQ2
nnd14lv2

Referencias

El material se toma del libro de Martin Hagan et. al. enlace
Graficar desigualdades
Programas
function h = ineqplot(I,R,c)
% Plotting inequalities, simple and easy.
%
% Input arguments
% I - Inequality as string, i.e. 'x+y>10'
% R - Vector of four components defined by: [xmin, xmax, ymin, ymax],
% if two components are passed: [min, max], the defined region
% will be a square and xmin=ymin=min, xmax=ymax=max.
% c - A three-element RGB vector, or one of the MATLAB
% predefined names, specifying the plot color.
%
% Output arguments
% h - returns the handle of the scattergroup
% object created.
%
% Examples:
% >> ineqplot('x.^2+y.^2<10',[-5 5], 'r');
% >> h = ineqplot('y<x+3',[0 10 -5 5]);
% >> set(h,'MarkerFaceColor','r'); % Change color
%
%
% $ Author: Jorge De Los Santos $
% $ Version: 0.1.0 (initial version) $
%
% Deafault color
%Pequelas modificaciones: Rafael Mtz
if nargin<3, c='b'; end; % blue default
% Length of R vector
if length(R)==4
xmin = R(1); xmax = R(2);
ymin = R(3); ymax = R(4);
elseif length(R)==2
xmin = R(1); xmax = R(2);
ymin = R(1); ymax = R(2);
end
% hold
set(gca,'NextPlot','add');
% Limits
axis([xmin xmax ymin ymax]);
% Number of points (Change N value for more resolution)
N = 150;
dx=(xmax-xmin)/N; %
dy=(ymax-ymin)/N;
[x,y]=meshgrid(xmin:dx:xmax, ymin:dy:ymax);
% Eval condition
idx = find(~eval(I));
x(idx) = NaN; %#ok
h = plot(x(:),y(:),c,...
'Marker','o',...
'MarkerSize',1);
g = gca;
g.XAxisLocation = 'origin';
g.YAxisLocation = 'origin';
g.Box = 'off';
end