Metody ansámblů

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Lisa Stuart

Data Scientist

Techniky ansámblového učení

  • Bootstrap Aggregace
  • Boosting
  • Skládání modelů (stacking)
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Měření chyby

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Mělké stromy

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Hluboké stromy

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Široké stromy

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Lineární model

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Odchylka (Bias)

Předpoklad lineárního vztahu (nesprávný)

  • Vysoká odchylka (bias)
  • Podtrénování (underfitting)
  • Špatná generalizace modelu
  • Vyšší složitost snižuje odchylku
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Komplexní model

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Rozptyl (Variance)

Modely s vysokou složitostí:

  • Vysoký rozptyl (variance)
  • Přetrénování (overfitting)
  • Špatná generalizace modelu
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Kompromis mezi odchylkou a rozptylem

1 Zdroj: Elements of Statistical Learning od Trevora Hastieho, Roberta Tibshiraniho a Jeroma Friedmana
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Bagging (Bootstrap agregace)

  • Bootstrapované vzorky
    • Podmnožina vybraná s opakováním
    • Stejný řádek může být vybrán vícekrát
  • Model je vytvořen pro každý vzorek
  • Výstupy jsou zprůměrovány
  • Snižuje rozptyl

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Boosting

  • Modely jsou budovány sekvenčně
  • Nesprávné předpovědi jsou váženy
  • Snižuje odchylku

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Skládání modelů (stacking)

  • Předpovědi modelu 1
  • Předpovědi modelu 2...
  • Předpovědi modelu N
  • Skládání pro nejpřesnější model
    • Používá předpovědi základních modelů (Model N) jako vstup do modelu 2. úrovně

1 http://supunsetunga.blogspot.com/
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Balíček Vecstack

# import modules
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import AdaBoostClassifier
from xgboost import XGBClassifier
from vecstack import stacking

# Create list: stacked_models
stacked_models = [BaggingClassifier(n_estimators=25, random_state=123), AdaBoostClassifier(n_estimators=25, random_state=123)]

# Stack the models: stack_train, stack_test
stack_train, stack_test = stacking(stacked_models, X_train, y_train, X_test, regression=False, mode='oof_pred_bag', 
                                   needs_proba=False, metric=accuracy_score, n_folds=4, stratified=True, shuffle=True, random_state=0, verbose=2)

# Initialize and fit 2nd level model
final_model = XGBClassifier(random_state=123, n_jobs=-1, learning_rate=0.1, n_estimators=10, max_depth=3)
final_model_fit = final_model.fit(stack_train, y_train)

# Predict: stacked_pred
stacked_pred = final_model.predict(stack_test)

# Final prediction score
print('Final prediction score: [%.8f]' % accuracy_score(y_test, stacked_pred))
1 https://towardsdatascience.com/automate-stacking-in-python-fc3e7834772e
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Funkce ansámblů

Algoritmus Funkce
Bootstrap agregace sklearn.ensemble.BaggingClassifier()
Boosting sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Bagging vs. boosting

Technika Odchylka (Bias) Rozptyl (Variance)
Bootstrap aggregace (Bagging) Zvýšení Snížení
Boosting Snížení Zvýšení
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Hlavní techniky ansámblů – testová otázka

Které z následujících tvrzení je pravdivé o třech hlavních technikách ansámblových metod v strojovém učení? Vyberte pravdivé tvrzení:

  • Boostingové metody snižují rozptyl modelu.
  • Boostingové metody zvyšují predikční schopnosti klasifikátoru.
  • Bootstrap agregace (bagging) snižuje odchylku modelu.
  • Skládání modelů bere předpovědi jednotlivých modelů a kombinuje je do modelu s vyšší přesností.
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Hlavní techniky ansámblů – testová otázka: odpověď

Které z následujících tvrzení je pravdivé o třech hlavních technikách ansámblových metod v strojovém učení? Správná odpověď je:

  • Skládání modelů bere předpovědi jednotlivých modelů a kombinuje je do modelu s vyšší přesností. (Výsledný model získaný z předpovědí několika jednotlivých modelů téměř vždy překoná výkon jednotlivých modelů.)
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Hlavní techniky ansámblů – testová otázka: nesprávné odpovědi

Které z následujících tvrzení je pravdivé o třech hlavních technikách ansámblových metod v strojovém učení?

  • Boostingové metody snižují rozptyl modelu. (Boostingové metody snižují odchylku modelu, což zároveň pomáhá zvyšovat rozptyl za účelem nalezení optimální generalizace modelu.)
  • Boostingové metody zvyšují predikční schopnosti klasifikátoru. (Boosting snižuje odchylku modelu, což může, ale nemusí zvýšit predikční schopnosti klasifikátoru.)
  • Bootstrap agregace (bagging) snižuje odchylku modelu. (Bagging snižuje rozptyl modelu.)
Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Pojďme si procvičit!

Procvičování otázek k pohovorům z oblasti Machine Learning v Pythonu

Preparing Video For Download...