Size: a a a

2021 February 25

N

Nikolay in catboost_ru
привет. а когда RMSEWithUncertainty на GPU появится ?
источник

SK

Stanislav Kirillov in catboost_ru
Если у вас есть аккаунт в твиттере, проголосуйте пожалуйста за свой вариант ответа https://twitter.com/CatBoostML/status/1364888465318555649 , это нам поможет дальше приоритеты по spark/dask понимать.
источник

A

Alexandr in catboost_ru
А какие именно параметры или какие значени тут лишние?
f1_scorer= make_scorer(f1, greater_is_better=True)

cvTSS = TimeSeriesSplit(n_splits=5)

space={'n_estimators': hp.quniform('n_estimators', 10, 1000, 1),
     
     'depth': hp.quniform('depth', 2, 15, 1),
       'max_bin' : hp.quniform('max_bin', 1, 32, 1),
       'l2_leaf_reg' : hp.uniform('l2_leaf_reg', 0, 5),
       'bagging_temperature' : hp.loguniform('bagging_temperature', np.log(1), np.log(50)),
       'min_data_in_leaf' : hp.quniform('min_data_in_leaf', 1, 50, 1),
       'random_strength' : hp.loguniform('random_strength', np.log(0.005), np.log(5)),
       'learning_rate' : hp.uniform('learning_rate', 0.01, 0.75),
       'colsample_bylevel' : hp.quniform('colsample_bylevel', 0.1, 1, 0.01),#
       'fold_len_multiplier' : hp.loguniform('fold_len_multiplier', np.log(1.01), np.log(2.5)),
       'subsample': hp.uniform('subsample', 0.1, 0.8),
       'od_type' : 'Iter',
       'od_wait' : 25,
       'verbose' : 0,
     'has_time':True}
space['objective']='Logloss'
space['eval_metric']='F1'
источник

A

Alexandr in catboost_ru
решаю задачу классификации
источник

А

Андрей Тре in catboost_ru
Андрей Тре
Всем привет!
Помогите, пожалуйста, со спарком)
Используя almond, с версией scala 2.12, spark 2.4.7, catboost-spark 0.25-rc3 и spark-mllib 2.4.0/ 3.1.0, пытаюсь получить предсказания, используя метод .predict, от модели обученной на питоне с категориальными признаками (их было два) по приложенному коду, в консоли получаю ошибку
WARNING: All illegal access operations will be denied in a future release
uncaught exception:
   address -> 0x10710b400
   what() -> "catboost/libs/model/cpu/formula_evaluator.cpp:641: insufficient cat features vector size: 0 expected: 2"
   type -> TCatBoostException

При обучении модели на тех же данных, без добавления категориальных фич, предикт на spark получаю успешно

модель сохранял так
model.save_model("cool_model2.cbm",
          format="cbm",
          export_parameters=None,
          pool=train_pool)
с добавлением train_pool и без него

Вопрос: как получать предикты для данных с кат фичами в спарке?

В изменениях у версии 0.25-rc3 Categorical features support
@kizill @Andrei_Khropov
ребят по спарку плиз отзовитесь, боюсь сообщение потеряется)
источник

AK

Andrei Khropov in catboost_ru
Андрей Тре
Всем привет!
Помогите, пожалуйста, со спарком)
Используя almond, с версией scala 2.12, spark 2.4.7, catboost-spark 0.25-rc3 и spark-mllib 2.4.0/ 3.1.0, пытаюсь получить предсказания, используя метод .predict, от модели обученной на питоне с категориальными признаками (их было два) по приложенному коду, в консоли получаю ошибку
WARNING: All illegal access operations will be denied in a future release
uncaught exception:
   address -> 0x10710b400
   what() -> "catboost/libs/model/cpu/formula_evaluator.cpp:641: insufficient cat features vector size: 0 expected: 2"
   type -> TCatBoostException

При обучении модели на тех же данных, без добавления категориальных фич, предикт на spark получаю успешно

модель сохранял так
model.save_model("cool_model2.cbm",
          format="cbm",
          export_parameters=None,
          pool=train_pool)
с добавлением train_pool и без него

Вопрос: как получать предикты для данных с кат фичами в спарке?

В изменениях у версии 0.25-rc3 Categorical features support
Да, сейчас получается что predict/predictRaw не будут работать на моделях с категориальными признаками, поправим в следующем обновлении (выйдет на этой неделе): https://github.com/catboost/catboost/issues/1594.

model.transform(), который создает prediction для всего DataFrame должен работать корректно, если выставлен атрибут NominalAttribute для соотв. признаков.

Пример в тестах: https://github.com/catboost/catboost/blob/06df500aa503f2a1fe48ae2b9cb4c1922b5f24b7/catboost/spark/catboost4j-spark/core/src/test/scala/ai/catboost/spark/CatBoostRegressorTest.scala#L578

Вот тут функция, которая добавляет атрибуты для категориальных признаков в схему: https://github.com/catboost/catboost/blob/06df500aa503f2a1fe48ae2b9cb4c1922b5f24b7/catboost/spark/catboost4j-spark/core/src/test/scala/ai/catboost/spark/PoolTestHelpers.scala#L24-L37 (она есть только в тестах, в API самого пакета ее нет, если что)

Также можно добавлять к уже существующим колонкам в DataFrame метаданные с помощью withColumn: https://stackoverflow.com/questions/35305154/attach-metadata-to-vector-column-in-spark
источник

А

Андрей Тре in catboost_ru
большое спасибо за ответ, насколько понимаю model.transform() также требует ground truth меток? Для моей задачи нужен инференс, поэтому буду ждать .predict)
источник

A

