La representación de árboles de decisión es un tema del que ya se ha publicado con antelación en el blog. En su momento de ha visto los pasos necesarios para generar representaciones gráficas y de texto con las librerías PyDotPlus y Scikit-Learn. Aunque también existen otras librerías como dtreeviz, la que veremos hoy. Una librería con la que es posible representar los criterios de selección en árboles de decisión de una forma clara, por lo que puede ser una excelente opción para la representación de estos modelos.
Instalación de dtreeviz
La instalación de dtreeviz es un poco más complicada que otros paquetes de Python, porque depende de Graphviz, un conjunto de herramientas para la creación de diagramas que debe ser instalado por separado en el ordenador. Así que en primer lugar es necesario comprobar si tenemos instalado o no este conjunto de herramientas en nuestro ordenador, algo que se puede hacer simplemente escribiendo dot -v
en la terminal. En el caso de que esté instalado y en el path nos aparecerá por pantalla la versión instalada, en caso contrario no indicará que el comando no existe.
Si Graphviz no se encuentra instalado, deberemos ir a la zona de descargas del proyecto y seguir las instrucciones para nuestro sistema operativo. Una vez instalado Graphviz, podremos instalar dtreeviz desde PyPI usando para ello el comando
pip install dtreeviz
Por lo que ya podremos usar este paquete para la representación de árboles de decisión.
Representar un árbol de decisión con dtreeviz
Para ver dtreeviz en funcionamiento se puede usar el mismo ejemplo empleado para explicar las capacidades gráficas de Scikit-Learn respecto a los árboles de decisión. Un árbol basado en los datos de Iris que se puede crear y representar con el siguiente código.
Con lo que Scikit-Learn generará la siguiente gráfica.
Ahora, una vez creado el árbol, se pueden ver los pasos para crear la representación del árbol con dtreeviz. Para lo que primero hay que importar la función dtreeviz
. Esta función requiere el árbol, los datos de entrenamiento y, opcionalmente, se le puede pasar también el nombre de las características y las clases para incluirlas en la gráfica. Creando la función un objeto que se puede llamar para visualizar, tal como se muestra a continuación.
En esta gráfica se puede ver un histograma de las clases para la característica empleada por el árbol de decisión para clasificar. Mostrando la posición del punto de corte en la gráfica. Además, en los nodos finales del árbol se ve una gráfica de tarta con la proporción de las clases. Una forma de representar los árboles que puede ser bastante útil a la hora de explicar cómo se toman las decisiones.
La gráfica que se obtiene es un SVG, el cual se puede exportar a un archivo mediante el método save()
. Esto genera un archivo CSV que posteriormente se puede convertir en otro formato. Así, para guardar la imagen en un archivo se debería escribir algo como lo siguiente.
viz.save("dtreeviz-iris.svg")
Conclusiones
En esta ocasión se ha visto una herramienta para representar los criterios de selección en árboles de decisión de una forma gráfica. Facilitando así explicar el motivo por el qué los modelos seleccionan una clase u otra en cada momento. Una forma de representar estos modelos que se agrega a las ya vista con PyDotPlus y Scikit-Learn.