O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice

1.465 visualizações

Publicada em

Presentation from Moscow Data Fest #1, September 12.

Moscow Data Fest is a free one-day event that brings together Data Scientists for sessions on both theory and practice.

Link: http://www.meetup.com/Moscow-Data-Fest/

Publicada em: Ciências
  • Seja o primeiro a comentar

DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice

  1. 1. Tips, tricks and use-cases of ensembling in practice Mikhail Trofimov, mikhail.trofimov@phystech.edu, DataFest#1, 12.09.15
  2. 2. О себе
  3. 3. Глоссарий ● бэггинг (bagging) ○ усредение нескольких однотипных моделей ● бустинг (boosting) ○ построение цепочки моделей, дополняющих друг друга ● блэндинг (blending) ○ смешивание классификаторов (как правило, линейная смесь или кастомные правила) ● стэкинг (stacking) ○ построение классификатора над других классификаторами
  4. 4. Что такое ансамбль? Обратимся к определению алгоритмической композиции по Ю.И.Журавлёву: “На пальцах”: исходные объекты отображаются разными способами в некоторое пространство оценок*, далее оценки агрегируются в ответ. *оценка != ответ
  5. 5. Общие подходы Основные методы: ● усреднение ● линейные комбинации ● смеси экспертов (сумма взвешивающих функций) ● стэкинг ● кастомные правила Ансамбль работает, когда его компоненты (отображения, оценки) различны, в идеале -- исправляют ошибки друг друга. Откуда берется различность?
  6. 6. Источники различности [1] ● предобработка ○ декомпозиция данных ■ по признакам ■ по объектам ○ преобразования признаков ■ log ■ sqrt ■ TF-IDF ■ PCA ■ NMF ■ tSNE ○ комбинации групп и преобразований ● сэмплирование ○ по объектам (bootstrap, undersampling, oversampling) ○ по признакам (RSM)
  7. 7. Источники различности [2] ● разные семейства алгоритмов ○ линейные модели ○ факторизационные машины ○ решающие деревья ○ нейросети ○ kNN ○ ... ● алгоритмы одного семейства, но с разными параметрами ○ глубина деревьев ○ количество соседей ○ число скрытых слоев нейронов ○ параметры регуляризации ○ число латентных факторов ○ ...
  8. 8. Усреднение (линейная комбинация) [1] Наиболее простой и очень мощный метод. Особенно хорошо работает, когда: ● есть случайность в самом алгоритме обучения ● используется сэмплирование ● модели из разных семейств Вариации: ● взвешенное среднее ● ограничения на коэффициенты (неотрицательность, нормировка) ● усреднение порядков (если в разных шкалах или если l2r-задача)
  9. 9. Усреднение (линейная комбинация) [2] Примеры. ● стандартный метод: ○ DecisionTree + сэмплирование + усреднение ~= RandomForest ● kaggle-avito-prohibited-content: ○ kNN + линейная модель = решение в топ5 ● kaggle-malware: ○ xgboost + oversample(a=7) + усредение ● kaggle-tube-pricing: ○ NN + dropoutdropconnect + усреденение ● любой конкурс: ○ xgboost + сэмплирование(subsample, colsample_bytree) + усреднение Плюсы: ● легко реализовать, ● эффективная ● сложно переобучиться Минусы: ● довольно простой класс отображений *hint: коэффициенты смеси можно подбирать по лидерборду
  10. 10. Смеси экспертов ● сумма взвешенных оценок алгоритмов ● вес gt -- функция от положения в признаковом пространстве ● линейная комбинация -- частный случай смеси экспертов (gt = const) ● как учить функции весов? ○ ограничиться некоторым семейством функций ○ подбирать параметры этого семейства ● важный частный случай -- линейное семейство весовых функций
  11. 11. Feature-Weighted Linear Stacking (FWLS) [1]
  12. 12. Feature-Weighted Linear Stacking (FWLS) [2] ● был предложен топ2 командой в соревновании Netflix ● легко реализовать, используя готовый алгоритм линейной регрессии ○ достаточно перемножить каждую оценку на каждый “опорный” признак и решить обычную задачу регрессии ● использовался победителем в Large Scale Hierarchical Text Classification - Kaggle ● легко обобщить: ○ повышать степень полинома: ■ квадраты ■ кубы ■ … ○ факторизовывать взаимодействие ■ как в факторизационных машинах Плюсы: ● легко реализовать ● интерпретируемость Минусы: ● довольно простой класс отображений ● не сложно переобучиться
  13. 13. Стэкинг (Stacking) ● основная идея ○ пытаемся восстановить отображение F методами машинного обучения. ● можем реализовать нелинейны отображения ○ RF GBDT NN ● один из самых эффективных способов ○ и самый трудоемкий ● легко переобучиться ○ нужно аккуратно работать с данными ○ используем весь арсенал средств регуляризации Плюсы: ● нелинейность ● эффективность Минусы: ● трудоемкость ● легко переобучиться
  14. 14. Stacking О разделении данных ● не допускайте банальных ошибок ○ обучение и валидация в каждый момент времени не должны пересекаться ● будь данных бесконечно много -- проблем бы не было ○ но их ограниченное количество ○ можно воспользоваться техникой, аналогичной кросс-валидации ● обязательно наличие “честного” hold-out при тестировании идей ○ хотя бы просто разбиение 403030
  15. 15. Stacking Out-of-fold(k) prediction ● предполагаем, что уменьшение выборки на Nk ~ не изменит модель ● аналогичен кросс-валидации ● разбиение лучше держать фиксированным для всех моделей ● для предсказания на целевом множестве ○ обучаем базовую модель на всем тренировочном множестве ○ требуется хранить всего 1 модель
  16. 16. Stacking Out-of-fold(2)*M ● предполагаем, что уменьшение выборки на Nk ~ не изменит модель ● идейно схож с out-of-bag оценкой в случайном лесе ● разбиение каждый раз генерируется случайно ● для предсказания на целевом множестве ○ усредняем предсказания каждой из двух моделей на каждом из M шагов ○ требуется запоминать 2*M моделей
  17. 17. Stacking Out-of-fold (summary) ● Важно понимать, что упомянутые подходы работают, когда выборка ○ достаточно велика ○ i.i.d. ● дефолтный совет ○ использовать OOF(k), 5<k<10 ● есть случаи, когда OOF(2)*M работает немного лучше ○ kaggle-otto (решение топ2) ● подробнее можно почитать в дипломе Саши Гущина
  18. 18. Stacking Мотивация ● Стэкинг работает особенно хорошо, когда ○ признаки разной природы (вещественные категориальные) ■ kaggle-tradeshift ■ kaggle-crowdflower ○ много целевых переменных (и есть зависимость между ними) ■ kaggle-tradeshift ■ kaggle-wise2014
  19. 19. Небольшое сравнение в цифрах Алгоритм Результат (MAP@10) SVM 0.980 FM 0.981 2*SVM 0.982 2*FM 0.983 LR(FM, SVM) 0.984 RF(FM, SVM) 0.987 kaggle-avito-prohibited-content Алгоритм Результат (ROC-AUC) Vowpal Wabbit A 0.59962 Vowpal Wabbit B 0.59957 Vowpal Wabbit C 0.59954 GLMNet 0.59665 Усреднение 0.60031 Усреднение ранков 0.60187 kaggle-shoppers* * данные из http://mlwave.com/kaggle-ensembling-guide/ Характерный прирост качества, который дают ансамбли: ~1-3%
  20. 20. Примеры -- CrowdFlower (top1)
  21. 21. Примеры -- CrowdFlower (top3)
  22. 22. Примеры -- Otto (top1)
  23. 23. Примеры -- Otto (top5)
  24. 24. 2 уровня обучения -- это хорошо, но…
  25. 25. Что дальше? ● 3 уровня обучения -- вполне реально ● А можно ли сделать 4? ● Будет ли это еще лучше? ● Можно ли заранее оценить “полезность” компонента в смеси? ● Можно ли автоматизировать процедуру построения ансамбля?
  26. 26. Выводы ● характерная эффективность ансамбля: +1-3% качества ● линейные комбинации -- просты и эффективны ● двухуровневое обучение -- это не страшно ● проводите “честное” тестирование мета-признаков ○ хотя бы несколькими разбиениями 40/30/30 ● помните основное правило валидации ○ обучение и контроль не должны пересекаться ● полноценный стэкинг требует аккуратности ○ дефолтный совет: out-of-fold(5)
  27. 27. Спасибо за внимание!

×