Ho un set di dati molto squilibrato. Sto cercando di seguire i consigli di sintonizzazione e di utilizzare, scale_pos_weight
ma non sono sicuro di come sintonizzarmi.
Vedo che RegLossObj.GetGradient
fa:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
quindi un gradiente di un campione positivo sarebbe più influente. Tuttavia, secondo il documento xgboost , la statistica del gradiente viene sempre utilizzata localmente = all'interno delle istanze di un nodo specifico in un albero specifico:
- nel contesto di un nodo, per valutare la riduzione delle perdite di una divisione candidata
- nel contesto di un nodo foglia, per ottimizzare il peso attribuito a quel nodo
Quindi non c'è modo di sapere in anticipo quale sarebbe un buono scale_pos_weight
- è un numero molto diverso per un nodo che finisce con un rapporto 1: 100 tra istanze positive e negative e per un nodo con un rapporto 1: 2.
Qualche suggerimento?