Creando increíbles visualizaciones de árbol de decisiones con dtreeviz.

Creating amazing decision tree visualizations with dtreeviz.

Cómo visualizar modelos de árbol de decisión con esta útil biblioteca

Imagen del autor, creada utilizando dtreeviz.

En cuanto a la explicabilidad del modelo, los árboles de decisión son algunos de los modelos más intuitivos y explicables. Cada modelo de árbol de decisión puede explicarse como un conjunto de reglas interpretables por humanos. Ser capaz de visualizar modelos de árbol de decisión es importante para la explicabilidad del modelo y puede ayudar a los interesados y los gerentes empresariales a confiar en estos modelos.

Afortunadamente, podemos visualizar e interpretar fácilmente los árboles de decisión con la biblioteca dtreeviz. En este artículo, demostraré cómo puede usar dtreeviz para visualizar modelos basados en árboles para la regresión y la clasificación.

Instalación de dtreeviz

Puede instalar fácilmente dtreeviz con pip usando el siguiente comando:

pip install dtreeviz

Para obtener una lista detallada de dependencias y bibliotecas adicionales que puedan necesitarse según su sistema operativo, consulte este repositorio de GitHub.

Visualización de árboles de regresión

En esta sección, entrenaremos un regresor de árbol de decisión en el conjunto de datos de diabetes. Tenga en cuenta que puede encontrar todo el código de este tutorial en este repositorio de GitHub. Tenga en cuenta que estoy usando Jupyter como mi entorno para ejecutar este código Python. Puede encontrar todo el código que he escrito para este tutorial en este repositorio de Github.

Importar Bibliotecas

En el bloque de código a continuación, simplemente importé algunas bibliotecas comunes, incluidos los módulos DecisionTree de scikit-learn y dtreeviz.

import numpy as npimport pandas as pdfrom sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressorimport dtreeviz

Leer datos

El conjunto de datos de diabetes está disponible en scikit-learn, por lo que podemos usar el siguiente código para importar el conjunto de datos y almacenar las características y los valores objetivo en matrices numpy llamadas X e y.

from sklearn.datasets import load_diabetesdiabetes_data = load_diabetes()X = pd.DataFrame(data = diabetes_data['data'], columns=diabetes_data['feature_names'])y = diabetes_data['target']

Entrenamiento del modelo de árbol de decisión

Con el fin de hacer que el árbol sea fácil de visualizar, podemos limitar la profundidad máxima del árbol de decisión y entrenarlo en los datos de la siguiente manera.

dtree_reg = DecisionTreeRegressor(max_depth=3)dtree_reg.fit(X, y)

Visualización del árbol

Una de las características clave de dtreeviz es la capacidad de visualizar modelos de árbol de decisión. Usando el código a continuación, podemos crear una visualización de árbol de decisión genial que también representa visualmente los límites de decisión en cada nodo.

viz_model = dtreeviz.model(dtree_reg,                           X_train=X, y_train=y,                           feature_names=list(X.columns),                           target_name='diabetes')viz_model.view()
Visualización del árbol de regresión de diabetes. Imagen creada con dtreeviz por el autor.

Observe cómo la visualización anterior también nos da los límites de decisión y el espacio de características en cada nodo, así como las salidas de regresión y el tamaño de muestra en cada hoja.

Visualización de las distribuciones de hojas

Otra función útil que proporciona dtreeviz es la capacidad de visualizar las distribuciones de hojas. Los nodos hoja de un árbol de decisión contienen los valores reales que un árbol de decisión predecirá según cada conjunto de condiciones. Usando la función rtree_leaf_distributions, podemos crear esta visualización para nuestro árbol de regresión.

import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D%matplotlib inlineviz_model.rtree_leaf_distributions()

Basándonos en la visualización anterior, podemos ver que el árbol de decisión puede predecir 268.9, 208.6, 176.9, 137.7, 154.7, 274.0, 83.4, o 108.8 para la variable objetivo llamada diabetes. Los puntos dispersos horizontalmente representan la distribución de valores para la variable objetivo diabetes y la pequeña línea negra representa el valor promedio que se utiliza para las predicciones en ese nodo hoja. Idealmente, las distribuciones de las hojas deberían tener una baja varianza para que podamos tener más confianza en los valores promedio utilizados para las predicciones.

Visualizando los Tamaños de las Hojas

También podemos visualizar los tamaños de las hojas, o el número de muestras en cada nodo hoja, como se demuestra con la función de abajo.

viz_model.leaf_sizes()

Basándonos en el gráfico anterior, podemos ver el número de muestras en cada hoja. Esta visualización es una buena herramienta para evaluar cuán confiados podemos estar en las predicciones del árbol de regresión.

Visualizando Árboles de Clasificación

