df1 - dmc - trophimov - tips tricks and use-cases of ensembling in practice
TRANSCRIPT
![Page 1: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/2.jpg)
О себе
![Page 3: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/3.jpg)
Глоссарий● бэггинг (bagging)
○ усредение нескольких однотипных моделей
● бустинг (boosting) ○ построение цепочки моделей, дополняющих друг друга
● блэндинг (blending) ○ смешивание классификаторов (как правило, линейная смесь или кастомные правила)
● стэкинг (stacking) ○ построение классификатора над других классификаторами
![Page 4: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/4.jpg)
Что такое ансамбль?Обратимся к определению алгоритмической композиции по Ю.И.Журавлёву:
“На пальцах”: исходные объекты отображаются разными способами в некоторое пространство оценок*, далее оценки агрегируются в ответ.
*оценка != ответ
![Page 5: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/5.jpg)
Общие подходыОсновные методы:
● усреднение● линейные комбинации● смеси экспертов (сумма взвешивающих функций)● стэкинг● кастомные правила
Ансамбль работает, когда его компоненты (отображения, оценки) различны, в идеале -- исправляют ошибки друг друга.
Откуда берется различность?
![Page 6: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/6.jpg)
Источники различности [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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/7.jpg)
Источники различности [2]● разные семейства алгоритмов
○ линейные модели○ факторизационные машины○ решающие деревья○ нейросети○ kNN○ ...
● алгоритмы одного семейства, но с разными параметрами○ глубина деревьев○ количество соседей○ число скрытых слоев \ нейронов○ параметры регуляризации○ число латентных факторов○ ...
![Page 8: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/8.jpg)
Усреднение (линейная комбинация) [1]
Наиболее простой и очень мощный метод.
Особенно хорошо работает, когда: ● есть случайность в самом алгоритме обучения● используется сэмплирование● модели из разных семейств
Вариации:● взвешенное среднее● ограничения на коэффициенты (неотрицательность, нормировка)● усреднение порядков (если в разных шкалах или если l2r-задача)
![Page 9: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/9.jpg)
Усреднение (линейная комбинация) [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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/10.jpg)
Смеси экспертов
● сумма взвешенных оценок алгоритмов● вес gt -- функция от положения в признаковом пространстве● линейная комбинация -- частный случай смеси экспертов (gt = const)● как учить функции весов?
○ ограничиться некоторым семейством функций○ подбирать параметры этого семейства
● важный частный случай -- линейное семейство весовых функций
![Page 12: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/13.jpg)
Стэкинг (Stacking)
● основная идея○ пытаемся восстановить отображение F методами машинного обучения.
● можем реализовать нелинейны отображения○ RF \ GBDT \ NN
● один из самых эффективных способов○ и самый трудоемкий
● легко переобучиться○ нужно аккуратно работать с данными○ используем весь арсенал средств регуляризации
Плюсы: ● нелинейность● эффективность
Минусы:● трудоемкость● легко переобучиться
![Page 14: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/14.jpg)
Stacking \ О разделении данных● не допускайте банальных ошибок
○ обучение и валидация в каждый момент времени не должны пересекаться
● будь данных бесконечно много -- проблем бы не было○ но их ограниченное количество○ можно воспользоваться техникой, аналогичной кросс-валидации
● обязательно наличие “честного” hold-out при тестировании идей○ хотя бы просто разбиение 40\30\30
![Page 15: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/15.jpg)
Stacking \ Out-of-fold(k) prediction
● предполагаем, что уменьшение выборки на N\k ~ не изменит модель● аналогичен кросс-валидации● разбиение лучше держать фиксированным для всех моделей● для предсказания на целевом множестве
○ обучаем базовую модель на всем тренировочном множестве○ требуется хранить всего 1 модель
![Page 16: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/18.jpg)
Stacking \ Мотивация
● Стэкинг работает особенно хорошо, когда ○ признаки разной природы (вещественные \ категориальные)
■ kaggle-tradeshift■ kaggle-crowdflower
○ много целевых переменных (и есть зависимость между ними)■ kaggle-tradeshift■ kaggle-wise2014
![Page 19: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/19.jpg)
Небольшое сравнение в цифрах
Алгоритм Результат (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](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/20.jpg)
Примеры -- CrowdFlower (top1)
![Page 21: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/21.jpg)
Примеры -- CrowdFlower (top3)
![Page 22: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/22.jpg)
Примеры -- Otto (top1)
![Page 23: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/23.jpg)
Примеры -- Otto (top5)
![Page 24: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/24.jpg)
2 уровня обучения -- это хорошо, но…
![Page 25: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/25.jpg)
Что дальше?● 3 уровня обучения -- вполне реально● А можно ли сделать 4?● Будет ли это еще лучше?● Можно ли заранее оценить “полезность” компонента в смеси?● Можно ли автоматизировать процедуру построения ансамбля?
![Page 26: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/26.jpg)
Выводы● характерная эффективность ансамбля: +1-3% качества● линейные комбинации -- просты и эффективны● двухуровневое обучение -- это не страшно● проводите “честное” тестирование мета-признаков
○ хотя бы несколькими разбиениями 40/30/30● помните основное правило валидации
○ обучение и контроль не должны пересекаться● полноценный стэкинг требует аккуратности
○ дефолтный совет: out-of-fold(5)
![Page 27: DF1 - DMC - Trophimov - Tips Tricks and Use-cases of Ensembling in Practice](https://reader031.vdocuments.mx/reader031/viewer/2022030303/587c600e1a28ab633c8b5af9/html5/thumbnails/27.jpg)
Спасибо за внимание!