Extreme Gradient Boosting

XGBoost Classifier (ang. Extreme Gradient Boosting) to metoda klasyfikacji oparta na algorytmie gradient boosting, ale z kilkoma ulepszeniami, które pozwalają na lepsze wyniki i szybsze trenowanie. XGBoost jest szczególnie popularny w konkursach z udziałem modeli machine learning, gdzie często osiąga najlepsze wyniki.

XGBoost Classifier działa w następujący sposób:

  1. Inicjalizowany jest model zerowy, który przewiduje etykiety dla całego zbioru danych.
  2. Dla każdej iteracji:
    1. Oblicza się różnicę między przewidywaną a faktyczną etykietą dla każdego elementu zbioru danych.
    2. Trenuje się słaby klasyfikator, tak by minimalizował błąd.
    3. Złożenie nowego klasyfikatora do modelu.
    4. Aktualizacja modelu – dodanie nowego klasyfikatora do modelu zerowego.

XGBoost Classifier posiada szereg hiperparametrów, które pozwalają na dostosowanie modelu do konkretnych danych i celów. Możliwe jest np. określenie maksymalnej głębokości drzew decyzyjnych, ilości drzew czy funkcji straty.

from xgboost import XGBClassifier

# 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 klasyfikatora XGBoost z 50 drzewami decyzyjnymi
clf = XGBClassifier(n_estimators=50)

# 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 XGBoost z 50 drzewami decyzyjnymi. 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.