AdaBoost (ang. Adaptive Boosting) to metoda klasyfikacji, która polega na wytrenowaniu wielu słabych klasyfikatorów i złożeniu ich w jeden silny klasyfikator. Słabymi klasyfikatorami nazywa się te, które nie są zbyt dokładne, ale lepsze od losowego wybierania.
AdaBoost działa w następujący sposób:
- Losowo dobiera się podzbiór danych treningowych i trenuje słaby klasyfikator na tych danych.
- Przewiduje się etykiety dla pozostałych danych treningowych i oblicza błąd klasyfikatora.
- Przypisuje się większą wagę danym, dla których klasyfikator zrobił błąd.
- Ponawia się kroki 1-3, aż do osiągnięcia zadanej liczby iteracji.
- Złożenie wszystkich słabych klasyfikatorów tworzy silny klasyfikator AdaBoost.
AdaBoost jest skuteczną metodą klasyfikacji, która dobrze radzi sobie z dużymi zbiorami danych i cechami o dużym zróżnicowaniu. Jest też odporny na przetrenowywanie i dobrze radzi sobie z niepełnymi zbiorami danych.
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
# Przygotowanie danych - załóżmy, że mamy zbiór treningowy zawierający cechy oraz etykiety
X = [[1, 2], [2, 4], [3, 6], [4, 8]] # cechy
y = [0, 0, 1, 1] # etykiety
# Utworzenie słabego klasyfikatora - w tym przypadku drzewa decyzyjnego
weak_clf = DecisionTreeClassifier(max_depth=1)
# Utworzenie klasyfikatora AdaBoost z 50 iteracjami i słabym klasyfikatorem weak_clf
clf = AdaBoostClassifier(n_estimators=50, base_estimator=weak_clf)
# Trenowanie klasyfikatora na danych treningowych
clf.fit(X, y)
# Przewidywanie etykiet dla nowych danych
predictions = clf.predict([[5, 10], [1, 3]])
# Wynik: predictions zawiera [1, 0] - czyli przewiduje, że pierwszy obiekt należy do klasy 1, a drugi do klasy 0
W tym przykładzie został utworzony klasyfikator AdaBoost z 50 iteracjami i słabym klasyfikatorem drzewa decyzyjnego o głębokości 1. Klasyfikator został wytrenowany na danych treningowych (X i y) i następnie zostały wykonane prognozy dla dwóch nowych próbek (X = [[5, 10], [1, 3]]). Klasyfikator przewiduje, że pierwsza próbka należy do klasy 1, a druga do klasy 0.