Size: a a a

2018 December 14

OY

Oleh Yashchuk in catboost_ru
Использую catboost через R. Попробовал натюнить модель через caret на одном датасете с различными трансформациями:
1. Без трансформаций
2. One-hot encoding
3. Нормализация
4. Нормировка
5. One-hot + нормировка

Самый лучшый скор при cv и на валидационном сете я получаю для 1 варианта. Т.е. вообще без предобработки данных. По поводу one-hot encoding прочитал в документации, что его применять заранее не нужно. А по поводу трансформаций числовых фичей ничего не нашел. Подскажите, нужно делать предобработку num фичей или catboost это делает по своему?
источник

PB

Pavel Baidaus in catboost_ru
one-hot encoding Catboost ltkftn
источник

PB

Pavel Baidaus in catboost_ru
делает
источник

PB

Pavel Baidaus in catboost_ru
если не ошибаюсь
источник

OY

Oleh Yashchuk in catboost_ru
Да, в документации про это сказано: "By default, one-hot encoding is used for categorical features with 2 different values or less. Statistics are calculated for all other categorical features. "
источник

OY

Oleh Yashchuk in catboost_ru
"Attention. Do not use one-hot encoding during preprocessing. This affects both the training speed and the resulting quality."
источник

ND

Nikita Dmitriev in catboost_ru
Привет!

Да, one-hot делать заранее не нужно, catboost внутри его сам делаем оптимальным образом.
По поводу нормировки и нормализации, если это про то, что все числовые признаки отображаются  в [0, 1] или делается нулевое mean и еденичная std, то это делать тоже нет особого смысла, так как деревья решений работают на решающих правилах. А этим правилам все равно на сдвиг или домножение всех значений фичи на константу.
источник

OY

Oleh Yashchuk in catboost_ru
Привет! Да, это про то самое:) Дело в том, что для RF такая трансформация не дает прироста в точности, а для GBM даёт. Но, catboost это же тоже вариация бустинга (если я правильно понимаю - пока сильно не разбирался). Поэтому я ожидал увеличение точности после препроцессинга. Ведь, чисто логически, если lifetime измеряется от ~0 до 1000, а один из аггрегатов от 0 до 10, то это, по идее, может быть проблемой для бустинга.
источник

ND

Nikita Dmitriev in catboost_ru
А почему для бустинга это может быть проблемой?)
Мы же каждую фичу рассматриваем независимо. Нормализация обычно имеет смысл в каких-нибудь knn, где мы с фичами работаем вместе (складываем значения разных фичей друг с другом).
источник

OY

Oleh Yashchuk in catboost_ru
А какже оптимизации функции потерь. Классическая картинка, когда после нормализации фичей градиентный спуск двигается уже по сферической поверхности и таким образом, как минимум, сходится быстрее?
источник

AG

Artyom Gruzdev in catboost_ru
там, где используется гистограммирование и биннинг, и у нас есть переменные с асимметричными распределениями, нормализация может помочь или берем вместо бинов одинаковой ширины бины одинакового размера
источник

AG

Artyom Gruzdev in catboost_ru
можно посмотреть тут https://www.youtube.com/watch?v=cM2c-47Xlqk
источник

AG

Artyom Gruzdev in catboost_ru
ну то есть у вас есть переменная со скошенным распределением, делаете биннинг с бинами одинокой ширины
источник

AG

Artyom Gruzdev in catboost_ru
получаете бины, в одном - пусто, в другом - густо
источник

AD

Anna Veronika Dorogush in catboost_ru
Artyom Gruzdev
там, где используется гистограммирование и биннинг, и у нас есть переменные с асимметричными распределениями, нормализация может помочь или берем вместо бинов одинаковой ширины бины одинакового размера
для создания бинов не используются абсолютные значения фичи, только порядок
источник

AD

Anna Veronika Dorogush in catboost_ru
поэтому пустых бинов не бывает
источник

AD

Anna Veronika Dorogush in catboost_ru
и поэтому нормализовывать бессмысленно
источник

ND

Nikita Dmitriev in catboost_ru
Тут можно почитать про это:
https://tech.yandex.com/catboost/doc/dg/concepts/binarization-docpage/
источник

OY

Oleh Yashchuk in catboost_ru
Всем спасибо за помощь. Доклад сейчас посмотрю.
источник

OY

Oleh Yashchuk in catboost_ru
@nikitxskv т.е. бинаризация используется catboost-ом по умолчанию?
источник