Size: a a a

2018 December 13

PB

Pavel Baidaus in catboost_ru
с 1 запустить
источник

AK

Andrei Khropov in catboost_ru
Dmitri Lihhatsov
очень много катфич, да. Но при тренировке на CPU такой проблемы нет..
Вы используете опцию used_ram_limit ?
источник

DL

Dmitri Lihhatsov in catboost_ru
Pavel Baidaus
Добрый день. Возник вопрос при обучении модели мультикласификатора на 4 класса CatBoost выдает accuracy 0,546 при запуске оценки отдельно на accuracy_score показывает 0,44. Это баг?
Когда вы обучаете модель, Катбуст пишет accuracy на момент обучения, стараясь при этом не переобучаться. Если вы после этого запускаете accuracy_score на том же самом датасете, на котором тренировались, то Катбуст не знает, что это тот самый датасет, на котором он обучался, поэтому просто делает предсказания, как есть. Поэтому эти числа могут не совпадать. Сравнивайте скор на валидации, а не на train сете. Если я, конечно, правильно понял ваш вопрос 🙂
источник

DL

Dmitri Lihhatsov in catboost_ru
Andrei Khropov
Вы используете опцию used_ram_limit ?
Нет, видимо придется попробовать, спасибо
источник

AK

Andrei Khropov in catboost_ru
То что на последнем этапе может быть резкий рост потребления памяти это ожидаемо, на последнем этапе довольно ресурсоемкий по памяти расчет счетчиков для сохранения в модель
источник

DL

Dmitri Lihhatsov in catboost_ru
ясно спасибо. Попробую либо used_ram_limit, либо более мощную машину.
источник

AD

Anna Veronika Dorogush in catboost_ru
Dmitri Lihhatsov
Когда вы обучаете модель, Катбуст пишет accuracy на момент обучения, стараясь при этом не переобучаться. Если вы после этого запускаете accuracy_score на том же самом датасете, на котором тренировались, то Катбуст не знает, что это тот самый датасет, на котором он обучался, поэтому просто делает предсказания, как есть. Поэтому эти числа могут не совпадать. Сравнивайте скор на валидации, а не на train сете. Если я, конечно, правильно понял ваш вопрос 🙂
На трейне действительно может быть другая метрика. Но это происходит если есть катфичи. Тогда во время обучения на катфичах считаются счетчики по перестановке, а при применении счетчики по всему трейну. Поэтому при обучении на трейне метрика может быть хуже, чем при применении.
Тут другая ситуация, тут при применении хуже. Во время обучения считается метрика с учетом весов. А при применении без весов.
источник

AD

Anna Veronika Dorogush in catboost_ru
Скорее всего разница из-за этого
источник

AD

Anna Veronika Dorogush in catboost_ru
Чтобы считать метрику без весов, нужно написать у метрики параметр use_weights=false
источник

AD

Anna Veronika Dorogush in catboost_ru
Возможно мы поменяем дефолт для Accuracy и будем ее по умолчанию невзвешенную считать.
источник

PB

Pavel Baidaus in catboost_ru
да определенно влияют веса а как наоборот применить на валидаторе с весами ? print("Правильность на контрольной выборке: {:.2f}".format(model.score(X_valid, y_valid, use_weights=true ))) ?
источник

AD

Anna Veronika Dorogush in catboost_ru
можно использовать функцию eval_metrics
источник

ЕП

Евгений Петров in catboost_ru
Померяю через vtune и расскажу
источник

AD

Anna Veronika Dorogush in catboost_ru
если одно число хочется, то в параметры надо передать, чтобы только на последней итерации посчиталась
источник

PB

Pavel Baidaus in catboost_ru
model.fit(
     X_train, y_train,
     cat_features=categorical_features_indices,
     eval_set=(X_valid, y_valid),
     use_best_model=True, use_weights=true,
     plot=True
)
источник

AD

Anna Veronika Dorogush in catboost_ru
источник

AD

Anna Veronika Dorogush in catboost_ru
тут есть примеры
источник

PB

Pavel Baidaus in catboost_ru
пасиб
источник

PB

Pavel Baidaus in catboost_ru
Anna Veronika Dorogush
На трейне действительно может быть другая метрика. Но это происходит если есть катфичи. Тогда во время обучения на катфичах считаются счетчики по перестановке, а при применении счетчики по всему трейну. Поэтому при обучении на трейне метрика может быть хуже, чем при применении.
Тут другая ситуация, тут при применении хуже. Во время обучения считается метрика с учетом весов. А при применении без весов.
Хотя странно почему при применении считает без весов model.fit(
     X_train, y_train,
     cat_features=categorical_features_indices,
     eval_set=(X_valid, y_valid),
     use_best_model=True,
     plot=True
) а в  model указаны веса код выше указал по идее Catboost здесь должен веса на валидаторе применить eval_set=(X_valid, y_valid) .... хмхмхмх?
источник

AD

Anna Veronika Dorogush in catboost_ru
При применении при помощи score веса не считаются, потому что это стандартное поведение функции score, стандартное поведение функции ломать не хочется.
источник