Introducción a árboles de decisión

1

¿Qué son los árboles de decisión?

2

Tu primer árbol de decisión con scikit-learn

3

Análisis de datos para tu primer árbol de decisión

4

Entrenamiento y evaluación de árbol de decisión con scikit-learn

5

¿Cómo funcionan los árboles de decisión?

6

¿Cuándo usar árboles de decisión?

Quiz: Introducción a árboles de decisión

Proyecto práctico: árboles de decisión

7

Conociendo problema a resolver y dataset de clasificación

8

Análisis exploratorio de datos para árbol de decisión

9

Procesamiento de datos para el entrenamiento de árbol de decisión

10

Entrenamiento de modelo de clasificación con árbol de decisión

11

¿Cómo evaluar un modelo de árbol de decisión?

12

Evaluación de resultados del modelo de árbol de decisión

Quiz: Proyecto práctico: árboles de decisión

Introducción a random forest

13

¿Qué son los random forest o bosques aleatorios?

14

Tu primer random forest con scikit-learn

15

Análisis de datos para tu primer random forest

16

Entrenamiento de tu primer modelo de random forest con scikit-learn

17

Evaluación de tu primer modelo de random forest con scikit-learn

18

¿Cómo funcionan los random forest?

19

¿Cuándo utilizar random forest?

Quiz: Introducción a random forest

Proyecto práctico: random forest

20

Entrenamiento de modelo de clasificación de carros con random forest

21

Evaluación de resultados del modelo de clasificación con random forest

Quiz: Proyecto práctico: random forest

Conclusión

22

Proyecto final y cierre

23

Comparte tu proyecto de Random Forest y obtén tu certificado

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Cuándo usar árboles de decisión?

6/23
Recursos

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola Platzinautas, les recomiendo que investiguen XGBoost un modelo regresor muy poderoso, en este ejemplo en particular obtuvo mejor desempeño que el recomendado con un accuracy un 10% superior, les comparto el código con los dos modelos para que comparen, por otro lado los valores del XGBoost están por defecto, se le pueden configurar y setear como los estimators, y mejorar aun mas.

from sklearn.datasets import load_digits
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LogisticRegression
from imblearn.under_sampling import RandomUnderSampler
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split

df = pd.read_csv('titanic.csv')
df.drop(['Name', 'Fare'], axis=1, inplace=True)
df.columns = ['Survived', 'Pclass', 'Sex', 'Age', 'SibSp', 'Parch']
df = pd.get_dummies(df, columns=['Sex'], drop_first=True)
df.rename(columns ={'Sex_male': 'Sex'}, inplace=True)
X = df.drop('Survived', axis=1)
y= df['Survived']
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25, random_state=0)

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=2, random_state=0)

tree.fit(X_train,y_train)

y_train_pred = tree.predict(X_train)
y_test_pred = tree.predict(X_test)

from xgboost import XGBRegressor
from sklearn.metrics import accuracy_score
model = XGBRegressor()
model.fit(X_train,y_train)
y_train_pre = model.predict(X_train)
y_test_pre = model.predict(X_test)
from sklearn.metrics import mean_squared_error



mse_train = mean_squared_error(y_train, y_train_pre)
mse_test = mean_squared_error(y_test, y_test_pre)

inverted_mse_train = 1 -mse_train
inverted_mse_test = 1 -mse_test

print("Inverted MSE (Train):", inverted_mse_train)
print("Inverted MSE (Test):", inverted_mse_test)






train_accuracy = accuracy_score(y_train, y_train_pred)
test_accuracy = accuracy_score(y_test, y_test_pred)
print(X_train)
print('El accuracy en train es: ', train_accuracy)
print('El accuracy en test es: ', test_accuracy)


importances = tree.feature_importances_
columns = X.columns
data = pd.DataFrame([importances], columns=columns)
sns.barplot(data, palette='bright', saturation=2.0,  linewidth=2)
plt.show()


