Vai al contenuto principale

Classificatore AdaBoost in Python

Comprendi l'approccio ensemble, il funzionamento dell'algoritmo AdaBoost e impara a costruire il modello AdaBoost in Python.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Negli ultimi anni, gli algoritmi di boosting hanno guadagnato enorme popolarità nelle competizioni di data science e machine learning. La maggior parte dei vincitori di queste competizioni usa algoritmi di boosting per ottenere un'elevata accuratezza. Queste competizioni di data science offrono una piattaforma globale per imparare, esplorare e proporre soluzioni a vari problemi del mondo aziendale e della pubblica amministrazione. Gli algoritmi di boosting combinano molteplici modelli a bassa accuratezza (o deboli) per creare modelli ad alta accuratezza (o forti). Possono essere impiegati in vari ambiti come credito, assicurazioni, marketing e vendite. Algoritmi di boosting come AdaBoost, Gradient Boosting e XGBoost sono ampiamente usati per vincere le competizioni di data science. In questo tutorial imparerai l'algoritmo di boosting ensemble AdaBoost e verranno trattati i seguenti argomenti:

Approccio Ensemble nel Machine Learning

Un ensemble è un modello composito che combina una serie di classificatori a basse prestazioni con l'obiettivo di creare un classificatore migliore. Qui, i singoli classificatori votano e viene restituita l'etichetta finale che segue la maggioranza. Gli ensemble offrono maggiore accuratezza rispetto al singolo classificatore di base. I metodi ensemble possono essere parallelizzati assegnando ciascun base learner a macchine diverse. In sintesi, i metodi di ensemble sono meta-algoritmi che combinano diversi metodi di machine learning in un unico modello predittivo per aumentarne le prestazioni. I metodi ensemble possono ridurre la varianza usando l'approccio di bagging, ridurre il bias usando il boosting o migliorare le previsioni usando lo stacking.

Approccio Ensemble nel Machine Learning
  1. Bagging sta per bootstrap aggregation. Combina molteplici learner per ridurre la varianza delle stime. Ad esempio, Random Forest allena M alberi decisionali; puoi addestrare M alberi diversi su sottoinsiemi casuali differenti dei dati ed effettuare una votazione per la previsione finale. Esempi di ensemble di bagging sono Random Forest ed Extra Trees.

  2. Gli algoritmi di boosting sono un insieme di classificatori a bassa accuratezza per creare un classificatore altamente accurato. Un classificatore a bassa accuratezza (o debole) offre un'accuratezza migliore del lancio della moneta. Un classificatore altamente accurato (o forte) ha un tasso di errore vicino allo 0. Un algoritmo di boosting può tenere traccia del modello che ha fallito nella previsione corretta. Gli algoritmi di boosting sono meno soggetti a overfitting. I tre algoritmi seguenti hanno guadagnato enorme popolarità nelle competizioni di data science.

    • AdaBoost (Adaptive Boosting)
    • Gradient Tree Boosting
    • XGBoost
  3. Stacking (o stacked generalization) è una tecnica di ensemble che combina le previsioni di molteplici modelli di base in un nuovo set di dati. Questi nuovi dati vengono trattati come input per un altro classificatore, impiegato per risolvere il problema. Lo stacking è spesso chiamato blending.

Approccio Ensemble nel Machine Learning

In base alla disposizione dei base learner, i metodi ensemble possono essere divisi in due gruppi: nei metodi ensemble paralleli, i base learner sono generati in parallelo, ad esempio Random Forest. Nei metodi ensemble sequenziali, i base learner sono generati in sequenza, ad esempio AdaBoost.

In base al tipo di base learner, i metodi ensemble possono essere divisi in due gruppi: il metodo ensemble omogeneo usa lo stesso tipo di base learner a ogni iterazione. Il metodo ensemble eterogeneo usa tipi diversi di base learner a ogni iterazione.

Classificatore AdaBoost

AdaBoost, o Adaptive Boosting, è uno dei classificatori ensemble di boosting proposti da Yoav Freund e Robert Schapire nel 1996. Combina molteplici classificatori per aumentarne l'accuratezza. AdaBoost è un metodo ensemble iterativo. Il classificatore AdaBoost costruisce un classificatore forte combinando molteplici classificatori con scarse prestazioni, così da ottenere un classificatore forte ad alta accuratezza. Il concetto di base dietro AdaBoost è impostare i pesi dei classificatori e dei campioni di training a ogni iterazione in modo da garantire previsioni accurate delle osservazioni insolite. Qualsiasi algoritmo di machine learning può essere usato come classificatore di base se accetta pesi sul set di training. AdaBoost deve soddisfare due condizioni:

  1. Il classificatore deve essere addestrato in modo interattivo su vari esempi di training pesati.
  2. A ogni iterazione, cerca di fornire un ottimo fit per questi esempi minimizzando l'errore di training.

Come funziona l'algoritmo AdaBoost?

