Redes de competencia
Problema 16.1
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.
Problema 16.2
Solución:
p3 = [1/sym(sqrt(2)),1/sym(sqrt(2))]';
w2 = [-2/sym(sqrt(5)) 1/sym(sqrt(5))]';
w3 = [-1/sym(sqrt(5)) 2/sym(sqrt(5))]';
W = [w1';w2';w3']
W =

W*p1
ans =

a = compet(W*p1)
a =

w2 = w2 + alpha * (p1-w2);
a = compet(W*p2)
a =

w3 = w3 + alpha * (p2-w3);
a = compet(W*p3)
a =

w3 = w3 + alpha * (p3-w3);
a = compet(W*p1)
a =

w2 = w2 + alpha * (p1-w2);
a = compet(W*p2)
a =

w3 = w3 + alpha * (p2-w3);
a = compet(W*p3)
a =

w3 = w3 + alpha * (p3-w3);
eval(W)
0 -1.0000
-0.9736 0.1118
0.4140 0.8103
Problema 16.3
Solución:
Se propone una solución gráfica
Problema 16.4
Solución:
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]';
plot3(W(:,1),W(:,2),W(:,3))
% 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
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
plot3(W(:,1),W(:,2),W(:,3))
Problema 16.5
Solución:
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
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
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
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
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
Problema 16.6
Solución:
De acuerdo a la geometria se tienen 3 clases y 9 sublaces tres para caa una
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
Problema 16.7
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
Competitive Classification
Competitive Learning
1-D Feature Maps
2-D Feature Maps
LVQ1
LVQ2
Referencias
El material se toma del libro de Martin Hagan et. al. enlace Programas
function h = ineqplot(I,R,c)
% Plotting inequalities, simple and easy.
% 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.
% h - returns the handle of the scattergroup
% >> 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) $
%Pequelas modificaciones: Rafael Mtz
if nargin<3, c='b'; end; % blue default
xmin = R(1); xmax = R(2);
ymin = R(3); ymax = R(4);
xmin = R(1); xmax = R(2);
ymin = R(1); ymax = R(2);
set(gca,'NextPlot','add');
axis([xmin xmax ymin ymax]);
% Number of points (Change N value for more resolution)
[x,y]=meshgrid(xmin:dx:xmax, ymin:dy:ymax);
g.XAxisLocation = 'origin';
g.YAxisLocation = 'origin';