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