J'ai un ensemble de données très déséquilibré. J'essaie de suivre les conseils de réglage et d'utilisation, scale_pos_weight
mais je ne sais pas comment dois-je le régler.
Je peux voir que cela RegLossObj.GetGradient
fait:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
donc un gradient d'un échantillon positif aurait plus d'influence. Cependant, selon l' article xgboost , la statistique du gradient est toujours utilisée localement = dans les instances d'un nœud spécifique dans une arborescence spécifique:
- dans le cadre d'un nœud, pour évaluer la réduction de perte d'un split candidat
- dans le cadre d'un nœud feuille, pour optimiser le poids donné à ce nœud
Il n'y a donc aucun moyen de savoir à l'avance ce qui serait un bien scale_pos_weight
- c'est un nombre très différent pour un nœud qui se retrouve avec un rapport 1: 100 entre les instances positives et négatives, et pour un nœud avec un rapport 1: 2.
Des indices?