【问题标题】:Dealing with extremely imbalance with xgboost使用 xgboost 处理极度不平衡
【发布时间】:2021-05-29 12:42:17
【问题描述】:

我的训练数据有 100 个特征,类别非常不平衡 {0:872525,1:3335}。我使用 xgboost 构建具有贝叶斯优化的分类模型,以在 {learning rate:(0.001,0.1), min_split_loss:(0.10), max_depth:(3,70), min_child_weight:(1:20), max_delta_step: (1,20), 子样本:(0:1), colsample_bytree:(0.5,1), lambda:(0,10), alpha:(0,10), scale_pos_weight:(1,262), n_estimator:(1,20 )}。 我还使用 binary:logistics 作为目标模型,使用 roc_auc 作为带有 booster gbtree 的指标。 交叉验证得分为 82.5%。 但是,当我将模型实施到测试数据时,我只得到了分数 Roc_auc:75.2%,pr_auc:15%,log_loss:0.046,混淆矩阵:[[19300 7],[103 14]]。 我需要帮助找到将真阳性提高到 60% 左右的最佳方法,同时容忍假阳性直到实际阳性的 3 倍。

【问题讨论】:

    标签: xgboost imbalanced-data


    【解决方案1】:

    您提到您的数据集非常不平衡。

    我建议查看imblearn,它是“一个 python 包,提供了许多数据集中常用的重采样技术,显示出严重的类间不平衡。”例如,这些技术包括过采样和欠采样。

    该库的完整文档和示例是here

    如果您在公司处理此数据集 - 您还可以调查获取更多数据或使用规则/启发式方法修剪数据集。

    【讨论】:

    • 我知道过采样方法,但是我的数据现在是 750k 行,有 320 个特征,所以我更喜欢类权重以防止增加行。你还有别的想法吗? datascience.stackexchange.com/questions/92776/…
    • 如果没有关于业务问题的上下文,很难给出进一步的建议。例如,有时您可以通过重新构建问题来平衡数据集 - 这可以让您根据规则删除一些实例。检查您的数据是一个很好的开始。
    猜你喜欢
    • 2017-04-19
    • 2019-11-22
    • 2018-03-24
    • 1970-01-01
    • 2013-04-18
    • 2016-02-08
    • 2021-08-24
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多