Ques/Help/Req Autobinary: библиотека для простого обучения «деревяшек» — Part 1

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
Autobinary: библиотека для простого обучения «деревяшек» — Part 10


Мы – команда «Модели управления Жизненным Циклом Клиента». Ранее мы рассказывали о нашей работе и задачах вот здесь. Сегодня мы расскажем вам про инструмент, которым пользуемся для построения моделей и оптимизации.

Как все начиналось

Рождение autobinary, как и многих других фреймворков, началось с автоматизации рутинных задач. На тот момент мы создавали много look-alike моделей (в основе — модель бинарной классификации) по разным продуктам банка. Одни и те же скрипты писать было скучно. Более того – накопилось много разрозненных скриптов, которые хотелось привести к единому формату.

Начали мы с алгоритма XGBoost и модели бинарной классификации. Сначала сделали функционал для кросс-валидации, далее сделали методы для получения различных метрик, важностей факторов, построения графиков и т.д. И, в результате, назвали библиотеку autobinary, подразумевая, что это фреймворк для простого обучения бинарной классификации на бустинге.

Что сейчас?

Шло время, появлялось все больше разнообразных задач.

Теперь библиотека поддерживает не только задачи бинарной классификации, но и регрессии, мультиклассовой классификации, а также uplift задачи на различных алгоритмах, например, XGBoost, Catboost, LightGBM, Decision Tree, Random Forest.

Функционал библиотеки расширился, а название осталось тем же.

Помимо обучения самих моделей, реализованы различные методы, которые позволяют построить стабильную модель с небольшим количеством факторов, а также интерпретировать результаты обучения модели.

Возможности Autobinary1
Возможности AutobinaryБазовый анализ факторов

Зачастую факторы имеют разные распределения. Для проведения быстрого однофакторного анализа для задач бинарной классификации и регрессии мы используем графики фактора против таргета.

Класс TargetPlot позволяет разбить фактор по заданному количеству бакетов с настройкой по отсечениям, специальным значениям и др.

Autobinary: библиотека для простого обучения «деревяшек» — Part 12
Фактор Age из соревнования «титаник» для задачи бинарной классификации3
Фактор Age из соревнования «титаник» для задачи бинарной классификации
Autobinary: библиотека для простого обучения «деревяшек» — Part 14
Фактор LotArea из соревнования «House Price» для задачи регрессии5
Фактор LotArea из соревнования «House Price» для задачи регрессииPipeline обработки

Типичная ошибка при моделировании – это лики в данных. Например, моделист сначала заполняет пустые значения в фичах средним значением, а только потом разделяет выборку на train и test. В результате происходит смещение среднего, и в нем содержится информация как о train, так и о test.

Правильная стратегия в этом случае – сначала разделить данные, посчитать среднее на train, а потом этим средним, посчитанном на train, заменить пустые значения и на train и на test.

Если шагов обработки много, то за всем этим становится сложно следить. Именно поэтому обычно используют pipeline из sklearn.

Таким образом, пайплайн сначала обучается на train, а потом применяется и на train и на test.

Мы для быстрых тестов сделали базовый пайплайн обработки, который принимает на вход категориальные и числовые фичи в виде списков и делает следующее:


  • Пустые значения заполняет большим отрицательным числом для числовых


  • Категориальные фичи обрабатываются с помощью CatBoostEncoder из библиотеки Category Encoders.

P.S. Рекомендую попробовать разные энкодеры из этой библиотеки, они действительно очень удобные и показывают хорошее качество.

Кросс-валидация

Кросс-валидацию мы обычно используем для отбора факторов, подбора параметров, или, в целом, для проверки модели на стабильность, расчета важностей, расчета средних метрик и т.д.

Давайте посмотрим детально на конкретный пример – кросс-валидация для задачи бинарной классификации «Титаник» с использованием Catboost.

Загружаем данные:

Autobinary: библиотека для простого обучения «деревяшек» — Part 16


Задаем списки числовых и категориальных фичей, а также название таргета:

Autobinary: библиотека для простого обучения «деревяшек» — Part 17


Делим выборку на train и test. На train будем учить кросс-валидацию:

Autobinary: библиотека для простого обучения «деревяшек» — Part 18


Задаем пайплайн обработки данных, в который передаем списки фичей:

Autobinary: библиотека для простого обучения «деревяшек» — Part 19


Передача пайплайна позволяет упростить преобразование данных и избежать ликов.

Если у нас 5 фолдов, как в этом примере, то на каждой итерации кросс-валидации пайплайн заново переобучается на 4 частях, а потом применяется и к 4 частям и к одной части.

Так как используется pipeline из sklearn, то можно сделать его сколь угодно сложным, а также некоторые части можно написать самому.

Теперь задаем параметры модели, параметры для обучения модели, сам инстанс модели, а также стратегию кросс-валидации:

Autobinary: библиотека для простого обучения «деревяшек» — Part 110


Стратегию кросс-валидации можно задать любую из sklearn, или написать свою!

Теперь передаем в модель все параметры, которые задали ранее:

Autobinary: библиотека для простого обучения «деревяшек» — Part 111



  • Main_estimator – инстанс модели, которую будем обучать


  • Main_fit_params – параметры обучения модели


  • Main_prep_pipe – пайплайн обработки данных


  • Main_features – все фичи, на которых будет учиться модель

Почему main? Есть некоторые uplift-модели, которые состоят из двух моделей. Поэтому придется передавать сразу две модели в класс AutoTrees. Но об этом мы вам расскажем в следующих частях.


  • X_train, y_train – выборка и целевая метка


  • Main_metric – метрика, которая будет выводиться для справки на каждом шаге кросс-валидации и усредняться в методе model.get_mean_cv_scores().


  • Model_type – модель, которую обучаем.

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

Пример логов обучения одного фолда показан ниже:

Autobinary: библиотека для простого обучения «деревяшек» — Part 112


Особенность обучения бустингов нашей библиотекой в том, что мы передаем в параметрах модели большое количество итераций (в данном случае 1000), а также в параметрах обучения указываем early_stopping_rounds (в данном случае 200). В результате, на каждом фолде срабатывает остановка, как только модель начинает переобучаться.

Результаты кросс-валидации

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

В первую очередь это средняя метрика, которую задали в main_metric. Для этой задачи это gini (2*roc_auc-1):

Autobinary: библиотека для простого обучения «деревяшек» — Part 113


Также это количество итераций на каждом фолде:

Autobinary: библиотека для простого обучения «деревяшек» — Part 114


Дополнительная информация по метрикам на каждом из фолдов:

Autobinary: библиотека для простого обучения «деревяшек» — Part 115


Важности факторов:

Autobinary: библиотека для простого обучения «деревяшек» — Part 116


Видов важностей у бустингов много, мы взяли стандартные gain важности.

Графики roc-кривых:

Autobinary: библиотека для простого обучения «деревяшек» — Part 117


И, наконец, графики обучения модели на всех фолдах. Для примера на первом фолде:

Autobinary: библиотека для простого обучения «деревяшек» — Part 118
Autobinary: библиотека для простого обучения «деревяшек» — Part 119


Черная прямая указывает на место, где сработала остановка из-за переобучения!

Итоги

На этом все!

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

В следующих частях мы расскажем вам об отборе факторов, подборе параметров и других интересных особенностях нашей библиотеки!

Над библиотекой работали:

 
198 175Темы
635 146Сообщения
3 618 415Пользователи
еу4уууеууеНовый пользователь
Верх