Alexandr in catboost_ru
Alexandr
А какие именно параметры или какие значени тут лишние?
f1_scorer= make_scorer(f1, greater_is_better=True)

cvTSS = TimeSeriesSplit(n_splits=5)

space={'n_estimators': hp.quniform('n_estimators', 10, 1000, 1),
     
     'depth': hp.quniform('depth', 2, 15, 1),
       'max_bin' : hp.quniform('max_bin', 1, 32, 1),
       'l2_leaf_reg' : hp.uniform('l2_leaf_reg', 0, 5),
       'bagging_temperature' : hp.loguniform('bagging_temperature', np.log(1), np.log(50)),
       'min_data_in_leaf' : hp.quniform('min_data_in_leaf', 1, 50, 1),
       'random_strength' : hp.loguniform('random_strength', np.log(0.005), np.log(5)),
       'learning_rate' : hp.uniform('learning_rate', 0.01, 0.75),
       'colsample_bylevel' : hp.quniform('colsample_bylevel', 0.1, 1, 0.01),#
       'fold_len_multiplier' : hp.loguniform('fold_len_multiplier', np.log(1.01), np.log(2.5)),
       'subsample': hp.uniform('subsample', 0.1, 0.8),
       'od_type' : 'Iter',
       'od_wait' : 25,
       'verbose' : 0,
     'has_time':True}
space['objective']='Logloss'
space['eval_metric']='F1'
Скорее всего какие-то параметры явно лишние, а может и вообще конфликтуют с друг другом. Но без вашей совета тут никак
источник

AK

Andrei Khropov in catboost_ru
Андрей Тре
большое спасибо за ответ, насколько понимаю model.transform() также требует ground truth меток? Для моей задачи нужен инференс, поэтому буду ждать .predict)
Нет, model.transform() использует только колонку с признаками (что логично): https://spark.apache.org/docs/2.4.4/api/scala/index.html#org.apache.spark.ml.PredictionModel@transform(dataset:org.apache.spark.sql.Dataset[_]):org.apache.spark.sql.DataFrame
источник

A

Alexandr in catboost_ru
Alexandr
А какие именно параметры или какие значени тут лишние?
f1_scorer= make_scorer(f1, greater_is_better=True)

cvTSS = TimeSeriesSplit(n_splits=5)

space={'n_estimators': hp.quniform('n_estimators', 10, 1000, 1),
     
     'depth': hp.quniform('depth', 2, 15, 1),
       'max_bin' : hp.quniform('max_bin', 1, 32, 1),
       'l2_leaf_reg' : hp.uniform('l2_leaf_reg', 0, 5),
       'bagging_temperature' : hp.loguniform('bagging_temperature', np.log(1), np.log(50)),
       'min_data_in_leaf' : hp.quniform('min_data_in_leaf', 1, 50, 1),
       'random_strength' : hp.loguniform('random_strength', np.log(0.005), np.log(5)),
       'learning_rate' : hp.uniform('learning_rate', 0.01, 0.75),
       'colsample_bylevel' : hp.quniform('colsample_bylevel', 0.1, 1, 0.01),#
       'fold_len_multiplier' : hp.loguniform('fold_len_multiplier', np.log(1.01), np.log(2.5)),
       'subsample': hp.uniform('subsample', 0.1, 0.8),
       'od_type' : 'Iter',
       'od_wait' : 25,
       'verbose' : 0,
     'has_time':True}
space['objective']='Logloss'
space['eval_metric']='F1'
Забыл уточнить данные несбалансированы. Соотношение между классами 1 к 17
источник
2021 February 26

AD

Aleksei Dolgikh in catboost_ru
Добрый день. Вопрос по text_processing. Есть параметр Max_dict_size. С ним вроде всё понятно. Если используем BoW, то правильно ли я понимаю, что top_token_count - это дублирующий параметр для Max_dict_size? И у кого из них приоритет? Какой бест практис? Указывать оба с одним значением? И верно ли я понимаю, что occurence_lower_bound тоже в некотором смысле избыточен, если указан макс размер словаря? Т.е. либо ограничиваем словарь размером, либо игнорим слова с малой частотой.
источник

ЕП

Евгений Петров... in catboost_ru
top_token_count — это число колонок, на которые bow заменит текстовую фичу. он побеждает max_dictionary_size. если нет эстиматоров других типов, то  max_dictionary_size=top_token_count выглядит разумно. вот тут в конце можно немного подробнее почитать https://catboost.ai/docs/concepts/algorithm-main-stages_text-to-numeric.html Aleksei
источник
2021 February 27

L

L in catboost_ru
Привет. Подскажите, плз, GPU не NVIDIA поддерживается?
источник

AK

Andrei Khropov in catboost_ru
Нет
источник

L

L in catboost_ru
Спасибо
источник

AD

Aleksei Dolgikh in catboost_ru
Спасибо!!!
источник
2021 March 01

Ivan Σ in catboost_ru
Всем привет!

Подскажите, пожалуйста, как в катбусте реализовано распареллеливание обучения? Что именно параллелится?
В документации не нашел
источник

A

Andrey in catboost_ru
Думаю, поиск сплитов. Деревья-то последовательно строятся
источник

ЕП

Евгений Петров... in catboost_ru
Ivan Σ
Всем привет!

Подскажите, пожалуйста, как в катбусте реализовано распареллеливание обучения? Что именно параллелится?
В документации не нашел
там много что распраллелено. на цпу и на гпу по-разному. поиск сплитов, вычисление производных, метрик.
источник

ЕП

Евгений Петров... in catboost_ru
Ivan Σ
Всем привет!

Подскажите, пожалуйста, как в катбусте реализовано распареллеливание обучения? Что именно параллелится?
В документации не нашел
мы это не документируем )
источник