Boletín Práctica 4 - UPV Universitat Politècnica de València

Anuncio
Práctica 4 de Minería de Datos
Combinación de modelos y costes en
Curso de Postgrado
Minería de Datos
Máster y Postgrado del DSIC
Universitat Politècnica de València
José Hernández Orallo. ([email protected]). Diciembre 2006
Índice
1.
Combinación Modelos .................................................................................................................................... 2
1.1
Boosting. ................................................................................................................................................. 7
2. Matrices de coste y confusión. ...................................................................................................................... 10
En esta práctica vamos a ver cómo combinar modelos, y como analizarlos con matrices de costes,
fundamentalmente para modelos predictivos.
1. Combinación Modelos
Retoma la ruta del monks. Habías aplicado varios modelos: red neuronal y varios árboles de decisión
(C5.0, C&RT, ...). Ninguno de ellos (si se ponía el tipo de la clase a discreto) daba muy buenos
resultados. ¿Cómo combinarías los resultados de estos tres modelos para obtener un modelo más
potente? ¿Proporciona Clementine una solución directa para este problema?
No es difícil hacerlo aunque algo tedioso. Se trata de mezclar1 (con el nodo “Fundir”) el resultado
de los tres modelos. Como los ejemplos no tienen identificador, para que esta mezcla se realice
convenientemente, previamente deberás haber añadido un contador a los ejemplos, mediante un
nodo “Derivar” (colocado entre el nodo de lectura de datos del fichero y el nodo Tipo), como se
muestra en la siguiente figura:
Figura 1. Nodo Derivar que numera los ejemplos
Ahora, después de los modelos, puedes añadir ya el nodo “Fundir” con la siguiente configuración
1
También se puede hacer poniendo los tres modelos en cadena y poniendo al final un nodo Derivar, con el
mismo resultado. No obstante, gráficamente es más claro utilizar el nodo Fundir.
2
Figura 2. Nodo “Fundir” para combinar los modelos
Si miras (con un nodo tabla) los datos fusionados, verás que da un error, porque hay tres modelos
que tienen el mismo nombre para el campo predicho $R-field7. Por tanto, hemos de renombrar (con
sendos nodos filtro) las salidas del modelo Quest y del modelo Chaid, como sigue:
Figura 3. Renombrando los campos $ para el modelo Quest
Figura 4. Renombrando los campos $ para el modelo CHAID
3
Ahora ya podemos ver que se han juntado todos los 432 datos.
Figura 5. Datos después de la fusión.
Ahora, para facilitar la tarea, vamos a renombrar todos los atributos de los modelos con nombres más
cortos:
Figura 6. Renombrando los campos.
Ahora ya ponemos un nuevo nodo “Derivado” que calcule la media de los cinco, como sigue:
4
Figura 7. Nodo Derivar que calcula la media de los tres modelos
Si añadimos otro nodo Derivar para que nos convierta “combinat” en un valor entero 0 y 1, tenemos
un clasificador combinado.
Figura 8. Pasando de un número real a una clase 0 o 1
Para poder evaluar este nuevo clasificador combinado, haremos el truco de renombrar el campo
“CombinatClase” a un campo que pueda ser utilizado por el nodo “Análisis”. Por ejemplo, $C-field7:
Figura 9. Renombrado el campo de clase para poder realizar el Análisis.
5
Finalmente, con un nodo Análisis deberíamos obtener lo siguiente:
Figura 10. Resultado del modelo combinado.
La ruta propuesta para esta actividad se encuentra a continuación. Se recomienda intentarlo al menos
10 minutos antes de echar mano del mismo.
Figura 11. Ruta del Monks1 con combinación de modelos.
EJERCICIOS PROPUESTOS:
ƒ
Comprueba si se ha mejorado con la combinación de modelos. ¿Es mejor que cada uno de
los cinco anteriores?
ƒ
¿Se te ocurre alguna manera diferente de combinarlos para que todavía aumente más la
precisión?
ƒ
¿Has pensado en considerar la confianza $CC de cada clasificador al hacer la ponderación?
Hazlo. ¿Se mejoran así los resultados?
Los nodos de derivación que deberás utilizar para hacer una combinación ponderada son los
siguientes.
6
Figura 12. Fórmula para la combinación ponderada.
Figura 13. En este caso los negativos son 0 y los positivos 1.
1.1 Boosting.
Existen otros procedimientos más elaborados de combinación que se basan en entrenar con la
misma técnica reiteradas veces pero variando los datos de entrenamiento. Una de estas técnicas se
denomina “boosting” y la tenemos incluida en el nodo C5.0 del Clementine (denominada “aumento”),
donde se encuentra completamente automatizada.
Continuemos con la ruta anterior y añadamos un nodo C5.0 que conectaremos a la parte de
entrenamiento. Editaremos este nodo de la siguiente forma:
7
Figura 14. Activando el “boosting” en el C5.0.
Como ves, se activa el “Utilizar aumento” y también cambiamos el nombre del modelo para no
confundirlo con el C5.0 sin aumento. El número de ensayos lo dejamos por defecto, a 10, con lo que
generará 10 variantes del modelo. Ahora ejecutamos para obtener el modelo y lo copiamos a la zona
de trabajo y pasamos a evaluarlo en la parte de test, como se ve en la siguiente figura:
Figura 15. Ruta con el nodo de boosting.
Si vemos el resultado de este modelo con el nodo de “Análisis”, la sorpresa es gratificante:
8
Figura 16. Resultado del modelo con boosting.
Es mucho mejor que el C5.0 sin boosting, mejor que cualquier otro método simple e incluso bastante
mejor que el modelo combinado que hemos realizado anteriormente.
Técnicas como boosting u otras similares (bagging) han proporcionado uno de los mayores
incrementos en precisión en las técnicas de modelización en los últimos años y es conveniente
utilizarlo siempre que sea posible.
La desventaja, tanto de los modelos de combinación manuales (como el del apartado anterior) o
automáticos (como boosting), es que, en primer lugar, requiere más tiempo de generación (en el caso
de boosting con 10 ensayos unas 10 veces más), pero fundamentalmente que no generan un modelo
comprensible sino una combinación de varios.
Por ejemplo, en la siguiente figura, vemos que si intentamos visualizar el modelo obtenido, en
realidad tenemos 10 modelos, cada uno un árbol de decisión distinto. Cada uno de los árboles por
separado (por ejemplo, el que se ve en la Figura, que el Clementine llama Regla 6) consigue un
escaso 68,52, lejos del 86,11% que consigue el boosting,
Figura 17. Viendo los 10 árboles generados por boosting.
EJERCICIOS PROPUESTOS:
ƒ
Incluye el nodo de diamante modelo con boosting que acabamos de generar en la
combinación manual junto a los otros cinco modelos. ¿Mejora la combinación ponderada?
¿Mejora el modelo conjunto al del boosting por sí solo? ¿qué conclusión sacas de esto?
ƒ
Prueba el boosting con otro número de ensayos. ¿En qué número se suele encontrar el
máximo?
9
2. Matrices de coste y confusión.
Las matrices de coste y de confusión nos permiten elegir el modelo que minimice costes. No siempre
el modelo que minimiza el error es el más conveniente, simplemente porque hay clases más caras
que otras o hay errores más caros que otros. Por ejemplo, no es igual de grave (costoso) predecir
que un correo no es spam cuando sí lo es que predecir lo contrario, es decir, que un correo es spam
cuando no lo es. Ambos son errores que hay que evitar pero uno es mucho más grave y costoso que
el otro. Este mismo efecto se observa claramente en las campañas de mailings, en las que la
propaganda tiene un coste fijo y sólo se obtienen beneficios si el cliente “pica” ante la oferta. También
es útil en decisiones de negocio, donde para cada caso haya que optar por dos o más acciones para
las que se pueda estimar un coste real o aproximado.
A continuación vamos a ver cómo trabajar con estas matrices para el caso de los medicamentos.
Imagina que tienes la siguiente matriz de costes para el problema de los medicamentos:
Adm. Correctamente
Adm. Incorrectamente
DrugA
100€
450€
DrugB
200€
3250€
DrugC
550€
1760€
DrugX
100€
400€
DrugY
150€
400€
Esta matriz incluye, en el caso de administración incorrecta, los costes medios del resto de
medicamentos, porque además del propio coste de probar un medicamento no efectivo habrá que
seguir probando con el resto de medicamentos.
Esto quiere decir que el mejor modelo no tiene por qué ser el más barato (Nótese que DrugB y
DrugC tienen unos costes importantes para paliar efectos secundarios cuando se administran
incorrectamente). Queremos, por tanto, ver cómo obtener un modelo que minimice costes.
Retoma la ruta de este problema en el que realizabas la partición 1.700 – 500. Elimina el nodo que
generaba el atributo derivado Na_to_K. Haz la partición ahora de 1.100 – 1.100 aproximadamente
(con un nodo partición al 50%). Genera todos los modelos y evalúalos con los datos de test. La ruta
será como sigue:
Figura 18. Ruta para evaluar los costes.
Verás que la precisión ahora ya no es del 100%. Ahora vamos a ver la matriz de confusión. Para ello
modifica los nodos “Análisis” de los tres modelos para activar la matriz de confusión/coincidencia,
como se muestra en la siguiente figura:
10
Figura 19. Nodo Análisis. Activando las matrices de coincidencia.
El resultado es similar al de la siguiente figura (para el primer clasificador):
Figura 20. Matriz de coincidencia para el modelo C5.0
Nota: tus datos pueden diferir según la partición aleatoria realizada durante el entrenamiento, por lo
que los comentarios a continuación se refieren a los resultados de la figura, que pueden diferir
ligeramente con los tuyos.
Desgraciadamente, el Clementine no permite aplicar a esa matriz de coincidencias una matriz de
costes directamente. Para ello vamos a usar el Excel.
Ahora si vais a “Edición” y marcáis “copiar todo”, tendréis el texto (incluyendo la matriz) y lo
copiamos en el bloc de notas, como se ve en la siguiente figura.
11
Figura 21. Grabando la matriz de coincidencia en un fichero de texto.
Realiza lo mismo con los otros dos modelos, llamándolos a los tres: matrizC50.txt, matrizRN.txt,
matrizCRT.txt.
Ahora, para cada modelo, edita los ficheros y deja sólo el texto de la matriz, como se muestra en
la siguiente figura:
Figura 22. Dejando sólo la matriz de coincidencia en el fichero de texto.
Ahora arranca el Excel e importa el fichero cada fichero, p.ej. “matrizc50.txt”:
Figura 23. Abriendo el fichero de texto desde el Excel.
12
Figura 24. Importando el fichero de texto.
Después dale a siguiente a todo... y voilà, ya tienes los datos en el Excel:
Figura 25. Matriz importada en el Excel.
Ahora realiza lo mismo para los otros dos ficheros. Ahora crea una nueva hoja de cálculo e introduce
la matriz de costes, como se muestra en la siguiente figura:
Figura 26. Matriz de costes en el Excel.
Ahora copia en esa hoja de cálculo la matriz de confusión/coincidencia del C5.0.
Luego multiplica la matriz de costes por la de confusión, como se muestra en la siguiente figura:
13
Figura 27. Multiplicando las matrices de costes y confusión en Excel.
Realiza lo mismo con las otras dos matrices de confusión. Además, para cada matriz producto, suma
todas sus filas y columnas, para calcular el coste total. Ahora mira qué matriz resultante es mejor. El
resultado ha de ser el que se muestra en la siguiente figura:
NOTA: como hemos dicho anteriormente, tus datos pueden diferir según la partición aleatoria
realizada durante el entrenamiento, por lo que los comentarios a continuación se refieren a los
resultados de la figura, que pueden diferir ligeramente con los tuyos.
Figura 28. Matrices resultantes y costes globales de cada modelo.
Como vemos, el primer modelo, aunque tenía menos precisión, es más barato, por lo que, en el caso
de que se trate de tratamientos para enfermedades no graves, se podría optar por el primer modelo
en vez del segundo.
EJERCICIOS PROPUESTOS:
ƒ
Por lo que acabamos de realizar: ¿proporciona Clementine una solución para automatizar
este problema? ¿Se te ocurre alguna manera para no tener que salir del Clementine?
ƒ
El C5.0 y el C&RT incluyen la definición de una matriz de coste durante el entrenamiento (no
durante el análisis) en la pestaña de “costes”. Introduce la matriz de coste y entrena los dos
modelos con costes. Evalúalos en términos de precisión y en términos de coste. ¿Qué
observas?
14
Descargar