Aprendizaje Automatizado Caso de Estudio Problema a resolver (I) Problema a resolver (II) El problema consiste en clasificar como 'rojo' o 'azul' nuevos puntos pertenecientes a C(0, 1). Este problema se puede resolver mediante la utilización de fórmulas matemáticas. A partir de un conjunto de puntos ya clasificados, se generará un modelo para clasificar un nuevo conjunto. Selección del clasificador Recordamos los criterios: – – – – – – – – Capacidad de representación Legibilidad Tiempo de cómputo on-line. Tiempo de cómputo off-line. Ajuste de parámetros. Robustez ante el ruido. Sobreajuste. Minimización del error. Ajuste de parámetros Obtenemos árboles de decisión tomando conjuntos de entrenamiento de tamaños 300, 600 y 900 datos. Obtenemos redes neuronales tomando 600, 900, 1200 y 1500 datos y variando la cantidad de neuronas en la capa intermedia en 2, 6 y 10. Conjuntos de datos Contamos con el archivo 'espirales.mat', que contiene 1500 puntos ya clasificados. Cargamos al Workspace de Matlab: >> load('espirales') Árboles de Decisión >> X1 = espirales(1:2, 1:300)'; >> y1 = espirales(3, 1:300)'; >> t1 = classregtree(X1, y1, 'method','classification'); t1 es un árbol de decisión que clasifica puntos en las espirales rojas o azules ¿Con qué error? >> X1test = espirales(1:2, 301:550)'; >> y1result = eval(t1, X1test); >> gscatter(X1test(:,1), X1test(:,2), y1result, 'rb', 'oo') Árboles de Decisión Árboles de decisión Nos interesa la proporción de los clasificados correctamente: archivo .m y1correctos = espirales(3, 301:550)'; y1resultDouble = double(cell2mat(y1result)) - 48; N = length(y1result); propCorrectos = 0; for i = 1:N if (y1correctos(i) == y1resultDouble(i)) propCorrectos = propCorrectos + 1; end; end; propCorrectos = 0.86 propCorrectos = propCorrectos / N; Árboles de Decisión La función test computa el costo del árbol que es 1 - propCorrectos. ¿Se puede mejorar esa proporción de clasificados correctamente? – El conjunto de entrenamiento fue elegido arbitrariamente. De forma análoga estudiamos los demás conjuntos de datos de tamaños 600 y 900. Se vuelcan todas las operaciones a un script. Árboles de Decisión Resultados: costo de los distintos árboles generados. Tamaño del conjunto conjunto 1 conjunto 2 conjunto 3 300 0.1326 0.1041 0.1046 600 0.1502 0.1046 0.1017 mínimo 900 0.0783 0.1060 0.0396 Redes Neuronales X = espirales(1:2, 1:600); target = targetEspirales(:, 1:600); Xtest = espirales(1:2, 601:850); % 600 datos y 2 neuronas en la capa intermedia net = newpr(X, target, 2); [net, tr] = train(net, X, target); y = sim(net, Xtest); error = min(tr.vperf); Redes Neuronales Resultados Neuronas capa oculta 600 2 6 10 mínimo 900 1200 1500 0.2311 0.1837 0.1793 0.1813 0.0915 0.1579 0.7220 0.0747 0.0210 0.0477 0.3370 0.0401 Análisis Ambos modelos se comportaron de forma similar ante: – – La capacidad de representación. El tiempo de cómputo on-line. Los árboles obtenidos soportan cierta legibilidad. El tiempo de cómputo off-line fue mucho menor en los árboles de decisión. Con redes neuronales hay más opciones para el ajuste de parámetros. El menor error se logró con las redes neuronales. Bibliografía Curso de doctorado "Introducción al Aprendizaje Automatizado" (U.N.R.) http://sites.google.com/site/aprendizajeautomatizadounr/ Curso de doctorado "Aprendizaje Automatizado y Data Mining" Grupo de Ingeniería de Sistemas y Automática (Universidad Miguel Hernández) http://isa.umh.es/asignaturas/aprendizaje/index.html