【问题标题】:Xgboost dealing with imbalanced classification dataXgboost 处理不平衡的分类数据
【发布时间】:2017-04-19 11:56:23
【问题描述】:

我有一个包含大约 20000 个训练示例的数据集,我想在其上进行二进制分类。 问题是数据集严重不平衡,只有大约 1000 个属于正类。我正在尝试使用 xgboost(在 R 中)进行预测。

我尝试过过采样和欠采样,无论我做什么,预测总是会导致将所有内容分类为多数类。

我尝试阅读这篇关于如何在 xgboost 中调整参数的文章。 https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

但它只提到哪些参数有助于处理不平衡的数据集,而不是如何调整它们。

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

【问题讨论】:

标签: r xgboost


【解决方案1】:

在 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")

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

【讨论】:

    【解决方案2】:

    根据XGBoost 文档,scale_pos_weight 参数是处理不平衡类的参数。见,文档here

    scale_pos_weight, [default=1] 控制正负的平衡 负权重,对不平衡的类很有用。一个典型值 考虑: sum(negative cases) / sum(positive cases) 见参数 调整以进行更多讨论。另请参阅 Higgs Kaggle 竞赛演示 示例:R、py1、py2、py3

    【讨论】:

      【解决方案3】:

      一种对神经网络有用的技术是在观察中引入一些噪声。 在 R 中有一个“抖动”功能可以做到这一点。 对于您的 1000 个罕见案例,只需对其特征应用少量抖动,即可为您提供另外 1000 个案例。 再次运行您的代码,看看预测现在是否选择了任何正类。 您可以尝试更多添加的情况和/或改变抖动量。 HTH,表弟皮特

      【讨论】:

        猜你喜欢
        • 2020-06-27
        • 2021-08-24
        • 2019-11-22
        • 2021-05-29
        • 2019-12-25
        • 1970-01-01
        • 2018-03-24
        • 2019-07-13
        • 2023-03-17
        相关资源
        最近更新 更多