Обучение xgboost с помощью мягких меток

#python #xgboost

#python #xgboost

Вопрос:

Я пытаюсь выделить предсказания другой модели классификатора, «C», используя xgboost. Таким образом, вместо меток у меня есть вероятности, предсказанные C для положительных выборок.

Я попытался сделать самую очевидную вещь, используя вероятности, выводимые C, как если бы они были метками

 distill_model = XGBClassifier(learning_rate=0.1, max_depth=10, n_estimators=100)
distill_model.fit(X, probabilities)
 

но кажется, что в этом случае XGBoost просто переводит каждое отдельное значение вероятности в свой собственный класс. Итак, если C выводит 72 разных значения, XGBoost считает это 72 для разных классов. Я попытался изменить целевую функцию на multi: softmax / multi: softprob, но это не помогло.

Есть предложения?

Ответ №1:

Вероятно, существует специфичный для xgboost метод с пользовательскими потерями. Но общее решение состоит в том, чтобы разделить каждую обучающую строку на две строки, по одной с каждой меткой, и присвоить каждой строке исходную вероятность для этой метки в качестве ее веса.