Tengo un conjunto de datos muy desequilibrado. Estoy tratando de seguir los consejos y el uso de la optimización,scale_pos_weight
pero no estoy seguro de cómo debo ajustarlo.
Puedo ver que RegLossObj.GetGradient
sí:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
entonces un gradiente de una muestra positiva sería más influyente. Sin embargo, de acuerdo con el artículo xgboost , la estadística de gradiente siempre se usa localmente = dentro de las instancias de un nodo específico en un árbol específico:
- dentro del contexto de un nodo, para evaluar la reducción de pérdidas de una división candidata
- dentro del contexto de un nodo hoja, para optimizar el peso dado a ese nodo
Por lo tanto, no hay forma de saber de antemano qué sería bueno scale_pos_weight
: es un número muy diferente para un nodo que termina con una relación 1: 100 entre instancias positivas y negativas, y para un nodo con una relación 1: 2.
¿Alguna pista?