Resumen
En esta publicación, comparamos la ejecución de un árbol de decisiones en Python con la de JMP y demostramos cómo crear un árbol de decisiones personalizado en JMP aplicando criterios matemáticos para determinar en qué parámetro se debe dividir cada rama. Este nivel de personalización no está disponible en Python, lo que hace que JMP sea esencial para crear modelos robustos en los que la división de parámetros no se deje al azar. Además, esta personalización le permite aprovechar su experiencia en la materia para justificar la selección del parámetro de división en cada rama, especialmente cuando varios candidatos muestran una capacidad similar para dividir los datos de manera eficaz.
Este ejemplo utiliza el conjunto de datos Wine, un ejemplo de clasificación que se encuentra disponible comúnmente en la biblioteca Scikit-learn. Contiene los resultados de un análisis químico de vinos cultivados en la misma región de Italia, pero derivados de tres cultivares diferentes (tipos de uva): etiquetados como 0, 1 y 2. En el conjunto de datos, se ejecutaron 13 técnicas de caracterización química en cada muestra, incluida la cantidad de flavonoides (un tipo de fenol), la intensidad del color del vino, el contenido de cenizas, el tono, el contenido de alcohol, etc.
¿El objetivo? Crear un modelo de clasificación de árboles de decisión para identificar el origen del vino con la menor cantidad posible de pruebas de caracterización y las más económicas.
Usando Python
Primero, veamos qué obtenemos al crear un modelo de árbol de decisión en Python. (El script está adjunto a esta publicación). El modelo resultante se puede graficar con matplot lib, como se muestra a continuación. El primer modelo clasifica según la intensidad del color, la prolina, el contenido de cenizas, los flavonoides y el contenido de alcohol.

A menos que la semilla aleatoria se establezca en un valor determinado, el árbol se verá diferente con cada nueva ejecución, como se ve a continuación. Si bien esto es lo esperado, no es práctico, ya que es posible que desee elegir el mejor conjunto de pruebas de caracterización que sean rápidas o económicas de ejecutar. En este ejemplo, no hay forma de controlar la característica en la que se produce la división o en qué valor.
|
Estado aleatorio = 2
|
Estado aleatorio = 14
|
Estado aleatorio = 24
|
|
|
|
|
Pruebas necesarias: intensidad del color, prolina, contenido de alcohol, flavonoides.
|
Pruebas necesarias: intensidad del color, prolina, ceniza, alcalinidad de la ceniza, ácido málico, contenido de alcohol, flavonoides.
|
Pruebas necesarias: intensidad del color, prolina, od280/od315, flavonoides, alcalinidad de la ceniza.
|
Usando JMP
Veamos si JMP puede hacer un mejor trabajo al seleccionar pruebas de caracterización.
Al ejecutar la plataforma Decision Tree en JMP, vaya a Analizar > Modelado predictivo > Partición. Establezca la porción de validación en 0,3 y marque la casilla Informative Missing y Ordinal Restricts Order.

El informe tendrá un aspecto similar al siguiente. Haga clic en Ir.

Al hacer clic en Ir se genera este árbol de decisiones:

Al igual que en Python, rehacer el análisis crea otra estructura para el árbol de decisiones.
Entonces, ¿qué se puede hacer para crear un modelo menos aleatorio que se base en algunas preferencias sobre los métodos de caracterización utilizados? Vamos a anular las divisiones y elegir los parámetros nosotros mismos.
Primero, haremos clic en el botón Podar. Al hacer clic en Podar, puede retroceder un paso y eliminar una rama a la vez. A continuación, haga clic en la lista de Candidatos y ordene las características por su criterio de división G^2 o Logworth, lo que le permitirá analizar qué parámetros se encuentran en la parte superior de la lista.
A continuación puedes ver los diferentes candidatos para la división, con los flavonoides en la parte superior de la lista, seguidos de od280/od315, fenoles totales y prolina.

El valor G^2 nos indica que el modelo elegirá el flavonoide como criterio de división. Si hace clic en Dividir, la división de la rama se realizará utilizando el valor de flavonoides de 1,41.
A continuación, expanda la lista de candidatos en flavonoides < 1,41. La intensidad del color ahora se encuentra en la parte superior de la lista. Sin embargo, tal vez sea más fácil medir el tono en lugar de la intensidad del color; si es así, haga clic en el triángulo rojo y luego en Dividir específico. Luego puede elegir el parámetro para la división (en este caso, el tono) y hacer clic en Aceptar.

El nuevo árbol, que se muestra a continuación, indica que si el nivel de flavonoides es inferior a 1,41 y el tono es inferior a 0,906, hay una probabilidad de 0,98 de que el vino se haya elaborado a partir de la variedad n.º 2. Por otro lado, cuando el tono es superior a 0,906, lo más probable es que proceda de la uva tipo 1. Cuando el nivel de flavonoides es superior a 1,41, hay una probabilidad de casi 50-50 de que la variedad sea 0 o 1. Así que, sigamos con la división.

En el caso de los flavonoides >=1,41, observe los candidatos y sus niveles de G^2. El alcohol y la prolina tienen un valor de G^2 similar. Dado que es más fácil comprobar el alcohol, haga la división en alcohol. Esto revela que hay un 91 % de posibilidades de que el vino provenga de la uva tipo 0 si el contenido de alcohol es superior a 13,5.

El modelo de árbol de decisión final creado se muestra a continuación. Ahora necesitamos menos pruebas de caracterización para identificar el tipo de uva y las pruebas elegidas son más fáciles de realizar sin tener que adoptar un enfoque de caja negra para elegir estos parámetros. Las reglas de decisión se pueden guardar y compartir fácilmente con otros.
