В последние несколько лет XGBoost какое-то время был первым выбором среди конкурентов Kaggle. CatBoost в последнее время приобрел большую популярность благодаря своим превосходным характеристикам. В этом посте я расскажу о некоторых замечательных функциях CatBoost.

Иллюстрация ниже основана на данных о конкуренции Kaggle Home Credit Default Risk.



Сведите к минимуму обработку данных

Очистка данных - всегда самая утомительная и трудоемкая часть моделирования, а также критически важный этап. Одним из основных преимуществ CatBoost является то, что он очень хорошо справляется с характеристиками категорий. Чтобы запустить CatBoost, единственное, о чем нужно позаботиться, - это пропущенное значение. В приведенном ниже примере все пропущенные значения просто заполняются значением -999 (идеальный способ вменения пропущенных значений). При минимальной очистке данных модель все же может дать впечатляющий результат.

Стандартная модель с меньшим количеством настроек

CatBoost имеет предварительно определенное значение по умолчанию. Эти параметры по умолчанию хорошо выбраны, поэтому Catboost может легко превзойти точно настроенные LightGBM и XGBoost без настройки.

Как и XGBoost, CatBoost основан на трех алгоритмах. Древовидная модель обычно имеет несколько параметров, которые необходимо настроить, например минимальный лист, максимальную глубину, количество деревьев и т. Д. CatBoost, с другой стороны, имеет только два основных параметра, которые необходимо настроить (количество итераций и скорость обучения). .

Без настройки параметров CatBoost может генерировать оценку AUC около 0,775 в соревновании по жилищному кредитованию, что является отличным результатом, учитывая, что выигрышным решением является 0,805.

Визуализация во время тренировки

Поддержка CatBoost отображает прогресс тренировки во время тренировки. Визуализация помогает определить, когда модель становится переоборудованной, поэтому можно выполнить соответствующую настройку параметров. Модуль визуализации можно настроить для построения различных показателей оценки, и он не обязательно должен совпадать с функцией потерь модели. Можно выбрать широкий диапазон показателей оценки, таких как AUC, оценка F1, лог-потери, точность и т. Д. Ниже на графике отслеживается AUC как обучения, так и теста, модель начинает переобучаться после 500 итераций. Проблема переоборудования может быть решена с помощью параметра регуляризации или настройки параметра ранней остановки.

Быстрый процесс обучения

CatBoost также поддерживает обучение на графическом процессоре, что значительно сокращает время обучения. График выше демонстрирует обучение 400 МБ данных с 1000 итераций на GPU, это заняло 2 минуты 10 секунд, это в 4 раза быстрее, чем обучение на CPU.

Объяснение модели и важность функции

Главный недостаток алгоритма машинного обучения - непрозрачность. Трудно объяснить, как особенности влияют на результат модели. CaBoost включил библиотеку Shap, чтобы объяснить важность функций. Shap - это независимый пакет, который измеряет влияние функций на результаты модели на уровне наблюдения и в целом.



На приведенном ниже графике показано, как функции влияют на результат модели для одного наблюдения. Характеристики в синей модели привода выводятся в сторону меньшего, а функции в красной выталкивающей модели выводятся выше.

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

На графике App_EXT_SOURCE (внешние оценки) входят в тройку самых важных функций. Для App_EXT_SOURCE_2 более высокое значение (красный) имеет отрицательное значение формы, а низкое исходное значение (синий) имеет положительное значение формы. Это означает, что более высокий внешний балл с меньшей вероятностью станет дефолтом.

Поддержка снимков

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

Еще одно преимущество поддержки моментальных снимков - это возможность адаптировать динамическую скорость обучения во время обучения модели. Например, вместо обучения 1000 итераций за раз, мы можем начать обучение на первых 500 итерациях со скоростью обучения 0,05, а затем продолжить обучение остальным с меньшей скоростью обучения 0,01.

Определите вес наблюдения и вес класса

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

Конец примечания:

Основная функция CatBoost использует тот же синтаксис, что и sklearn, поэтому ее легко понять. CatBoost может предложить множество замечательных преимуществ, однако полностью использовать его - непростая задача. Официальный документ CatBoost слишком краток и труден для понимания. Библиотека все еще относительно новая, поэтому иногда могут возникать ошибки или совместимые проблемы.