Ga naar hoofdinhoud

AdaBoost Classifier in Python

Begrijp de ensemble-aanpak, de werking van het AdaBoost-algoritme en leer een AdaBoost-model bouwen in Python.
Bijgewerkt 2 okt 2026  · 8 min lezen

Verken met AI

ChatGPTClaudePerplexity

De afgelopen jaren zijn boosting-algoritmen enorm populair geworden in data science- en machine learning-wedstrijden. De meeste winnaars van deze competities gebruiken boosting-algoritmen om een hoge nauwkeurigheid te behalen. Deze data science-wedstrijden bieden een wereldwijd platform om te leren, te ontdekken en oplossingen te bieden voor uiteenlopende zakelijke en overheidsvraagstukken. Boosting-algoritmen combineren meerdere modellen met lage nauwkeurigheid (of zwakke modellen) om modellen met hoge nauwkeurigheid (of sterke modellen) te creëren. Ze zijn inzetbaar in verschillende domeinen, zoals kredietverlening, verzekeringen, marketing en sales. Boosting-algoritmen zoals AdaBoost, Gradient Boosting en XGBoost zijn veelgebruikte machine learning-algoritmen om data science-wedstrijden te winnen. In deze tutorial leer je het AdaBoost-ensemble-boostingalgoritme en komen de volgende onderwerpen aan bod:

Ensemble Machine Learning-aanpak

Een ensemble is een samengesteld model dat een reeks zwak presterende classifiers combineert met als doel een verbeterde classifier te creëren. Hierbij brengen individuele classifiers een stem uit en wordt het uiteindelijke label bepaald via meerderheid van stemmen. Ensembles leveren meer nauwkeurigheid op dan een individuele of basis-classifier. Ensemblemethoden kunnen worden geparalleliseerd door elke basis learner aan verschillende machines toe te wijzen. Je kunt dus zeggen dat ensemble learning methoden meta-algoritmen zijn die meerdere machine learning-methoden combineren in één voorspellend model om de prestaties te verhogen. Ensemblemethoden kunnen de variantie verlagen met de bagging-aanpak, de bias verlagen met de boosting-aanpak of voorspellingen verbeteren met de stacking-aanpak.

Ensemble Machine Learning Approach
  1. Bagging staat voor bootstrap aggregatie. Het combineert meerdere learners om de variantie van schattingen te verlagen. Een voorbeeld: een random forest traint M beslisbomen; je kunt M verschillende bomen trainen op verschillende willekeurige subsets van de data en stemmen voor de uiteindelijke voorspelling. Bagging-ensemblemethoden zijn Random Forest en Extra Trees.

  2. Boosting-algoritmen vormen een set van weinig nauwkeurige classifiers om een zeer nauwkeurige classifier te creëren. Een classifier met lage nauwkeurigheid (of zwakke classifier) presteert net beter dan kop-of-munt. Een zeer nauwkeurige classifier (of sterke classifier) heeft een foutpercentage dicht bij 0. Een boostingalgoritme kan bijhouden welk model er niet in slaagde om nauwkeurig te voorspellen. Boosting-algoritmen hebben minder last van overfitting. De volgende drie algoritmen zijn enorm populair geworden in data science-wedstrijden.

    • AdaBoost (Adaptive Boosting)
    • Gradient Tree Boosting
    • XGBoost
  3. Stacking (of stacked generalization) is een ensemble learning-techniek die de voorspellingen van meerdere basisclassificatiemodellen combineert tot een nieuwe dataset. Deze nieuwe data worden gebruikt als input voor een andere classifier, die wordt ingezet om het probleem op te lossen. Stacking wordt ook wel blending genoemd.

Ensemble Machine Learning Approach

Op basis van de ordening van basis learners kunnen ensemblemethoden in twee groepen worden verdeeld: bij parallelle ensemblemethoden worden basis learners parallel gegenereerd, bijvoorbeeld Random Forest. Bij sequentiële ensemblemethoden worden basis learners sequentieel gegenereerd, bijvoorbeeld AdaBoost.

Op basis van het type basis learners kunnen ensemblemethoden in twee groepen worden verdeeld: de homogene ensemblemethode gebruikt in elke iteratie hetzelfde type basis learner. De heterogene ensemblemethode gebruikt in elke iteratie een verschillend type basis learner.

AdaBoost Classifier

AdaBoost, of Adaptive Boosting, is één van de ensemble-boostingclassifiers die in 1996 werd voorgesteld door Yoav Freund en Robert Schapire. Het combineert meerdere classifiers om de nauwkeurigheid te verhogen. AdaBoost is een iteratieve ensemblemethode. De AdaBoost-classifier bouwt een sterke classifier door meerdere zwak presterende classifiers te combineren, zodat je een sterke classifier met hoge nauwkeurigheid krijgt. Het basisidee achter AdaBoost is om de gewichten van de classifiers en de trainingsvoorbeelden in elke iteratie zo in te stellen dat ongewone observaties nauwkeurig worden voorspeld. Elk machine learning-algoritme kan als basis-classifier worden gebruikt als het gewichten op de trainingsset accepteert. AdaBoost moet aan twee voorwaarden voldoen:

  1. De classifier moet interactief worden getraind op verschillende gewogen trainingsvoorbeelden.
  2. In elke iteratie probeert hij deze voorbeelden uitstekend te fitten door de trainingsfout te minimaliseren.

