Co je boosting?

Extreme Gradient Boosting with XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Přehled boostingu

  • Není to konkrétní algoritmus strojového učení
  • Koncept aplikovatelný na sadu modelů strojového učení
    • „Meta-algoritmus"
  • Ensemble meta-algoritmus pro převod slabých modelů na silný model
Extreme Gradient Boosting with XGBoost

Slabé a silné modely

  • Slabý model: algoritmus ML, který je jen o něco lepší než náhoda
    • Příklad: rozhodovací strom s přesností mírně nad 50 %
  • Boosting převádí kolekci slabých modelů na silný model
  • Silný model: libovolný algoritmus, který lze ladit k dosažení dobrého výkonu
Extreme Gradient Boosting with XGBoost

Jak boosting funguje

  • Iterativní trénování slabých modelů na podmnožinách dat
  • Vážení každé slabé predikce podle výkonu příslušného modelu
  • Sloučení vážených predikcí do jediné výsledné předpovědi
  • ... která je výrazně lepší než jednotlivé predikce samotné!
Extreme Gradient Boosting with XGBoost

Příklad boostingu

1 https://xgboost.readthedocs.io/en/latest/model.html
Extreme Gradient Boosting with XGBoost

Vyhodnocení modelu pomocí křížové validace

  • Křížová validace: Robustní metoda pro odhad výkonu modelu na nových datech
  • Generuje mnoho nepřekrývajících se rozdělení trénovacích/testovacích dat
  • Vykazuje průměrný výkon na testovací sadě napříč všemi rozděleními
Extreme Gradient Boosting with XGBoost

Příklad křížové validace v XGBoost

import xgboost as xgb
import pandas as pd

churn_data = pd.read_csv("classification_data.csv")
churn_dmatrix = xgb.DMatrix(data=churn_data.iloc[:,:-1], label=churn_data.month_5_still_here)
params={"objective":"binary:logistic","max_depth":4}
cv_results = xgb.cv(dtrain=churn_dmatrix, params=params, nfold=4, num_boost_round=10, metrics="error", as_pandas=True)
print("Accuracy: %f" %((1-cv_results["test-error-mean"]).iloc[-1]))
Accuracy: 0.88315
Extreme Gradient Boosting with XGBoost

Pojďme si procvičit!

Extreme Gradient Boosting with XGBoost

Preparing Video For Download...