Ансамблевые методы

Практика вопросов интервью по машинному обучению на Python

Lisa Stuart

Data Scientist

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

  • Бэггинг (Bootstrap Aggregation)
  • Бустинг
  • Стекинг моделей
Практика вопросов интервью по машинному обучению на Python

Измерение ошибки

Практика вопросов интервью по машинному обучению на Python

Неглубокие деревья

Практика вопросов интервью по машинному обучению на Python

Глубокие деревья

Практика вопросов интервью по машинному обучению на Python

Широкие деревья

Практика вопросов интервью по машинному обучению на Python

Линейная модель

Практика вопросов интервью по машинному обучению на Python

Смещение

Допущение о линейной зависимости (ошибочное)

  • Высокое смещение
  • Недообучение
  • Слабая обобщаемость модели
  • Увеличение сложности снижает смещение
Практика вопросов интервью по машинному обучению на Python

Сложная модель

Практика вопросов интервью по машинному обучению на Python

Дисперсия

Высокосложные модели:

  • Высокая дисперсия
  • Переобучение
  • Слабая обобщаемость модели
Практика вопросов интервью по машинному обучению на Python

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

1 Источник: «Elements of Statistical Learning» — Тревор Хасти, Роберт Тибширани и Джером Фридман
Практика вопросов интервью по машинному обучению на Python

Бэггинг (Bootstrap aggregation)

  • Бутстрэп-выборки
    • Подмножество с возвращением
    • Одна строка может выбираться несколько раз
  • Для каждой выборки строится модель
  • Результаты усредняются
  • Снижает дисперсию

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Практика вопросов интервью по машинному обучению на Python

Бустинг

  • Модели строятся последовательно
  • Неверные предсказания получают больший вес
  • Снижает смещение

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Практика вопросов интервью по машинному обучению на Python

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

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

1 http://supunsetunga.blogspot.com/
Практика вопросов интервью по машинному обучению на 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
Практика вопросов интервью по машинному обучению на Python

Функции ансамблевых методов

Алгоритм Функция
Bootstrap aggregation sklearn.ensemble.BaggingClassifier()
Бустинг sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Практика вопросов интервью по машинному обучению на Python

Бэггинг vs бустинг

Техника Смещение Дисперсия
Бэггинг (Bootstrap aggregation) Увеличивает Уменьшает
Бустинг Уменьшает Увеличивает
Практика вопросов интервью по машинному обучению на Python

Тест: основные ансамблевые техники

Какое из следующих утверждений верно относительно трёх основных техник ансамблевых методов в машинном обучении? Выберите верное утверждение:

  • Методы бустинга снижают дисперсию модели.
  • Методы бустинга повышают предсказательную способность классификатора.
  • Bootstrap aggregation (бэггинг) снижает смещение модели.
  • Стекинг моделей объединяет предсказания отдельных моделей для получения более точной модели.
Практика вопросов интервью по машинному обучению на Python

Тест: основные ансамблевые техники — ответ

Какое из следующих утверждений верно относительно трёх основных техник ансамблевых методов в машинном обучении? Правильный ответ:

  • Стекинг моделей объединяет предсказания отдельных моделей для получения более точной модели. (Итоговая модель, построенная на предсказаниях нескольких отдельных моделей, почти всегда превосходит каждую из них.)
Практика вопросов интервью по машинному обучению на Python

Тест: основные ансамблевые техники — неверные ответы

Какое из следующих утверждений верно относительно трёх основных техник ансамблевых методов в машинном обучении?

  • Методы бустинга снижают дисперсию модели. (Бустинг снижает смещение модели, что одновременно увеличивает дисперсию — позволяя найти оптимальный баланс для наилучшей обобщаемости.)
  • Методы бустинга повышают предсказательную способность классификатора. (Бустинг снижает смещение модели, что не обязательно повышает предсказательную способность классификатора.)
  • Bootstrap aggregation (бэггинг) снижает смещение модели. (Бэггинг снижает дисперсию модели.)
Практика вопросов интервью по машинному обучению на Python

Давайте потренируемся!

Практика вопросов интервью по машинному обучению на Python

Preparing Video For Download...