html
Implementando Regressão Polinomial e Regressor de Árvore de Decisão em Dados de Seguro: Um Guia Abrangente
No âmbito da aprendizagem de máquina, os modelos de regressão desempenham um papel fundamental na previsão de resultados contínuos. Este artigo explora a aplicação da Regressão Polinomial e do Regressor de Árvore de Decisão em um conjunto de dados de seguro, oferecendo um guia passo a passo para pré-processamento de dados, construção de modelos, avaliação e otimização. Seja você um cientista de dados experiente ou um entusiasta em ascensão, este guia abrangente o equipará com o conhecimento para implementar e comparar efetivamente essas técnicas de regressão.
Índice
- Introdução
- Visão Geral do Conjunto de Dados
- Pré-processamento de Dados
- Divisão de Dados em Conjuntos de Treinamento e Teste
- Construção e Avaliação de um Modelo de Regressão Polinomial
- Implementação do Regressor de Árvore de Decisão
- Ajuste de Hiperparâmetros e Seu Impacto
- Validação Cruzada e Estabilidade do Modelo
- Comparação de Modelos
- Conclusão e Melhores Práticas
Introdução
A aprendizagem de máquina oferece um espectro de técnicas de regressão adequadas para várias tarefas preditivas. Este guia se concentra em dois desses métodos:
- Regressão Polinomial: Amplia a regressão linear ao considerar relações polinomiais entre as variáveis independentes e dependentes.
- Regressor de Árvore de Decisão: Utiliza modelos em forma de árvore de decisões para prever valores contínuos.
A aplicação desses modelos a um conjunto de dados de seguro nos permite prever os custos do seguro com base em fatores como idade, IMC, hábitos de tabagismo e muito mais.
Visão Geral do Conjunto de Dados
Utilizamos o Conjunto de Dados de Seguro do Kaggle, que contém as seguintes características:
- Idade: Idade do beneficiário principal.
- Sexo: Gênero do beneficiário.
- IMC: Índice de Massa Corporal.
- Filhos: Número de filhos cobertos pelo seguro.
- Fumante: Status de tabagismo.
- Região: Área residencial do beneficiário.
- Custos: Custos médicos individuais faturados pelo seguro de saúde.
O objetivo é prever os Charges
com base nas outras características.
Pré-processamento de Dados
O pré-processamento eficaz de dados é crucial para construir modelos de aprendizagem de máquina precisos. Esta seção aborda a Codificação de Rótulos e a Codificação One-Hot para lidar com variáveis categóricas.
Codificação de Rótulos
A Codificação de Rótulos transforma dados textuais categóricos em forma numérica, o que é essencial para algoritmos de aprendizado de máquina.
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'])
Saída:
1234
age sex bmi children smoker region0 19 0 27.900 0 1 southwest1 18 1 33.770 1 0 southeast...
Codificação One-Hot
A Codificação One-Hot converte variáveis categóricas em uma forma que pode ser fornecida aos algoritmos de ML para melhorar a precisão da previsão.
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)
Saída:
1234
[[0. 0. 0. ... 27.9 0. 1.] [0. 0. 1. ... 33.77 1. 0.]...]
Divisão de Dados em Conjuntos de Treinamento e Teste
Dividir o conjunto de dados garante que o desempenho do modelo seja avaliado com dados não vistos, proporcionando uma melhor estimativa de seu desempenho no 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)
Construção e Avaliação de um Modelo de Regressão Polinomial
A Regressão Polinomial permite que o modelo ajuste uma relação não linear entre as variáveis independentes e dependentes.
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}')
Saída:
1
Polynomial Regression R2 Score: 0.86
Um coeficiente R² de 0,86 indica que aproximadamente 86% da variância nos custos de seguro é explicada pelo modelo.
Implementação do Regressor de Árvore de Decisão
As Árvores de Decisão particionam os dados em subconjuntos com base nos valores das características, permitindo uma modelagem complexa das relações.
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}')
Saída:
1
Decision Tree Regressor R2 Score: 0.87
Surpreendentemente, o Regressor de Árvore de Decisão alcançou um coeficiente R² ligeiramente maior do que o modelo de Regressão Polinomial neste caso.
Ajuste de Hiperparâmetros e Seu Impacto
Hiperparâmetros como max_depth
impactam significativamente o desempenho do modelo ao controlar a complexidade da Árvore de Decisão.
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}')
Saída:
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 do modelo com um coeficiente R² menor.
- Max Depth=3 & 4: Desempenho ótimo com coeficientes R² mais altos.
- Max Depth=10: Sobreajuste, levando a um desempenho diminuído no conjunto de teste.
Conclusão: Selecionar um max_depth
apropriado é crucial para equilibrar o viés e a variância, garantindo que o modelo generalize bem para dados não vistos.
Validação Cruzada e Estabilidade do Modelo
Validação cruzada, especificamente a Validação Cruzada K-Fold, fornece uma estimativa mais robusta do desempenho do modelo ao particionar os dados em k subconjuntos e treinar e testar o 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}')
Saída:
12
Cross-Validation R2 Scores: [0.85 0.86 0.87 0.88 0.86]Average R2 Score: 0.86
Benefício: A validação cruzada mitiga o risco de avaliação do modelo com base em uma única divisão treino-teste, fornecendo uma métrica de desempenho mais generalizada.
Comparação de Modelos
Modelo
Coeficiente R²
Regressão Polinomial
0.86
Regressor de Árvore de Decisão
0.87
Percepções:
- Regressor de Árvore de Decisão supera ligeiramente a Regressão Polinomial neste caso.
- O ajuste adequado de Hiperparâmetros melhora significativamente o desempenho da Árvore de Decisão.
- Ambos os modelos têm seus méritos; a escolha depende do caso de uso específico e das características dos dados.
Conclusão e Melhores Práticas
Neste guia, exploramos a implementação da Regressão Polinomial e do Regressor de Árvore de Decisão em um conjunto de dados de seguro. Os principais pontos incluem:
- Pré-processamento de Dados: A codificação adequada de variáveis categóricas é essencial para a precisão do modelo.
- Avaliação do Modelo: O coeficiente R² serve como uma métrica confiável para avaliar o desempenho do modelo.
- Ajuste de Hiperparâmetros: Ajustar parâmetros como
max_depth
pode prevenir sobreajuste e subajuste.
- Validação Cruzada: Aumenta a confiabilidade das métricas de desempenho.
Melhores Práticas:
- Entenda Seus Dados: Antes de modelar, explore e entenda o conjunto de dados para tomar decisões informadas de pré-processamento e modelagem.
- Engenharia de Características: Considere criar novas características ou transformar as existentes para capturar padrões subjacentes.
- Seleção de Modelos: Experimente múltiplos algoritmos para identificar o melhor desempenho para sua tarefa específica.
- Técnicas de Regularização: Utilize técnicas como poda em Árvores de Decisão para prevenir sobreajuste.
- Aprendizado Contínuo: Mantenha-se atualizado com as mais recentes técnicas de aprendizagem de máquina e melhores práticas.
Adotando essas práticas, você pode construir modelos preditivos robustos e precisos, adaptados ao seu conjunto de dados e objetivos.
Impulsione sua jornada na ciência de dados experimentando esses modelos em vários conjuntos de dados e explorando técnicas avançadas para melhorar ainda mais o desempenho do modelo.