También podemos visualizar árboles de clasificación con dtreeviz y las visualizaciones se ven ligeramente diferentes a las creadas para árboles de regresión. Para esta sección, entrenaremos y visualizaremos un modelo de decisión utilizando el conjunto de datos de Cáncer de Mama de Wisconsin.

Leer Datos

El conjunto de datos de Cáncer de Mama de Wisconsin está disponible en scikit-learn, por lo que podemos cargarlo con el código de abajo.

from sklearn.datasets import load_breast_cancercancer_data = load_breast_cancer()X = pd.DataFrame(data = cancer_data['data'], columns=cancer_data['feature_names'])y = cancer_data['target']

Entrenando un Modelo de Árbol de Decisión

Como de costumbre, entrenar un modelo de árbol de decisión con scikit-learn es sencillo. También podemos poner una restricción en la profundidad máxima del árbol para facilitar la visualización del árbol de decisión.

dtree_clf = DecisionTreeClassifier(max_depth=4)dtree_clf.fit(X, y)

Visualizando el Árbol de Decisión

Podemos usar la misma función del árbol de regresión para visualizar el árbol de clasificación. Sin embargo, la visualización se verá ligeramente diferente.

viz_model = dtreeviz.model(dtree_clf,                           X_train=X, y_train=y,                           feature_names=list(X.columns),                           target_name='cancer')viz_model.view()
Árbol de decisión de clasificación de cáncer.

Observe cómo la visualización del árbol de clasificación de arriba es diferente de la visualización del árbol de regresión en la sección anterior. En lugar de ver un gráfico de dispersión en cada nodo con la característica seleccionada y el objetivo, vemos histogramas coloreados que muestran la distribución de clases en cada nodo.

Visualizando las Distribuciones de las Hojas

También podemos visualizar las distribuciones de clases para las hojas utilizando la misma función para visualizar las distribuciones de las hojas para el árbol de regresión.

viz_model.ctree_leaf_distributions()
Gráfico de distribución de hojas para el árbol de clasificación. Imagen creada por el autor usando dtreeviz.

Cada hoja tiene un gráfico de barras apiladas asociado que presenta la distribución de etiquetas de clase para las muestras en esa hoja. La mayoría de las hojas tienen muestras que pertenecen abrumadoramente a una clase, lo cual es una buena señal y nos ayuda a tener confianza en las predicciones del modelo.

Visualización del Espacio de Características

También podemos visualizar el espacio de características del clasificador utilizando la siguiente función.

viz_model.ctree_feature_space()

El gráfico del espacio de características anterior nos da la precisión de entrenamiento del árbol de clasificación, así como un gráfico de dispersión de dos características y un límite de decisión lineal que se puede utilizar para separar las dos clases.

Resumen

Cuando se trata de visualizar modelos basados en árboles, dtreeviz es una potente biblioteca que proporciona varias funciones de visualización útiles. Solo he cubierto algunas de las funciones proporcionadas en esta biblioteca y hay muchas características adicionales que puede leer en el repositorio de dtreeviz en GitHub. Como de costumbre, puede encontrar todo el código de este artículo en mi GitHub.

Únete a mi lista de correo

Únete a mi lista de correo para recibir actualizaciones sobre mi contenido de ciencia de datos. ¡También obtendrás mi Guía Paso a Paso para Resolver Problemas de Aprendizaje Automático gratis cuando te registres! También puedes seguirme en Twitter para recibir actualizaciones de contenido.

Y mientras estás ahí, considera unirte a la comunidad de Zepes para leer artículos de miles de otros escritores también.

Fuentes

  1. Terence Parr, dtreeviz: Visualización de Árboles de Decisión, (2023), GitHub.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

Tienes que ajustar esas dimensiones DreamEditor es un modelo de IA que edita escenas en 3D utilizando indicaciones de texto.

El dominio de visión por computadora 3D se ha inundado de NeRF en los últimos años. Surgieron como una técnica innova...

Inteligencia Artificial

Un legado poderoso la madre del investigador alimentó su pasión por la fusión nuclear

Nota del editor: Esta es parte de una serie que perfila a investigadores que avanzan en la ciencia con computación de...

Inteligencia Artificial

Investigadores de China presentan un conjunto de datos de múltiples vistas a gran escala y del mundo real llamado 'FreeMan

Estimar la estructura 3D del cuerpo humano a partir de escenas del mundo real es una tarea desafiante con implicacion...

Inteligencia Artificial

Investigadores de Microsoft proponen DeepSpeed-VisualChat Un salto adelante en el entrenamiento de modelos de lenguaje multi-modal escalables.

Los modelos de lenguaje grandes son sistemas de inteligencia artificial sofisticados creados para comprender y produc...

Inteligencia Artificial

Investigadores encuentran vulnerabilidades en las implementaciones de Windows Hello

Los investigadores encontraron vulnerabilidades en las implementaciones de Windows Hello, la función de inicio de ses...