Методи ансамблювання

Практика співбесід з Machine Learning у Python

Lisa Stuart

Data Scientist

Техніки ансамблевого навчання

  • Bootstrap Aggregation
  • Boosting
  • Стекинг моделей
Практика співбесід з Machine Learning у Python

Вимірювання помилки

Практика співбесід з Machine Learning у Python

Низькі дерева

Практика співбесід з Machine Learning у Python

Високі дерева

Практика співбесід з Machine Learning у Python

Широкі дерева

Практика співбесід з Machine Learning у Python

Лінійна модель

Практика співбесід з Machine Learning у Python

Зміщення (Bias)

Припущення лінійного зв'язку (хибне)

  • Високе зміщення
  • Недонавчання
  • Слабка узагальнюваність моделі
  • Збільшення складності зменшує зміщення
Практика співбесід з Machine Learning у Python

Складна модель

Практика співбесід з Machine Learning у Python

Дисперсія (Variance)

Моделі високої складності:

  • Висока дисперсія
  • Перенавчання
  • Слабка узагальнюваність моделі
Практика співбесід з Machine Learning у Python

Компроміс зміщення–дисперсія

1 Джерело: Elements of Statistical Learning, Тревор Гасті, Роберт Тібширані та Джером Фрідман
Практика співбесід з Machine Learning у Python

Bagging (бутстреп-агрегація)

  • Бутстреп-відібрання
    • Підмножина з поверненням
    • Той самий рядок може бути вибраний
  • Модель для кожної вибірки
  • Усередніть вихід
  • Зменшує дисперсію

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Практика співбесід з Machine Learning у Python

Boosting

  • Кілька моделей будуються послідовно
  • Помилкові передбачення зважуються
  • Зменшує зміщення

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Практика співбесід з Machine Learning у Python

Стекинг моделей

  • Передбачення Моделі 1
  • Передбачення Моделі 2...
  • Передбачення Моделі N
  • Стекінг для найточнішої моделі
    • Використовує передбачення базових моделей (Модель N) як вхід для моделі 2-го рівня

1 http://supunsetunga.blogspot.com/
Практика співбесід з Machine Learning у Python

Пакет 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
Практика співбесід з Machine Learning у Python

Функції для ансамблів

Алгоритм Функція
Бутстреп-агрегація sklearn.ensemble.BaggingClassifier()
Boosting sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Практика співбесід з Machine Learning у Python

Bagging vs boosting

Техніка Зміщення Дисперсія
Bootstrap aggregation (Bagging) Зростає Зменшується
Boosting Зменшується Зростає
Практика співбесід з Machine Learning у Python

Основні техніки ансамблювання: тест з вибором відповіді

Яке з наведених тверджень є правдивим щодо трьох основних технік ансамблювання в машинному навчанні? Виберіть твердження, яке правдиве:

  • Методи boosting зменшують дисперсію моделі.
  • Методи boosting підвищують здатність класифікатора до передбачення.
  • Бутстреп-агрегація (bagging) зменшує зміщення моделі.
  • Стекинг моделей бере передбачення окремих моделей і поєднує їх для отримання точнішої моделі.
Практика співбесід з Machine Learning у Python

Основні техніки ансамблювання: відповідь

Яке з наведених тверджень є правдивим щодо трьох основних технік ансамблювання в машинному навчанні? Правильна відповідь:

  • Стекинг моделей бере передбачення окремих моделей і поєднує їх для отримання точнішої моделі. (Підсумкова модель, побудована на передбаченнях кількох окремих моделей, майже завжди перевершує кожну з них окремо.)
Практика співбесід з Machine Learning у Python

Основні техніки ансамблювання: неправильні відповіді

Яке з наведених тверджень є правдивим щодо трьох основних технік ансамблювання в машинному навчанні?

  • Методи boosting зменшують дисперсію моделі. (Boosting зменшує зміщення, що водночас може підвищувати дисперсію, аби знайти оптимальний баланс для кращої узагальнюваності.)
  • Методи boosting підвищують здатність класифікатора до передбачення. (Boosting зменшує зміщення, але це може або не може підвищити здатність до передбачення.)
  • Бутстреп-агрегація (bagging) зменшує зміщення моделі. (Bagging зменшує дисперсію.)
Практика співбесід з Machine Learning у Python

Давайте потренуємось!

Практика співбесід з Machine Learning у Python

Preparing Video For Download...