Автор | Феликс Реверт Компилировать|ВКонтакте Источник | К науке о данных
вводить
После того, как я пролистал документацию CatBoost, я был поражен этой мощной структурой. CatBoost не только создает одну из самых точных моделей на любом наборе данных, который вы ему подаете, где требуется лишь минимальная подготовка данных. Он также предоставляет лучшие на сегодняшний день инструменты интерпретации с открытым исходным кодом и способ быстрого создания моделей.
CatBoost вызвал революцию в машинном обучении. Научившись использовать его, вы улучшите свои навыки. Но что еще более интересно, CatBoost представляет угрозу для статус-кво специалистов по данным (таких как я), потому что я думаю, что построение модели с высокой точностью на основе набора данных утомительно. Но CatBoost меняет это. Это делает высокоточные модели доступными для всех.
Создавайте высокоточные модели с головокружительной скоростью
Установить
Вы пробовали установить XGBoost на свой ноутбук? Тогда вы должны знать, насколько это хлопотно. Но настроить и запустить CatBoost на другом конце совсем несложно.
pip install catboost
Это установлено.
подготовка данных
В отличие от большинства моделей машинного обучения, доступных сегодня, CatBoost требует минимальной подготовки данных. Он может обрабатывать:
-
Отсутствующие значения для числовых переменных
-
Категориальные переменные без кодирования
Примечание. Для категориальных переменных необходимо заранее обработать отсутствующие значения. Замените новой категорией «отсутствует» или наиболее часто используемой категорией.
-
Для пользователей GPU он также может обрабатывать текстовые переменные.
К сожалению, я не могу протестировать эту функцию, потому что работаю на ноутбуке без графического процессора.
Построить модель
Как и в случае с XGBoost, у вас есть знакомый синтаксис sklearn и некоторые дополнительные функции, характерные для CatBoost.
from catboost import CatBoostClassifier # 或者 CatBoostRegressor
model_cb = CatBoostClassifier()
model_cb.fit(X_train, y_train)
В качестве альтернативы, если вам нужна визуализация того, как модель обучается и начинает ли она переобучать, используйте plot=True и вставьте набор тестов в параметр eval_set:
from catboost import CatBoostClassifier # 或者 CatBoostRegressor
model_cb = CatBoostClassifier()
model_cb.fit(X_train, y_train, plot=True, eval_set=(X_test, y_test))
Обратите внимание, что вы можете отображать несколько метрик одновременно, даже более удобные для пользователя метрики, такие как точность или прецизионность. Поддерживаемые метрики перечислены здесь:кот boost.love/docs/con обзор…
См. пример ниже:
Вы даже можете использовать перекрестную проверку, чтобы наблюдать среднее значение и стандартное отклонение точности модели для разных разделений:
тонкая настройка
CatBoost очень похож на XGBoost. Чтобы правильно настроить модель, сначалаearly_stopping_roundsСделайте настройку (например, 10 или 50) и начните настройку параметров модели.
скорость обучения
нет графического процессора
Из их тестов видно, что CatBoost быстрее, чем XGBoost, и относительно похож на LightGBM. Известно, что LightGBM быстро обучается.
Имеет графический процессор
Однако когда дело доходит до графических процессоров, происходит настоящее волшебство.
Даже с относительно старыми графическими процессорами, такими как K40 (выпущенный в 2013 году), время обучения будет как минимум в 4 раза быстрее, в то время как другие более новые процессоры могут быть быстрее до 40 раз.
Пояснение к модели
Авторы CatBoost понимают, что это не просто игра на точность. Зачем использовать CatBoost, когда доступны XGBoost и LightGBM. Итак, с точки зрения интерпретируемости, CatBoost предоставляет функции из коробки.
важность функции
CatBoost предоставляет 3 различных метода: PredictionValuesChange, LossFunctionChange и InternalFeatureImportance. Подробная документация здесь:кот boost.love/docs/con обзор…
местная разборчивость
Для локального понимания CatBoost поставляется с SHAP, который часто считается единственным надежным методом.
shap_values = model.get_feature_importance(Pool(X, y), type='ShapValues')
Также предоставляются официальные учебные пособия:GitHub.com/cat boost/graph…
предельный эффект
Это мой фаворит до сих пор. С превращением высокой точности в товар (особенно с появлением AutoML) сегодня становится все более важным понимать эти высокоточные модели на более глубоком уровне.
Как показывает опыт, следующие диаграммы стали стандартом для модельного анализа. CatBoos предоставляет его прямо в упаковке.
На этом значке вы наблюдаете
-
Зеленый - это распределение данных
-
Синий — среднее целевое значение для каждого бина.
-
Оранжевый — это среднее прогнозируемое значение для каждого бина.
-
Красный — график частичной зависимости (Partial Dependence)
Использование моделей CatBoost в производстве
Внедрение вашей модели в производство становится очень простым. Вот как можно экспортировать модель CatBoost.
Используйте метод .save_model() для получения следующей справочной документации:
Экспорт для Python и C++
model_cb.save_model(‘model_CatBoost.py’, format=’python’, pool=X_train)
После выполнения в вашем репозитории будет сгенерированный файл .py следующим образом:
На данный момент модель готова к производству! И вам не нужно настраивать определенную среду на машине, чтобы получать новые баллы. Все, что вам нужно, это Python 3!
вывод бинарного файла
Двоичный, очевидно, самый быстрый способ получить новые данные. Измените код для вывода файла .cbm.
Используйте следующий код для перезагрузки модели при загрузке:
from catboost import CatBoost
model = CatBoost()
model.load_model('filename', format='cbm')
Другие полезные советы
Verbose = 50
Обычно в большинстве моделей есть подробные входные данные, чтобы увидеть, как идет ваш процесс. У CatBoost он тоже есть, но чуть лучше остальных. Например, использование verbose=50 будет показывать ошибку обучения каждые 50 итераций, а не каждую итерацию, так как это может раздражать, если итераций много.
Обучите ту же модель с verbose=10. Гораздо лучше проверить.
Обратите внимание, что оставшееся время также отображается.
Сравнение моделей
Точная настройка модели требует времени. Обычно у вас, вероятно, есть несколько хороших списков параметров. Чтобы улучшить результаты, вы даже можете изучить модели с различными наборами параметров для сравнения, чтобы помочь вам определиться с окончательным списком параметров для выбора.
Сохраняйте модель во время обучения
У вас большой набор данных и вы боитесь тренироваться слишком долго? Вы можете сохранить модель в любое время, поэтому любые перерывы в вашем процессе не обязательно означают переустановку модели! Вот соответствующие документы:кот boost.love/docs/fe А вдруг…
учебные материалы
Документация Catboost очень полезна, и их документация может помочь вам, даже если вы думаете, что знаете много моделей.
Оригинальная ссылка:к data science.com/why-yes-yes…
Добро пожаловать на сайт блога Panchuang AI:panchuang.net/
sklearn машинное обучение китайские официальные документы:sklearn123.com/
Добро пожаловать на станцию сводки ресурсов блога Panchuang:docs.panchuang.net/