html
Implementación de Regresión Polinómica y Regresor de Árbol de Decisión en Datos de Seguros: Una Guía Completa
En el ámbito del aprendizaje automático, los modelos de regresión juegan un papel fundamental en la predicción de resultados continuos. Este artículo profundiza en la aplicación de Regresión Polinómica y Regresor de Árbol de Decisión en un conjunto de datos de seguros, ofreciendo una guía paso a paso para el preprocesamiento de datos, construcción de modelos, evaluación y optimización. Ya seas un científico de datos experimentado o un entusiasta en ciernes, esta guía completa te equipará con el conocimiento para implementar y comparar estas técnicas de regresión de manera efectiva.
Tabla de Contenidos
- Introducción
- Descripción del Conjunto de Datos
- Preprocesamiento de Datos
- División de Datos en Conjuntos de Entrenamiento y Prueba
- Construcción y Evaluación de un Modelo de Regresión Polinómica
- Implementación del Regresor de Árbol de Decisión
- Ajuste de Hiperparámetros y Su Impacto
- Validación Cruzada y Estabilidad del Modelo
- Comparación de Modelos
- Conclusión y Mejores Prácticas
Introducción
El aprendizaje automático ofrece un espectro de técnicas de regresión adecuadas para diversas tareas predictivas. Esta guía se centra en dos de estos métodos:
- Regresión Polinómica: Amplía la regresión lineal al considerar relaciones polinómicas entre las variables independientes y dependientes.
- Regresor de Árbol de Decisión: Utiliza modelos en forma de árbol de decisiones para predecir valores continuos.
Aplicar estos modelos a un conjunto de datos de seguros nos permite predecir los cargos de seguros basándonos en factores como edad, IMC, hábitos de tabaquismo y más.
Descripción del Conjunto de Datos
Utilizamos el Conjunto de Datos de Seguros de Kaggle, que contiene las siguientes características:
- Age: Edad del beneficiario principal.
- Sex: Género del beneficiario.
- BMI: Índice de Masa Corporal.
- Children: Número de hijos cubiertos por el seguro.
- Smoker: Estado de fumador.
- Region: Área residencial del beneficiario.
- Charges: Costos médicos individuales facturados por el seguro de salud.
El objetivo es predecir los Charges
basándose en las demás características.
Preprocesamiento de Datos
Un preprocesamiento de datos eficaz es crucial para construir modelos de aprendizaje automático precisos. Esta sección cubre la Codificación de Etiquetas y la Codificación One-Hot para manejar variables categóricas.
Codificación de Etiquetas
La codificación de etiquetas transforma datos de texto categóricos en forma numérica, lo cual es esencial para los algoritmos de aprendizaje automático.
1234567891011121314
from sklearn import preprocessingimport pandas as pd # Load datasetdata = pd.read_csv('S07_datasets_13720_18513_insurance.csv')X = data.iloc[:, :-1]Y = data.iloc[:, -1] # Initialize LabelEncoderle = preprocessing.LabelEncoder() # Encode 'sex' and 'smoker' columnsX['sex'] = le.fit_transform(X['sex'])X['smoker'] = le.fit_transform(X['smoker'])
Salida:
1234
age sex bmi children smoker region0 19 0 27.900 0 1 southwest1 18 1 33.770 1 0 southeast...
Codificación One-Hot
La codificación One-Hot convierte variables categóricas en una forma que puede ser proporcionada a los algoritmos de ML para mejorar el rendimiento en la predicción.
123456789
from sklearn.preprocessing import OneHotEncoderfrom sklearn.compose import ColumnTransformer # Initialize ColumnTransformer with OneHotEncoder for 'region'columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [5])], remainder='passthrough') # Apply transformationX = columnTransformer.fit_transform(X)print(X)
Salida:
1234
[[0. 0. 0. ... 27.9 0. 1.] [0. 0. 1. ... 33.77 1. 0.]...]
División de Datos en Conjuntos de Entrenamiento y Prueba
Dividir el conjunto de datos asegura que el rendimiento del modelo se evalúe con datos no vistos, proporcionando una mejor estimación de su rendimiento en el mundo real.
1234
from sklearn.model_selection import train_test_split # Split data into training and testing sets (80-20 split)X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=1)
Construcción y Evaluación de un Modelo de Regresión Polinómica
La Regresión Polinómica permite que el modelo ajuste una relación no lineal entre las variables independientes y dependientes.
123456789101112131415161718
from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.metrics import r2_score # Initialize PolynomialFeatures with degree 2poly = PolynomialFeatures(degree=2)X_poly = poly.fit_transform(X_train) # Initialize and fit Linear Regression modelmodel = LinearRegression()model.fit(X_poly, y_train) # Predict on test sety_pred = model.predict(poly.transform(X_test)) # Evaluate modelr2 = r2_score(y_test, y_pred)print(f'Polynomial Regression R2 Score: {r2:.2f}')
Salida:
1
Polynomial Regression R2 Score: 0.86
Un puntaje R² de 0.86 indica que aproximadamente el 86% de la variación en los cargos de seguros es explicada por el modelo.
Implementación del Regresor de Árbol de Decisión
Los Árboles de Decisión dividen los datos en subconjuntos basados en los valores de las características, permitiendo una modelación compleja de las relaciones.
123456789101112
from sklearn.tree import DecisionTreeRegressor # Initialize Decision Tree Regressor with max_depth=4dt_model = DecisionTreeRegressor(max_depth=4)dt_model.fit(X_train, y_train) # Predict on test sety_pred_dt = dt_model.predict(X_test) # Evaluate modelr2_dt = r2_score(y_test, y_pred_dt)print(f'Decision Tree Regressor R2 Score: {r2_dt:.2f}')
Salida:
1
Decision Tree Regressor R2 Score: 0.87
Sorprendentemente, el Regresor de Árbol de Decisión logró un puntaje R² ligeramente superior al modelo de Regresión Polinómica en este caso.
Ajuste de Hiperparámetros y Su Impacto
Hiperparámetros como max_depth
impactan significativamente el rendimiento del modelo al controlar la complejidad del Árbol de Decisión.
1234567
# Experimenting with different max_depth valuesfor depth in [2, 3, 4, 10]: dt_model = DecisionTreeRegressor(max_depth=depth, random_state=1) dt_model.fit(X_train, y_train) y_pred_dt = dt_model.predict(X_test) r2_dt = r2_score(y_test, y_pred_dt) print(f'max_depth={depth} => R2 Score: {r2_dt:.2f}')
Salida:
1234
max_depth=2 => R2 Score: 0.75max_depth=3 => R2 Score: 0.86max_depth=4 => R2 Score: 0.87max_depth=10 => R2 Score: 0.75
- Max Depth=2: Subajuste del modelo con un puntaje R² más bajo.
- Max Depth=3 & 4: Rendimiento óptimo con puntajes R² más altos.
- Max Depth=10: Sobreajuste, lo que lleva a una disminución del rendimiento en el conjunto de prueba.
Conclusión: Seleccionar un max_depth
apropiado es crucial para equilibrar el sesgo y la varianza, asegurando que el modelo generalice bien con datos no vistos.
Validación Cruzada y Estabilidad del Modelo
La validación cruzada, específicamente la Validación Cruzada K-Fold, proporciona una estimación más robusta del rendimiento del modelo al dividir los datos en k subconjuntos y entrenar y probar el modelo iterativamente.
12345678910
from sklearn.model_selection import cross_val_score # Initialize Decision Tree Regressordt_model = DecisionTreeRegressor(max_depth=4, random_state=1) # Perform 5-Fold Cross-Validationcv_scores = cross_val_score(dt_model, X, Y, cv=5, scoring='r2') print(f'Cross-Validation R2 Scores: {cv_scores}')print(f'Average R2 Score: {cv_scores.mean():.2f}')
Salida:
12
Cross-Validation R2 Scores: [0.85 0.86 0.87 0.88 0.86]Average R2 Score: 0.86
Beneficio: La validación cruzada mitiga el riesgo de evaluar el modelo basado en una única división de entrenamiento-prueba, proporcionando una métrica de rendimiento más generalizada.
Comparación de Modelos
Modelo
Puntaje R²
Regresión Polinómica
0.86
Regresor de Árbol de Decisión
0.87
Insigths:
- Regresor de Árbol de Decisión supera ligeramente a la Regresión Polinómica en este caso.
- Un adecuado Ajuste de Hiperparámetros mejora significativamente el rendimiento del Árbol de Decisión.
- Ambos modelos tienen sus méritos; la elección depende del caso de uso específico y las características de los datos.
Conclusión y Mejores Prácticas
En esta guía, exploramos la implementación de Regresión Polinómica y Regresor de Árbol de Decisión en un conjunto de datos de seguros. Las conclusiones clave incluyen:
- Preprocesamiento de Datos: Una codificación adecuada de las variables categóricas es esencial para la precisión del modelo.
- Evaluación del Modelo: El Puntaje R² sirve como una métrica confiable para evaluar el rendimiento del modelo.
- Ajuste de Hiperparámetros: Ajustar parámetros como
max_depth
puede prevenir el sobreajuste y el subajuste.
- Validación Cruzada: Mejora la fiabilidad de las métricas de rendimiento.
Mejores Prácticas:
- Comprende Tus Datos: Antes de modelar, explora y comprende el conjunto de datos para tomar decisiones informadas de preprocesamiento y modelado.
- Ingeniería de Características: Considera crear nuevas características o transformar las existentes para capturar patrones subyacentes.
- Selección de Modelos: Experimenta con múltiples algoritmos para identificar el que mejor se desempeñe para tu tarea específica.
- Técnicas de Regularización: Utiliza técnicas como la poda en Árboles de Decisión para prevenir el sobreajuste.
- Aprendizaje Continuo: Mantente actualizado con las últimas técnicas de aprendizaje automático y mejores prácticas.
Al adherirse a estas prácticas, puedes construir modelos predictivos robustos y precisos adaptados a tu conjunto de datos y objetivos.
Potencia tu viaje en ciencia de datos experimentando con estos modelos en diversos conjuntos de datos y explorando técnicas avanzadas para mejorar aún más el rendimiento del modelo.