Ejemplo Aprendizaje Automatizado

Anuncio
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
Descargar