У мене дуже незбалансований набір даних. Я намагаюся дотримуватися порад щодо налаштування та користуватися, scale_pos_weight
але не знаю, як слід його настроїти.
Я бачу, що RegLossObj.GetGradient
це:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
тому градієнт позитивної вибірки був би більш впливовим. Однак, згідно з документом xgboost , статистика градієнта завжди використовується локально = в межах примірників конкретного вузла в конкретному дереві:
- в контексті вузла, щоб оцінити зменшення втрат кандидата на розкол
- у контексті листового вузла, щоб оптимізувати вагу, надану цьому вузлу
Тож немає можливості заздалегідь дізнатися, що було б добре scale_pos_weight
- це зовсім інше число для вузла, який закінчується співвідношенням 1: 100 між позитивними та негативними екземплярами, а також для вузла зі співвідношенням 1: 2.
Якісь підказки?