Hoe werkt het AdaBoost-algoritme?

Het werkt in de volgende stappen:

  1. AdaBoost selecteert aanvankelijk willekeurig een trainingssubset.
  2. Het traint het AdaBoost-machine learning-model iteratief door de trainingsset te kiezen op basis van de juiste voorspellingen uit de vorige training.
  3. Het kent een hoger gewicht toe aan fout geclassificeerde observaties, zodat deze in de volgende iteratie een hogere kans krijgen om correct geclassificeerd te worden.
  4. Ook kent het in elke iteratie een gewicht toe aan de getrainde classifier op basis van de nauwkeurigheid daarvan. Hoe nauwkeuriger de classifier, hoe hoger het gewicht.
  5. Dit proces herhaalt zich totdat de volledige trainingsdata zonder fouten wordt gefit of totdat het opgegeven maximumaantal estimators is bereikt.
  6. Voor classificatie voer je een "stemming" uit over alle door jou gebouwde leeralgoritmen.
How does the AdaBoost algorithm work?

Een model bouwen in Python

Vereiste libraries importeren

Laten we eerst de benodigde libraries laden.

# 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

Dataset laden

Voor het bouwen van het model kun je de IRIS-dataset gebruiken, een zeer bekend multiclass-classificatieprobleem. Deze dataset bevat 4 features (kelkbladlengte, kelkbladbreedte, kroonbladlengte, kroonbladbreedte) en een target (het type bloem). De data kent drie bloemklassen: Setosa, Versicolour en Virginica. De dataset is beschikbaar in de scikit-learn-bibliotheek, of je kunt hem downloaden uit de UCI Machine Learning Library.

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

Dataset splitsen

Om het model te begrijpen is het een goed idee om de dataset op te delen in een trainingsset en een testset.

Laten we de dataset splitsen met de functie train_test_split(). Je moet 3 parameters meegeven: features, target en de grootte van de testset.

# 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

Het AdaBoost-model bouwen

Laten we het AdaBoost-model maken met Scikit-learn. AdaBoost gebruikt standaard een Decision Tree Classifier als classifier.

# 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)

"De belangrijkste parameters zijn base_estimator, n_estimators en learning_rate." (Adaboost Classifier, Chris Albon)

  • base_estimator: Dit is een zwakke learner die wordt gebruikt om het model te trainen. Standaard gebruikt het DecisionTreeClassifier als zwakke learner. Je kunt ook andere machine learning-algoritmen opgeven.
  • n_estimators: Aantal zwakke learners dat iteratief wordt getraind.
  • learning_rate: Bepaalt de bijdrage aan de gewichten van de zwakke learners. De standaardwaarde is 1.

Model evalueren

Laten we schatten hoe nauwkeurig de classifier of het model het type cultivars kan voorspellen.

De nauwkeurigheid kun je berekenen door de werkelijke waarden uit de testset te vergelijken met de voorspelde waarden.

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

Mooi, je haalde een nauwkeurigheid van 88,88%, wat als goed wordt beschouwd.

Voor verdere evaluatie kun je ook een model maken met verschillende Base Estimators.

Andere basis learners gebruiken

Ik heb SVC als basis-estimator gebruikt. Je kunt iedere ML-learner als basis-estimator gebruiken als die sample weights accepteert, zoals Decision Tree of 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

Mooi, je haalde een classificatiegraad van 95,55%, wat als goed wordt beschouwd.

In dit geval behaalt de SVC-basis-estimator een betere nauwkeurigheid dan de Decision Tree-basis-estimator.

Pluspunten

AdaBoost is eenvoudig te implementeren. Het corrigeert iteratief de fouten van de zwakke classifier en verbetert de nauwkeurigheid door zwakke learners te combineren. Je kunt veel basisclassifiers met AdaBoost gebruiken. AdaBoost is niet snel vatbaar voor overfitting. Dit blijkt uit experimentele resultaten, al is er geen sluitende verklaring voor.

Minpunten

AdaBoost is gevoelig voor ruis in de data. Het wordt sterk beïnvloed door uitschieters omdat het elk punt perfect probeert te fitten. AdaBoost is trager vergeleken met XGBoost.

Conclusie

Gefeliciteerd, je bent aan het einde van deze tutorial gekomen!

In deze tutorial heb je kennisgemaakt met Ensemble Machine Learning-aanpakken, het AdaBoost-algoritme, de werking ervan, modelbouw en evaluatie met de Python Scikit-learn-package. Ook hebben we de plus- en minpunten besproken.

Ik hoor graag je feedback of vragen. Je kunt een vraag stellen door een reactie achter te laten; ik doe mijn best om te antwoorden.

Wil je meer leren over machine learning in Python? Bekijk dan DataCamp’s cursus Extreme Gradient Boosting with XGBoost en de Python Machine Learning: Scikit-Learn Tutorial.

Onderwerpen
Python

Python-cursussen

Cursus

Introductie tot Python

4 uur
7.1M
Leer de basis van data-analyse met Python in 4 uur. Deze online cursus laat je kennismaken met de Python-interface en populaire pakketten.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken