Download Aprendizaje Automatizado
Document related concepts
no text concepts found
Transcript
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.