Контекст Обучение очень широкого набора данных (969, 8789) с несколькими (20) категориальными функциями. Все остальные - это числа c. Чтобы проверить якобы способность Catboost работать с категориальными и отсутствующими данными, я не делал никаких условных расчетов для функций numeri c (категориальные функции не имеют пропущенных значений). Использование типа «категория» (Python) для характеристик кошки. Это проблема регрессии (прогнозирование доходов магазина).
Проблемы 1. Ни одна из моих моделей не сходится. Метрики обучения и проверки (в моем случае MAPE) просто не будут меняться при итерациях (пробовали до 1000).
Другая проблема, менее важная, но немного разочаровывающая, заключается в том, что я не получаю черчение на ноутбуке. Я выполнил (я думаю ...) все установки, которые предлагает большинство людей для решения этой проблемы, но все равно ничего.
То, что я пробовал
a) уменьшить количество функций до 500 (тот же результат) б) немного поигрался с уменьшением сложности модели, max_ctr_complexity = 5 и глубины. c) установлено plotly, ipywidgets и widgetsnbextension Любая помощь будет принята с благодарностью, я возлагал большие надежды на Catboost ...
Environment - Colab + GPU (Tesla P100) + 16GB
Код
!pip install ipywidgets
!pip install shap
!jupyter nbextension enable --py widgetsnbextension
!pip install plotly
import ipywidgets
import shap
import plotly
import plotlywidget
from catboost import CatBoostRegressor, Pool
train_pool= Pool(data = train_X, label=train_Y['y'], cat_features=cat_features)
validation_pool= Pool(data = test_X, label=test_Y['y'],cat_features=cat_features)
validation_pool_enc= Pool(data = test_X_enc, label=test_Y['y'])
extended_cat_02=CatBoostRegressor(gpu_cat_features_storage ='CpuPinnedMemory',max_ctr_complexity=5,boosting_type='Plain',task_type='GPU',loss_function='MAPE',eval_metric='MAPE',depth=6)
extended_cat_02.fit(train_pool,verbose=100,plot=True,eval_set=validation_pool)
Форма набора данных: (1293, 8789) Типы имен Отсутствующие уникальные посетители
Train_X looks like this
0 L_STORE_AGE float64 0 354
1 L_BANDEIRA category 0 3
2 L_AREA float64 0 1105
3 L_ESTACIONAMENTO category 0 2
4 L_VAGAS float64 4 27
... ... ... ... ...
8784 B_farmacias_fat float64 0 161
8785 C_farmacias_ float64 0 42
8786 C_farmacias__fat float64 0 156
8787 M_farmacias_ float64 0 15
8788 M_farmacias__fat float64 0 151
Вот что Получаю
0: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 73.4ms remaining: 1m 13s
100: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 7.13s remaining: 1m 3s
200: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 14.2s remaining: 56.5s
300: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 21.3s remaining: 49.5s
400: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 28.4s remaining: 42.4s
500: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 35.5s remaining: 35.4s
600: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 42.6s remaining: 28.3s
700: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 49.8s remaining: 21.2s
800: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 57s remaining: 14.2s
900: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 1m 4s remaining: 7.06s
999: learn: 0.8772696 test: 0.8487244 best: 0.8487244 (0) total: 1m 11s remaining: 0us
bestTest = 0.8487243652
bestIteration = 0
Shrink model to first 1 iterations.
<catboost.core.CatBoostRegressor at 0x7f5122410b00>