Найти в Дзене
Властелин машин

Вывод целевых метрик и ранняя остановка с CatBoost

Рассмотрим, как останавливать прирост количества деревьев в ходе тренировки, если не улучшается целевая метрика. Сначала сгенерируем набор данных функцией make_classification из sklearn.datasets:

Теперь разобьем данные на выборки и создадим CatBoostClassifier с отслеживаемыми метриками ['F1', 'AUC'] и валидационной метрикой 'F1' (подробнее читай здесь):

-2

По умолчанию выводится статистика измерения eval_metric на train выборке на каждой итерации обучения (по умолчанию до 1000). Однако в fit можно передать валидационную выборку и предусмотреть раннюю остановку с подбором количества деревьев с наиболее высокой метрикой. Для понимания процесса сначала опишем параметры, регулирующие обучение:

X - датасет признаков;

y - целевая колонка;

cat_features - список наименований категориальных признаков;

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

use_best_model - если истина, в результате обучения с ранней остановкой будет возвращаться модель, полученная на итерации (количеством деревьев) с лучшей метрикой на валидационной выборке (по умолчанию True);

early_stopping_rounds - устанавливает количество итераций для останова, если на их протяжении метрика качества не улучшалась по сравнению с оптимальной.

Описание других параметров можете найти здесь.

Запрограммируем алгоритм проводить валидацию и остановиться, если метрика 'F1' не улучшается в течение 80 итераций:

-3
-4

В выводе теперь отображается метрика на обучающем, валидационном датасете, а также значение на лучшей итерации из предыдущих со ссылкой на номер (после best в скобках). В конце приводится лучший результат и возвращается модель с соответствующим количеством деревьев. Можно сверить метрики:

-5

Чтобы вернуть наилучшие значения отслеживаемых метрик можно воспользоваться методом get_best_score:

-6

Следует отметить, что AUC не совпадает с предыдущим результатом, так как get_best_score возвращает лучшие метрики из всех итераций, а наша модель ориентирована на лучшую метрику 'F1'.

Полезные ссылки:

-7