Size: a a a

2020 February 25

E

Edya in catboost_ru
Коллеги, привет!
Хочу решить задачу предсказания цены на авиабилеты.
У меня очень много исторических данных, которые лежат в ClickHouse.
Есть какие-либо гайды для решения подобной задачи? (для тех кто будет первый раз использовать catboost)
источник

В

Витя in catboost_ru
Edya
Коллеги, привет!
Хочу решить задачу предсказания цены на авиабилеты.
У меня очень много исторических данных, которые лежат в ClickHouse.
Есть какие-либо гайды для решения подобной задачи? (для тех кто будет первый раз использовать catboost)
На сколько дней вперёд прогноз, какая дискретность данных?
источник

E

Edya in catboost_ru
В идеале, на год вперед. Есть очень много данных, но пробелы в данных тоже есть (на какие-то направления есть за каждый день, на некоторые нет)
источник

В

Витя in catboost_ru
Edya
Коллеги, привет!
Хочу решить задачу предсказания цены на авиабилеты.
У меня очень много исторических данных, которые лежат в ClickHouse.
Есть какие-либо гайды для решения подобной задачи? (для тех кто будет первый раз использовать catboost)
Общий подход можно найти в статье на хабре ods про timeseries forecasting, вкратце генеришь лаговые фичи, статистики на окнах, календарные фичи
Год вперед очень большой горизонт, так что основными фичами будут календарные
В slack ods есть отдельный канал по временным рядам, там можешь конкретные вопросы задавать
источник

E

Edya in catboost_ru
Витя
Общий подход можно найти в статье на хабре ods про timeseries forecasting, вкратце генеришь лаговые фичи, статистики на окнах, календарные фичи
Год вперед очень большой горизонт, так что основными фичами будут календарные
В slack ods есть отдельный канал по временным рядам, там можешь конкретные вопросы задавать
ладно буду копать, Спасибо!
Наткнулся на это https://github.com/ClickHouse/clickhouse-presentations/blob/master/tutorials/catboost_with_clickhouse_en.md

и решил, что есть еще много такого)
источник

AD

Anna Veronika Dorogush in catboost_ru
Сейчас только для предсказаний работает, для обучения нужно положить выборку в tsv файл
источник

E

Edya in catboost_ru
Anna Veronika Dorogush
Сейчас только для предсказаний работает, для обучения нужно положить выборку в tsv файл
хм, печально. Он же потом целиком весь файл попробует положить в оперативку?
источник

AD

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

E

Edya in catboost_ru
Спасибо, это было бы очень круто. А пока обучение на семпле это единственный вариант при ограниченном железе, правильно? У меня ~1тб будет если положить датасет в tsv
источник
2020 February 27

DU

Daniil Udimov in catboost_ru
Добрый вечер!

У меня вопрос по применению catboost для задачи бинарной классификации: 0 и 1. Допустим, у нас есть в разметке примеры, которые мы относим к серой зоне между двумя классами. Обозначим их таргетом 0.5. Вопрос — как это лучше всего сообщить catboost'у?

Первый вариант — казалось бы, можно просто использовать Logloss. Но в таком случае выскакивает ошибка с требованием задать порог для разделения таргета на два класса.
You should specify target border parameter for target binarization.


Второй вариант — использовать CrossEntropy. В таком случае catboost корректно обучается.

Собственно, два вопроса. Отличаются ли чем-то два подхода с Crossentropy и Logloss, и почему один из них обучается, а второй нет? И корректно ли таким способом решать озвученную мною проблему (с учётом в таргете большей или меньшей уверенности в классе)?
источник

AM

Aleksandr Mikhailov in catboost_ru
Я бы кросс энтропию взял, которая в виде q_i * log(p_i). Соответственно, q_i может принимать значения 0, 0.5 и 1
источник

AM

Aleksandr Mikhailov in catboost_ru
хотя не совсем так)
источник

AM

Aleksandr Mikhailov in catboost_ru
q_i * log(p_i) + (1-q_i) * log(1-p_i)
источник

DU

Daniil Udimov in catboost_ru
Aleksandr Mikhailov
Я бы кросс энтропию взял, которая в виде q_i * log(p_i). Соответственно, q_i может принимать значения 0, 0.5 и 1
Ну, это и происходит в случае
CatBoost(params={'loss_function': 'CrossEntropy'})
, я верно понимаю?
источник

AM

Aleksandr Mikhailov in catboost_ru
Daniil Udimov
Ну, это и происходит в случае
CatBoost(params={'loss_function': 'CrossEntropy'})
, я верно понимаю?
¯\_(ツ)_/¯
источник

AM

Aleksandr Mikhailov in catboost_ru
ещё же можно веса объектам задавать
источник

DU

Daniil Udimov in catboost_ru
Aleksandr Mikhailov
ещё же можно веса объектам задавать
Это да. Просто такая игра с таргетами мне ещё по матрикснету запомнилась. Вот и решил уточнить, как её лучше в катбусте делать.
источник

AM

Aleksandr Mikhailov in catboost_ru
ну т. е. берёшь выборку, там где классы 0 и 1 ничего не трогаешь, а там где 0.5 - добавляешь 2 объекта в датасет с весом по 0.5, но с разными метками
источник

DU

Daniil Udimov in catboost_ru
Aleksandr Mikhailov
ну т. е. берёшь выборку, там где классы 0 и 1 ничего не трогаешь, а там где 0.5 - добавляешь 2 объекта в датасет с весом по 0.5, но с разными метками
Да, это тоже интересная идея, спасибо.
источник

AU

Aleksei Ustimenko in catboost_ru
источник