Introducción
En este tema, exploraremos dos técnicas populares de modelado de datos: los árboles de decisión y los bosques aleatorios. Estas técnicas son ampliamente utilizadas debido a su capacidad para manejar tanto problemas de clasificación como de regresión, y su facilidad de interpretación.
Árboles de Decisión
Conceptos Básicos
Un árbol de decisión es una estructura de árbol donde cada nodo interno representa una "prueba" en un atributo (por ejemplo, si una variable es mayor o menor que un valor dado), cada rama representa el resultado de la prueba, y cada nodo hoja representa una etiqueta de clase (en clasificación) o un valor continuo (en regresión).
Ventajas y Desventajas
Ventajas:
- Fácil de entender e interpretar.
- Requiere poca preparación de datos.
- Puede manejar tanto datos numéricos como categóricos.
Desventajas:
- Propenso al sobreajuste.
- Sensible a pequeñas variaciones en los datos.
Ejemplo Práctico
Vamos a construir un árbol de decisión utilizando la biblioteca scikit-learn
en Python.
Paso 1: Importar las Bibliotecas Necesarias
from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score
Paso 2: Cargar y Preparar los Datos
# Cargar el conjunto de datos Iris iris = load_iris() X = iris.data y = iris.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
Paso 3: Entrenar el Modelo
# Crear el modelo de árbol de decisión clf = DecisionTreeClassifier() # Entrenar el modelo clf.fit(X_train, y_train)
Paso 4: Evaluar el Modelo
# Hacer predicciones y_pred = clf.predict(X_test) # Calcular la precisión accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del modelo: {accuracy:.2f}')
Ejercicio Práctico
Ejercicio: Construye un árbol de decisión para el conjunto de datos Titanic disponible en seaborn
.
Solución:
import seaborn as sns from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # Cargar el conjunto de datos Titanic titanic = sns.load_dataset('titanic') # Preprocesar los datos titanic = titanic.dropna(subset=['age', 'embarked', 'fare']) titanic['sex'] = titanic['sex'].map({'male': 0, 'female': 1}) titanic['embarked'] = titanic['embarked'].map({'C': 0, 'Q': 1, 'S': 2}) # Seleccionar características y etiqueta X = titanic[['pclass', 'sex', 'age', 'fare', 'embarked']] y = titanic['survived'] # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Crear y entrenar el modelo clf = DecisionTreeClassifier() clf.fit(X_train, y_train) # Hacer predicciones y evaluar el modelo y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del modelo: {accuracy:.2f}')
Bosques Aleatorios
Conceptos Básicos
Un bosque aleatorio es un conjunto de árboles de decisión entrenados con diferentes subconjuntos del conjunto de datos. La predicción final se obtiene promediando las predicciones de todos los árboles (en regresión) o por votación mayoritaria (en clasificación).
Ventajas y Desventajas
Ventajas:
- Reduce el riesgo de sobreajuste.
- Maneja bien grandes conjuntos de datos.
- Proporciona una estimación de la importancia de las características.
Desventajas:
- Menos interpretable que un solo árbol de decisión.
- Requiere más recursos computacionales.
Ejemplo Práctico
Vamos a construir un bosque aleatorio utilizando scikit-learn
.
Paso 1: Importar las Bibliotecas Necesarias
from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score
Paso 2: Cargar y Preparar los Datos
# Cargar el conjunto de datos Iris iris = load_iris() X = iris.data y = iris.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
Paso 3: Entrenar el Modelo
# Crear el modelo de bosque aleatorio clf = RandomForestClassifier(n_estimators=100, random_state=42) # Entrenar el modelo clf.fit(X_train, y_train)
Paso 4: Evaluar el Modelo
# Hacer predicciones y_pred = clf.predict(X_test) # Calcular la precisión accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del modelo: {accuracy:.2f}')
Ejercicio Práctico
Ejercicio: Construye un bosque aleatorio para el conjunto de datos Titanic disponible en seaborn
.
Solución:
import seaborn as sns from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # Cargar el conjunto de datos Titanic titanic = sns.load_dataset('titanic') # Preprocesar los datos titanic = titanic.dropna(subset=['age', 'embarked', 'fare']) titanic['sex'] = titanic['sex'].map({'male': 0, 'female': 1}) titanic['embarked'] = titanic['embarked'].map({'C': 0, 'Q': 1, 'S': 2}) # Seleccionar características y etiqueta X = titanic[['pclass', 'sex', 'age', 'fare', 'embarked']] y = titanic['survived'] # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Crear y entrenar el modelo clf = RandomForestClassifier(n_estimators=100, random_state=42) clf.fit(X_train, y_train) # Hacer predicciones y evaluar el modelo y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del modelo: {accuracy:.2f}')
Conclusión
En esta sección, hemos aprendido sobre los árboles de decisión y los bosques aleatorios, dos técnicas poderosas para el modelado de datos. Hemos visto cómo construir y evaluar estos modelos utilizando scikit-learn
en Python. En el próximo módulo, exploraremos cómo evaluar y validar estos modelos para asegurarnos de que sean robustos y generalizables.
Curso de Análisis de Datos
Módulo 1: Introducción al Análisis de Datos
- Conceptos Básicos de Análisis de Datos
- Importancia del Análisis de Datos en la Toma de Decisiones
- Herramientas y Software Comúnmente Utilizados
Módulo 2: Recolección y Preparación de Datos
- Fuentes de Datos y Métodos de Recolección
- Limpieza de Datos: Identificación y Manejo de Datos Faltantes
- Transformación y Normalización de Datos
Módulo 3: Exploración de Datos
- Análisis Exploratorio de Datos (EDA)
- Visualización de Datos: Gráficos y Tablas
- Detección de Patrones y Tendencias
Módulo 4: Modelado de Datos
- Introducción a los Modelos Estadísticos
- Regresión Lineal y Logística
- Árboles de Decisión y Bosques Aleatorios
Módulo 5: Evaluación y Validación de Modelos
- Métricas de Evaluación de Modelos
- Validación Cruzada y Técnicas de Validación
- Ajuste y Optimización de Modelos
Módulo 6: Implementación y Comunicación de Resultados
- Implementación de Modelos en Producción
- Comunicación de Resultados a Partes Interesadas
- Documentación y Reportes