Ich habe einen sehr unausgeglichenen Datensatz. Ich versuche den Tuning-Ratschlägen zu folgen und zu verwenden scale_pos_weight
, bin mir aber nicht sicher, wie ich es tunen soll.
Ich kann sehen, dass RegLossObj.GetGradient
:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
Ein Gradient einer positiven Probe wäre also einflussreicher. Dem xgboost-Artikel zufolge wird die Gradientenstatistik jedoch immer lokal verwendet = innerhalb der Instanzen eines bestimmten Knotens in einem bestimmten Baum:
- im Kontext eines Knotens, um die Verlustreduzierung eines Kandidatensplits zu bewerten
- im Kontext eines Blattknotens, um die Gewichtung dieses Knotens zu optimieren
Es gibt also keine Möglichkeit, im Voraus zu wissen, was gut wäre scale_pos_weight
- es ist eine ganz andere Zahl für einen Knoten, der ein Verhältnis von 1: 100 zwischen positiven und negativen Instanzen aufweist, und für einen Knoten mit einem Verhältnis von 1: 2.
Irgendwelche Hinweise?