Maracaibo, 27 de Enero del 2010 Ejercicio de Clasificacin Supervisada usando MATLAB Ejemplo clsico de clasificacin: Flor Iris. El set de datos contiene 150 instancias con 4 atributos identificados y su respectiva clase. Los atributos son (cm): Longitud del spalo Ancho del spalo Longitud del ptalo Ancho del ptalo La clase puede ser: Iris Setosa Iris Versicolour Iris Virginica EN 2010 Ejercicio de Clasificacin Supervisada usando MATLAB Fases de creacin del clasificador (usando una Red Neuronal): Especificacin Inicializacin Entrenamiento Prueba EN 2010 Ejercicio de Clasificacin Supervisada usando MATLAB Especificacin de la Red Neuronal En esta etapa se define la estructura que tendr la red, esto es el nmero 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 clculo de bias y pesos 'mse',... %Objetivo a minimizar {'mapstd'},... %Operaciones de pre-procesamiento { },... %Operaciones de post-procesamiento 'divideind'); %Divisin de datos en conjuntos
logsig indica el uso de la funcin Sigmoide EN 2010 Ejercicio de Clasificacin Supervisada usando MATLAB Seleccin del nmero 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 generalizacin, se sugiere que la cantidad de incgnitas sea menor a 0.5x90 = 45 Si se toma N = 10, se tendran un sobreajuste segn se muestra a continuacin: (4+1)x10 + (10+1)x3 = 83 N.ent N.sal Luego N = 5 es un nmero de neuronas adecuado (4+1)x5 + (5+1)x3 = 43 N.ent N.sal
EN 2010 Ejercicio de Clasificacin Supervisada usando MATLAB Inicializacin de la Red Neuronal La inicializacin consiste en asignar valores iniciales a los pesos. Para este ejercicio se asignarn 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 funcin que inicia valores aleatorios
EN 2010 Ejercicio de Clasificacin 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 nmero de epoch, un error mnimo, o segn el error sobre un conjunto de validacin: 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 cdigo de la clase para cada dato, y VAL es una estructura con los datos de validacin: VAL.P y VAL.T EN 2010 Ejercicio de Clasificacin 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 informacin de especificacin, inicializacin entrenamiento y los parmetros propios de la red (pesos/bias) Los pesos de la capa de entrada estn 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 estn en miRed.LW{i,i-1} con i = 2, 3, , #capOcultas, estos pesos estn 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 Clasificacin Supervisada usando MATLAB Prueba de la Red Neuronal La red entrenada se usa para clasificar un conjunto de prueba En MATLAB: