如何在LightGBM中使用"is_unbalance"和"scale_pos_weight"参数进行不平衡的二元分类项目(80:20)的处理。

3
我目前有一个不平衡的数据集,如下图所示:Distribution of target feature 然后,在训练LightGBM模型时,我使用'is_unbalance'参数,并将其设置为True。下面的图表显示了我如何使用该参数。 使用本机API的示例:Example of sing native API 使用sckit-learn API的示例:Example of using sckit-learnAPI 我的问题是:
  1. 我应用'is_unbalance'参数的方式正确吗?
  2. 如何使用'scale_pos_weight'代替'is_unbalance'?
  3. 还是我应该使用像'SMOTE-ENN'或'SMOTE+TOME'这样的'SMOTE'技术来平衡数据集?
谢谢!
1个回答

9

这个答案可能对你关于is_unbalance的问题有帮助: Lightgbm中'is_unbalance'参数的使用

你不一定使用is_unbalance是错误的,但sample_pos_weight会更好地控制少数类和多数类的权重。

在这个链接中,有一个关于scale_pos_weight使用的好解释: https://stats.stackexchange.com/questions/243207/what-is-the-proper-usage-of-scale-pos-weight-in-xgboost-for-imbalanced-datasets

基本上,scale_pos_weight允许为少数类设置可配置的权重,作为目标变量。关于这个话题的一个好的讨论在这里 https://discuss.xgboost.ai/t/how-does-scale-pos-weight-affect-probabilities/1790/4

关于SMOTE,我无法为您提供理论证明,但考虑到我的经验,在使用SMOTE来改善任何模型性能时,每次都失败了。
更好的方法可能是仔细决定必须优化哪个度量标准。对于不平衡问题,f1-score和recall是更好的度量标准。通常,AUC和准确性将是一个糟糕的选择。此外,micro和weighted度量标准是在搜索超参数时使用的良好指标)
Machine Learning Mastery提供了有关微观、宏观和加权度量标准的很好的解释和实现代码: https://machinelearningmastery.com/precision-recall-and-f-measure-for-imbalanced-classification/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接