Modelli Ensemble Boosting
Una sequenza di modelli dove ciascuno di correggere gli errori commessi dai precedenti.
Modello Ensemble Boosting
Il Boosting è un'altra potente tecnica di ensemble learning utilizzata per migliorare la precisione e la performance dei modelli di machine learning.A differenza del Bagging, il Boosting crea una sequenza di modelli dove ciascun nuovo modello cerca di correggere gli errori commessi dai modelli precedenti.
Come Funziona il Boosting
Il processo di Boosting può essere riassunto nei seguenti passaggi: 1. Addestramento Sequenziale: Si addestra un modello debole sul dataset originale. Successivamente, si addestra un secondo modello debole, cercando di correggere gli errori commessi dal primo modello. Questo processo continua per un numero predefinito di iterazioni.
2. Pesi degli Errori: Ogni istanza del dataset viene assegnata un peso che indica la difficoltà di classificazione. In ogni iterazione, gli errori commessi dai modelli precedenti vengono ponderati di più, in modo che i modelli successivi si concentrino maggiormente su questi errori.
3. Combinazione delle Previsioni: Alla fine, le previsioni dei modelli deboli vengono combinate, spesso attraverso una media ponderata o una votazione ponderata, per ottenere la previsione finale.
Vantaggi del Boosting
- Riduzione dell'Errore: Il Boosting può ridurre sia la varianza che il bias del modello, migliorando significativamente la performance.
- Modelli Ponderati: Gli errori pesati permettono al modello di concentrarsi maggiormente sulle istanze difficili.
- Flessibilità: Può essere utilizzato con vari tipi di modelli deboli, rendendolo molto versatile.
Boosting oppure Bagging
- Dati Rumorosi: Il Boosting è generalmente preferito quando i dati hanno rumore e sono complessi, in quanto può adattarsi meglio ai pattern intricati.- Bias Elevato: Se il modello base soffre di un elevato bias, il Boosting può aiutare a ridurlo.
- Performance: Il Boosting spesso fornisce una performance migliore rispetto al Bagging, specialmente in competizioni di machine learning.
Esempio con il Dataset California Housing
import pandas as pd
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_squared_error, r2_score
# Carica il dataset California Housing
housing = fetch_california_housing()
X = housing.data
y = housing.target
# Dividi il dataset in training set e test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Applica lo scaler per normalizzare i dati
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Crea il modello AdaBoostRegressor
adaboost_regressor = AdaBoostRegressor(n_estimators=50, learning_rate=1, random_state=42)
# Addestra il modello
adaboost_regressor.fit(X_train_scaled, y_train)
# Effettua le previsioni
y_pred = adaboost_regressor.predict(X_test_scaled)
# Calcola il Mean Squared Error (MSE) e il coefficiente di determinazione R^2
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# Stampa i risultati
print(f"Mean Squared Error: {mse:.2f}")