Eu tenho um conjunto de dados muito desequilibrado. Estou tentando seguir o conselho de ajuste e o uso, scale_pos_weight
mas não tenho certeza de como devo ajustá-lo.
Eu posso ver que RegLossObj.GetGradient
sim:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
portanto, um gradiente de uma amostra positiva seria mais influente. No entanto, de acordo com o documento xgboost , a estatística de gradiente é sempre usada localmente = nas instâncias de um nó específico em uma árvore específica:
- no contexto de um nó, para avaliar a redução de perda de uma divisão de candidatos
- dentro do contexto de um nó folha, para otimizar o peso atribuído a esse nó
Portanto, não há como saber com antecedência o que seria bom scale_pos_weight
- é um número muito diferente para um nó que termina com uma proporção de 1: 100 entre instâncias positivas e negativas e para um nó com uma proporção de 1: 2.
Alguma dica?