You are on page 1of 9

Ejercicio de Clasificación

Supervisada usando MATLAB
Maracaibo, 27 de Enero del 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Ejemplo clásico de clasificación: Flor Iris.
 El set de datos contiene 150 instancias con 4 atributos
identificados y su respectiva clase.
 Los atributos son (cm):
 Longitud del sépalo
 Ancho del sépalo
 Longitud del pétalo
 Ancho del pétalo
 La clase puede ser:
 Iris Setosa
 Iris Versicolour
 Iris Virginica
EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Fases de creación del clasificador
(usando una Red Neuronal):
 Especificación
 Inicialización
 Entrenamiento
 Prueba
EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Especificación de la Red Neuronal
 En esta etapa se define la estructura que tendrá la red, esto es
el número de neuronas en cada capa
 En MATLAB:
 miRed =newff(Atributos, Clases, ...
Nhid, ... %Neuronas en la capa oculta
{'logsig', 'purelin'},... %Funciones en las neuronas
'trainlm',... %Algoritmo entrenamiento
'learngdm',... %Algoritmo cálculo de bias y pesos
'mse',... %Objetivo a minimizar
{'mapstd'},... %Operaciones de pre-procesamiento
{ },... %Operaciones de post-procesamiento
'divideind'); %División de datos en conjuntos

‘logsig’ indica el uso de la función Sigmoide
EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Selección del número de neuronas de la capa
intermedia
 Se dispone de 150 observaciones pero se fraccionará el
conjunto en 60% ent, 20% val y 20% pru, por lo que se
dispone de 90 observaciones para entrenamiento
 Para una mejor generalización, se sugiere que la
cantidad de incógnitas sea menor a 0.5x90 = 45
 Si se toma N = 10, se tendrían un sobreajuste según se
muestra a continuación:
 (4+1)x10 + (10+1)x3 = 83
N.ent N.sal
 Luego N = 5 es un número de neuronas adecuado
 (4+1)x5 + (5+1)x3 = 43
N.ent N.sal

EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Inicialización de la Red Neuronal
 La inicialización consiste en asignar valores iniciales a los
pesos. Para este ejercicio se asignarán valores aleatorios.
 En MATLAB, esto se lleva a cabo de la siguiente forma:
miRed.initFcn = 'initlay';
miRed.layers{1}.initFcn = 'initwb';
miRed.layers{2}.initFcn = 'initwb';
miRed.inputWeights{1, 1}.initFcn = 'rands';
miRed.layerWeights{2, 1}.initFcn = 'rands';
miRed.biases{1}.initFcn = 'rands';
miRed.biases{2}.initFcn = 'rands';
miRed = init(miRed);

‘rands’ es la función que inicia valores aleatorios

EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Entrenamiento de la Red Neuronal
 Ajusta los pesos con el objetivo de reducir el error en los
datos de entrenamiento
 En MATLAB se pueden especificar como criterios de
parada un alcanzar número de epoch, un error mínimo, o
según el error sobre un conjunto de validación:
miRed.trainParam.epochs = 200;
miRed.trainParam.goal = 1e-2;
modRN.trainParam.showCommandLine = 0;
modRN.trainParam.showWindow = 0;
[miRed, tr, Y, E] = train(miRed, SRC’, TGT’);
 Donde P son los atributos de los datos de entrenamiento,
T el código de la clase para cada dato, y VAL es una
estructura con los datos de validación: VAL.P y VAL.T
EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Pesos y bias
 La red una vez entrenada la hemos almacenado en la variable
miRed, esta variable es una estructura con la información de
especificación, inicialización entrenamiento y los parámetros
propios de la red (pesos/bias)
 Los pesos de la capa de entrada están en miRed.IW{1} en
forma de matriz con tantas filas como neuronas tiene la capa
siguiente, y tantas columnas como neuronas tiene la capa de
entrada
 Los pesos de las capas intermedias están en miRed.LW{i,i-1}
con i = 2, 3, …, #capOcultas, estos pesos están almacenados
en forma de matriz con tantas filas como neuronas tenga la
capa siguiente y tantas columnas como neuronas tenga la
capa i
EN © 2010
Ejercicio de Clasificación
Supervisada usando MATLAB
 Prueba de la Red Neuronal
 La red entrenada se usa para clasificar un conjunto de
prueba
 En MATLAB:

[salEst] = sim(miRed, PRU.P);

EN © 2010