Al ser de lista blanca, me parece muy interesante su uso en la agricultura, como un método de aprendizaje de las diferentes decisiones tomadas en las etapas de siembra y cosecha.

Ventajas 😄

Si hablamos de los arboles decisicion necesitamos saber que:
Fuente: https://scikit-learn.org/stable/modules/tree.html#mathematical-formulation

Ventajas

  1. Fácil de entender y de interpretar. Los árboles se pueden visualizar.
  2. Requiere poca preparación de datos.
  3. El costo de usar el árbol (es decir, predecir datos) es logarítmico en la cantidad de puntos de datos usados para entrenar el árbol.
  4. Capaz de manejar datos numéricos y categóricos. Sin embargo, la implementación de scikit-learn no admite variables categóricas por ahora.
  5. Capaz de manejar problemas de múltiples salidas.
  6. modelo de caja blanca.
  7. Posibilidad de validar un modelo mediante pruebas estadísticas. Eso permite dar cuenta de la fiabilidad del modelo.
  8. Tiene un buen desempeño incluso si sus supuestos son algo violados por el verdadero modelo a partir del cual se generaron los datos.

Desventajas

  1. Los aprendices pueden crear árboles demasiado complejos que no generalizan bien los datos. Esto se llama sobreajuste.

  2. Pueden ser inestables porque pequeñas variaciones en datos pueden generar un árbol completamente diferente. Este problema se mitiga mediante el uso de árboles de decisión dentro de un conjunto.

  3. Las predicciones de los árboles de decisión no son uniformes ni continuas, sino aproximaciones constantes por partes, como se ve en la figura anterior. Por lo tanto, no son buenos para la extrapolación.

  4. Dichos algoritmos no pueden garantizar la devolución del árbol de decisión globalmente óptimo. Esto se puede mitigar entrenando varios árboles en un alumno de conjunto, donde las características y las muestras se muestrean aleatoriamente con reemplazo.

  5. Hay conceptos que son difíciles de aprender porque los árboles de decisión no los expresan fácilmente, como XOR, problemas de paridad o multiplexor.

  6. Los aprendices crean árboles sesgados si dominan algunas clases. Por lo tanto, se recomienda equilibrar el conjunto de datos antes de ajustarlo al árbol de decisión.

Se puede aplicar en el proceso de evaluación del cliente para determinar si es factible o no otorgar un crédito a un potencial cliente en base a datos cuantitativo y cualitativo del cliente.

Ventajas:

  1. Algoritmo de caja blanca.
  2. Resultados faciles de interpretar y entender.
  3. Las combinaciones de los mismos pueden dar resultados muy certeros. Por ejemplo, random forest.

Desventajas:

  1. Tienden a sobreajuste u overfitting.
  2. Se ven influenciadas por los outliers(valores muy diferentes.
  3. Crear arboles demasiado complejos puede conllevar que no se adapten bien a los nuevos datos.
  4. Se pueden crear arboles sesgados si una de las clases es mas numerosa.

¿Cuando usar arboles de decision?

  1. Sencillo y facil de entender.
  2. Funcionan bastante bien con grandes conjuntos de datos.
  3. Relativamente robusto.
  4. Es un metodo muy util para analizar datos cuantitativos.
  5. Aplica para problemas de clasificacion y regresion.
Hace poco hice un proyecto de estilometría, es decir, distinguir diversos estilos de escritura de distintos autores. Probé varios algoritmos, entre ellos árboles de decisión. Aunque los árboles de decisión tenían peor desempeño que otros modelos, daban resultados muy interpretables y útiles. ¡ Y muy interesantes! Por ejemplo, la relación entre comas y puntos en el texto era fundamental (frases largas o cortas). Hay autores que solo usan "fuera", otros solo usan "fuese" y otros, según su procedencia, nunca usan el pasado de subjuntivo. Es decir, estos algoritmos son muy útiles no solo para construir modelos, también para entender internamente cómo está relacionado un conjunto de datos.