Xgboost处理不平衡分类数据

Vik*_*h B 5 r xgboost

我有一些20000个训练示例的数据集,我想对它们进行二进制分类。问题在于数据集严重失衡,只有大约1000个属于正类。我正在尝试使用xgboost(在R中)进行预测。

我已经尝试过采样和欠采样,无论我做什么,这些预测总会导致将一切归类为多数。

我尝试阅读本文,了解如何在xgboost中调整参数。 https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

但是,它仅提及哪些参数对不平衡的数据集有所帮助,而没有提及如何调整它们。

如果有人对调整xgboost的学习参数以处理不平衡的数据集以及如何为此类情况生成验证集有任何建议,我将不胜感激。

tag*_*oma 8

根据XGBoost文档,该scale_pos_weight参数是处理不平衡类的参数。请参阅此处的文档

scale_pos_weight,[default = 1]控制正负权重的平衡,对于不平衡的类很有用。需要考虑的典型值:sum(负数)/ sum(正数)请参阅参数调整以获取更多讨论。另请参见Higgs Kaggle竞争演示示例:R,py1,py2,py3


Ash*_*day 6

在 R 中尝试这样的事情

bstSparse <- xgboost(data =xgbTrain , max_depth = 4, eta = 0.2, nthread = 2, nrounds = 200 ,
                 eval_metric = "auc" , scale_pos_weight = 48, colsample_bytree = 0.7,
                 gamma = 2.5,
                 eval_metric = "logloss",
                 objective = "binary:logistic")
Run Code Online (Sandbox Code Playgroud)

其中scale_pos_weight是不平衡度。我的基线发病率约为 4%。使用超参数优化。也可以在scale_pos_weight上尝试一下