Adaptive Boosting

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:

  1. Losowo dobiera się podzbiór danych treningowych i trenuje słaby klasyfikator na tych danych.
  2. Przewiduje się etykiety dla pozostałych danych treningowych i oblicza błąd klasyfikatora.
  3. Przypisuje się większą wagę danym, dla których klasyfikator zrobił błąd.
  4. Ponawia się kroki 1-3, aż do osiągnięcia zadanej liczby iteracji.
  5. 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.