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.