Funziona nei seguenti passaggi:

  1. Inizialmente, AdaBoost seleziona casualmente un sottoinsieme di training.
  2. Addestra iterativamente il modello di machine learning AdaBoost selezionando il set di training in base alla previsione accurata dell'ultimo training.
  3. Assegna un peso maggiore alle osservazioni classificate in modo errato, così che nella successiva iterazione queste osservazioni abbiano alta probabilità di essere classificate.
  4. Inoltre, assegna un peso al classificatore addestrato in ciascuna iterazione in base all'accuratezza del classificatore. Il classificatore più accurato riceverà un peso maggiore.
  5. Questo processo si ripete finché l'intero set di training si adatta senza errori o finché non si raggiunge il numero massimo di stimatori specificato.
  6. Per classificare, esegui un "voto" su tutti gli algoritmi di apprendimento che hai costruito.
Come funziona l'algoritmo AdaBoost?

Costruire un modello in Python

Importare le librerie necessarie

Per prima cosa carichiamo le librerie necessarie.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
# Import train_test_split function
from sklearn.model_selection import train_test_split
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

Caricare il dataset

Nella parte di costruzione del modello, puoi usare il dataset IRIS, un famoso problema di classificazione multiclasse. Questo dataset comprende 4 feature (lunghezza sepalo, larghezza sepalo, lunghezza petalo, larghezza petalo) e un target (il tipo di fiore). I dati hanno tre classi di fiori: Setosa, Versicolour e Virginica. Il dataset è disponibile nella libreria scikit-learn, oppure puoi scaricarlo dalla UCI Machine Learning Library.

# Load data
iris = datasets.load_iris()
X = iris.data
y = iris.target

Suddividere il dataset

Per comprendere le prestazioni del modello, dividere il dataset in un set di training e un set di test è una buona strategia.

Suddividiamo il dataset usando la funzione train_test_split(). Devi passare 3 parametri: feature, target e dimensione del test_set.

# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test

Costruire il modello AdaBoost

Creiamo il modello AdaBoost usando Scikit-learn. AdaBoost usa Decision Tree Classifier come classificatore predefinito.

# Create adaboost classifer object
abc = AdaBoostClassifier(n_estimators=50,
                         learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)

"I parametri più importanti sono base_estimator, n_estimators e learning_rate." (Adaboost Classifier, Chris Albon)

  • base_estimator: È un weak learner usato per addestrare il modello. Usa DecisionTreeClassifier come weak learner predefinito per l'addestramento. Puoi anche specificare diversi algoritmi di machine learning.
  • n_estimators: Numero di weak learner da addestrare iterativamente.
  • learning_rate: Incide sui pesi dei weak learner. Il valore predefinito è 1.

Valutare il modello

Stimiamo quanto accuratamente il classificatore o il modello può prevedere il tipo di cultivar.

L'accuratezza può essere calcolata confrontando i valori reali del set di test e i valori previsti.

# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.8888888888888888

Hai ottenuto un'accuratezza dell'88,88%, considerata buona.

Per ulteriori valutazioni, puoi anche creare un modello usando diversi Base Estimator.

Usare diversi base learner

Ho utilizzato SVC come base estimator. Puoi usare qualsiasi learner di ML come base estimator se accetta i pesi dei campioni, come Decision Tree o Support Vector Classifier.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier

# Import Support Vector Classifier
from sklearn.svm import SVC
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')

# Create adaboost classifer object
abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)

# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)


# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.9555555555555556

Hai ottenuto un tasso di classificazione del 95,55%, considerato buono.

In questo caso, il Base Estimator SVC ottiene un'accuratezza migliore rispetto al Base Estimator Decision Tree.

Pro

AdaBoost è facile da implementare. Corregge iterativamente gli errori del classificatore debole e migliora l'accuratezza combinando weak learner. Puoi usare molti classificatori di base con AdaBoost. AdaBoost non è incline all'overfitting. Questo emerge dai risultati sperimentali, ma non c'è una ragione teorica definitiva.

Contro

AdaBoost è sensibile ai dati rumorosi. È fortemente influenzato dagli outlier perché cerca di adattare perfettamente ogni punto. AdaBoost è più lento rispetto a XGBoost.

Conclusione

Congratulazioni, sei arrivato alla fine di questo tutorial!

In questo tutorial hai imparato gli approcci Ensemble nel Machine Learning, l'algoritmo AdaBoost, come funziona, la costruzione e la valutazione del modello usando il pacchetto Scikit-learn di Python. Abbiamo anche discusso pro e contro.

Non vedo l'ora di ricevere feedback o domande. Puoi lasciare un commento per fare una domanda e farò del mio meglio per rispondere.

Se vuoi approfondire il machine learning in Python, dai un'occhiata al corso di DataCamp Extreme Gradient Boosting with XGBoost e al Python Machine Learning: Scikit-Learn Tutorial.

Argomenti
Python

Corsi Python

Corso

Introduzione a Python

4 ore
7.1M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro