почему мои показатели обучения и оценки Catboost Regressor не изменяются в течение итераций? - PullRequest
0 голосов
/ 29 мая 2020

Контекст Обучение очень широкого набора данных (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>
...