Gradient Boosting & XGBoost

 

Created by @ShirinGlander

codecentric.ai

BOOTCAMP

- Machine Learning Basics -

https://youtu.be/ieF_QjVUNEQ

Supervised

Machine Learning

Klassifikation

Regression

Algorithmus

GBM

Gradient Boosting Machines (GBM)

GBM sind

Emsemble-Learner

Meistens aus Entscheidungs-bäumen!

Gradient Boosting

mit Entscheidungsbäumen

Knoten/Äste

Blätter

wenn ... dann ...

wenn ... dann ...

Feature

Basis-Modell

Ergebnis / Klasse

Kombinieren von Entscheidungsbäumen

Bagging /
Bootstrap Aggregierung
Boosting
Training auf zufälligen Stichproben aus der Datenmenge (mit oder ohne Zurücklegen) Training auf zufälligen gewichteten Stichproben aus der Datenmenge mit Zurücklegen (falsche Vorhersagen erhöhen Gewicht um schwierige Fälle besonders zu beachten)
Parallel Sequenziell

Stochastisches Gradient boosting

Boosting

Basis-Modell

Vorhersage

Gewichtung

  • Vorhersage           Gewicht

 

  • Vorhersage           Gewicht

Optimierung mit gradienten

Neuronale Netze

https://youtu.be/Z42fE0MGoDQ

Loss-Funktion

Optimierung mit gradienten

Gradient Boosting

Basis-Modell

Vorhersage

vs

Wirklichkeit

Loss-Funktion

Gradient

Hyper-Parameter im Gradient Boosting

  • Lernrate & Schrumpfung
  • Loss-Funktion
  • Anzahl Iterationen (Bäume)
  • Anzahl Instanzen pro Blatt
  • Baum-Komplexität & -Tiefe
  • Anteil Instanzen &
  • Anteil Feature für stochastisches Boosting
  • ...

Gradient Boosting in Python

mit Scikit-Learn

from sklearn.ensemble import GradientBoostingClassifier

gbm = GradientBoostingClassifier(
    loss = "deviance",
    n_estimators = 200,
    min_samples_split = 3,
    min_samples_leaf = 3,
    max_depth = 3,
    random_state = 42
)
gbm.fit(X_train, y_train)

Gradient boosting in Python

mit H2O

from h2o.estimators.gbm import H2OGradientBoostingEstimator

gbm_h2o = H2OGradientBoostingEstimator(
    max_depth = 3,
    min_rows = 3,
    seed = 42
)

gbm_h2o.train(x = hf_X, 
         y = hf_y, 
         training_frame = train, 
         validation_frame = valid)

GBM vs

XGBoost

Extreme Gradient Boosting

"Gewinner" vieler Kaggle Competitions

Gradienten 2. Ordnung

Schnell!

Regularisierung (L1 & L2)

Parallelisierbar!

Verteiltes Training!

Gradient boosting in Python

mit XGBoost

import xgboost as xgb

# Sklearn Implementierung

xgboost = xgb.XGBClassifier()
xgboost.fit(X_train,y_train)

# XGBoost nativ

params = {'max_depth': 3}
cv_results = xgb.cv(dtrain=data_dmatrix, 
                    params=params, nfold=3,
                    num_boost_round=50,
                    early_stopping_rounds=10,
                    metrics="auc", 
                    as_pandas=True, 
                    seed=42)

Gradient boosting in Python

mit XGBoost & H2O

from h2o.estimators import H2OXGBoostEstimator

xgb_h2o = H2OXGBoostEstimator(
    max_depth = 3,
    min_rows = 3,
    seed = 42
)

xgb_h2o.train(x = hf_X, 
         y = hf_y, 
         training_frame = train, 
         validation_frame = valid)
  • => auch in H2Os AutoML Funktion enthalten!

Vor- & Nachteile von Gradient Boosting

Con
Blackbox Modelle
schlechte Performance bei seltenen Klassen
anfällig für Overfitting
sensitiv für Noise & Ausreißer
viele Hyperparameter
PRO
schnell & leistungsfähig
parallelisierbar
liefert Wahrscheinlichkeiten
flexibel
robust

Gradient Boosting & XGBoost

 

Created by @ShirinGlander

codecentric.ai

BOOTCAMP

- Machine Learning Basics -

Machine Learning Basics - GBM

By Shirin Glander

Machine Learning Basics - GBM

  • 5,288
Loading comments...

More from Shirin Glander