Árboles de Decisión Regresión con Scikit Learn

Scikit Learn es una de las más grandes librerías de Machine Learning con la que cuenta Python, razón por la cual veremos cómo se puede usar esta librería para implementar este algoritmo.

De igual forma en una anterior entrada te explique la teoría sobre los Árboles de Decisión Regresión, por lo que ya cuentas con una base sobre este algoritmo.

Entonces empecemos con la explicación, al igual que con los vectores de soporte Scikit Learn cuenta con un modulo en donde se incluye todo lo referente al algoritmo de Arboles de Decisión, por lo que para implementarlo deberás primero definir este modulo sklearn.tree. Posteriormente deberás importar la clase que en este caso será DecisionTreeRegressor.

Arboles-de-Decisión-Regresión-Scikit-Learn-1

Realizado esto ya podemos construir un modelo utilizando este algoritmo, igual que en los anteriores casos deberás crear los parámetros “x” y “y” y llamar al método fit() para realizar el entrenamiento y posteriormente la instrucción predict() para realizar una predicción.

Arboles-de-Decisión-Regresión-Scikit-Learn-2

Pero enfoquémonos acá en ver las configuraciones que ofrece el algoritmo DecisionTreeRegressor para mejorar el modelo a construir. Recuerda que toda esta información la puedes obtener con más detalle en la página web de esta instrucción, acá solamente voy a explicar la configuración más importante y la que debes considerar al momento de configurar el modelo.

Arboles-de-Decisión-Regresión-Scikit-Learn-3

Comencemos con “criterion”, se acuerdan cuando les explique en la teoría de este algoritmo que las divisiones que se le hace a la data para crear las ramas del árbol no se hacía al azar sino que se aplicaba la suma de cuadrados residual pero que acá era computacionalmente muy costosa, bueno Scikit Learn utiliza la media del error cuadrado o “mse” por sus siglas en inglés para implementar la separación de los datos.

Por defecto se utiliza está y es la única disponible, para la versión de Scikit Learn 0.18 se cuenta adicionalmente con el criterio de error absoluto promedio (MAE), pero puedes trabajar con la media del error cuadrado sin ningún problema.

La siguiente configuración que tenemos es “splitter”, que es la estrategia utilizada para la división en cada nodo, en esta caso se cuenta con dos opciones “best” que sería la mejor división, y “random” que elige de manera aleatoria la separación. Por defecto se encuentra seleccionada la opción “best” que por supuesto es la mejor opción.

Otro parametro que puedes modificar es “max_depth”, que se refiere la profundidad máxima del arbol. Se acuerdan que cuando explicamos en la teoría te hable que para evitar el sobreajuste a los datos lo mejor es podar el árbol, bueno precisamente acá podrás seleccionar la profundidad del mismo. Si no se coloca ningún valor entonces el algoritmo selecciona de manera automática los nodos de manera que los expande hasta que todas las hojas estén puras o hasta que todas las hojas contengan menos datos. Si hacemos esto es muy probable que el algoritmo caiga en sobreajuste, por lo que mi recomendación acá es variar el valor y ver el que mejor se adapte.

Con estos parametros puedes desarrollar un buen modelo utilizando el algoritmo de Árbol de Decisión Regresión. Este algoritmo cuenta con otros parametros que pueden ser modificados pero a medida que ganes más experiencia en el desarrollo de proyectos de Machine Learning podrás implementarlos en tus proyectos.

Realizado todo esto solamente falta evaluar el rendimiento del algoritmo, este paso es particularmente importante para comparar qué tan bien funcionan diferentes algoritmos en un conjunto de datos particular. Para este caso utilizamos la instrucción “score” junto con los datos de pruebas, la misma nos devuelve la estadística R al cuadrado.

En resumen, los comandos a utilizar para implementar un algoritmo de Arboles de Decisión Regresión serían los siguientes:

Arboles-de-Decisión-Regresión-Scikit-Learn-4

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *