+ All Categories
Home > Science > DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice

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

Date post: 16-Jan-2017
Category:
Upload: moscowdatafest
View: 1,172 times
Download: 3 times
Share this document with a friend
27
Tips, tricks and use-cases of ensembling in practice Mikhail Trofimov, [email protected] , DataFest#1, 12.09.15
Transcript
Page 1: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice

Tips, tricks and use-cases of ensembling in practice

Mikhail Trofimov,[email protected],

DataFest#1,12.09.15

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

О себе

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

Глоссарий● бэггинг (bagging)

○ усредение нескольких однотипных моделей

● бустинг (boosting) ○ построение цепочки моделей, дополняющих друг друга

● блэндинг (blending) ○ смешивание классификаторов (как правило, линейная смесь или кастомные правила)

● стэкинг (stacking) ○ построение классификатора над других классификаторами

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

Что такое ансамбль?Обратимся к определению алгоритмической композиции по Ю.И.Журавлёву:

“На пальцах”: исходные объекты отображаются разными способами в некоторое пространство оценок*, далее оценки агрегируются в ответ.

*оценка != ответ

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

Общие подходыОсновные методы:

● усреднение● линейные комбинации● смеси экспертов (сумма взвешивающих функций)● стэкинг● кастомные правила

Ансамбль работает, когда его компоненты (отображения, оценки) различны, в идеале -- исправляют ошибки друг друга.

Откуда берется различность?

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

Источники различности [1]● предобработка

○ декомпозиция данных■ по признакам■ по объектам

○ преобразования признаков ■ log ■ sqrt ■ TF-IDF■ PCA■ NMF■ tSNE

○ комбинации групп и преобразований● сэмплирование

○ по объектам (bootstrap, undersampling, oversampling)○ по признакам (RSM)

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

Источники различности [2]● разные семейства алгоритмов

○ линейные модели○ факторизационные машины○ решающие деревья○ нейросети○ kNN○ ...

● алгоритмы одного семейства, но с разными параметрами○ глубина деревьев○ количество соседей○ число скрытых слоев \ нейронов○ параметры регуляризации○ число латентных факторов○ ...

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

Усреднение (линейная комбинация) [1]

Наиболее простой и очень мощный метод.

Особенно хорошо работает, когда: ● есть случайность в самом алгоритме обучения● используется сэмплирование● модели из разных семейств

Вариации:● взвешенное среднее● ограничения на коэффициенты (неотрицательность, нормировка)● усреднение порядков (если в разных шкалах или если l2r-задача)

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

Усреднение (линейная комбинация) [2]Примеры.

● стандартный метод:○ DecisionTree + сэмплирование + усреднение ~= RandomForest

● kaggle-avito-prohibited-content:○ kNN + линейная модель = решение в топ5

● kaggle-malware:○ xgboost + oversample(a=7) + усредение

● kaggle-tube-pricing:○ NN + dropout\dropconnect + усреденение

● любой конкурс:○ xgboost + сэмплирование(subsample, colsample_bytree) + усреднение

Плюсы: ● легко реализовать, ● эффективная● сложно переобучиться

Минусы:● довольно простой класс отображений

*hint: коэффициенты смеси можно подбирать по лидерборду

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

Смеси экспертов

● сумма взвешенных оценок алгоритмов● вес gt -- функция от положения в признаковом пространстве● линейная комбинация -- частный случай смеси экспертов (gt = const)● как учить функции весов?

○ ограничиться некоторым семейством функций○ подбирать параметры этого семейства

● важный частный случай -- линейное семейство весовых функций

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

Feature-Weighted Linear Stacking (FWLS) [1]

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

Feature-Weighted Linear Stacking (FWLS) [2]● был предложен топ2 командой в соревновании Netflix● легко реализовать, используя готовый алгоритм линейной регрессии

○ достаточно перемножить каждую оценку на каждый “опорный” признак и решить обычную задачу регрессии

● использовался победителем в Large Scale Hierarchical Text Classification - Kaggle● легко обобщить:

○ повышать степень полинома:■ квадраты■ кубы■ …

○ факторизовывать взаимодействие■ как в факторизационных машинах

Плюсы: ● легко реализовать● интерпретируемость

Минусы:● довольно простой класс отображений● не сложно переобучиться

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

Стэкинг (Stacking)

● основная идея○ пытаемся восстановить отображение F методами машинного обучения.

● можем реализовать нелинейны отображения○ RF \ GBDT \ NN

● один из самых эффективных способов○ и самый трудоемкий

● легко переобучиться○ нужно аккуратно работать с данными○ используем весь арсенал средств регуляризации

Плюсы: ● нелинейность● эффективность

Минусы:● трудоемкость● легко переобучиться

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

Stacking \ О разделении данных● не допускайте банальных ошибок

○ обучение и валидация в каждый момент времени не должны пересекаться

● будь данных бесконечно много -- проблем бы не было○ но их ограниченное количество○ можно воспользоваться техникой, аналогичной кросс-валидации

● обязательно наличие “честного” hold-out при тестировании идей○ хотя бы просто разбиение 40\30\30

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

Stacking \ Out-of-fold(k) prediction

● предполагаем, что уменьшение выборки на N\k ~ не изменит модель● аналогичен кросс-валидации● разбиение лучше держать фиксированным для всех моделей● для предсказания на целевом множестве

○ обучаем базовую модель на всем тренировочном множестве○ требуется хранить всего 1 модель

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

Stacking \ Out-of-fold(2)*M

● предполагаем, что уменьшение выборки на N\k ~ не изменит модель● идейно схож с out-of-bag оценкой в случайном лесе● разбиение каждый раз генерируется случайно● для предсказания на целевом множестве

○ усредняем предсказания каждой из двух моделей на каждом из M шагов○ требуется запоминать 2*M моделей

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

Stacking \ Out-of-fold (summary)

● Важно понимать, что упомянутые подходы работают, когда выборка○ достаточно велика○ i.i.d.

● дефолтный совет○ использовать OOF(k), 5<k<10

● есть случаи, когда OOF(2)*M работает немного лучше○ kaggle-otto (решение топ2)

● подробнее можно почитать в дипломе Саши Гущина

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

Stacking \ Мотивация

● Стэкинг работает особенно хорошо, когда ○ признаки разной природы (вещественные \ категориальные)

■ kaggle-tradeshift■ kaggle-crowdflower

○ много целевых переменных (и есть зависимость между ними)■ kaggle-tradeshift■ kaggle-wise2014

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

Небольшое сравнение в цифрах

Алгоритм Результат (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%

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

Примеры -- CrowdFlower (top1)

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

Примеры -- CrowdFlower (top3)

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

Примеры -- Otto (top1)

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

Примеры -- Otto (top5)

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

2 уровня обучения -- это хорошо, но…

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

Что дальше?● 3 уровня обучения -- вполне реально● А можно ли сделать 4?● Будет ли это еще лучше?● Можно ли заранее оценить “полезность” компонента в смеси?● Можно ли автоматизировать процедуру построения ансамбля?

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

Выводы● характерная эффективность ансамбля: +1-3% качества● линейные комбинации -- просты и эффективны● двухуровневое обучение -- это не страшно● проводите “честное” тестирование мета-признаков

○ хотя бы несколькими разбиениями 40/30/30● помните основное правило валидации

○ обучение и контроль не должны пересекаться● полноценный стэкинг требует аккуратности

○ дефолтный совет: out-of-fold(5)

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

Спасибо за внимание!


Recommended