类不平衡和成本敏感学习 XGBoost

数据挖掘 机器学习 分类 数据 xgboost 阶级失衡
2022-02-15 08:21:30

我对数据科学和机器学习还很陌生,并且一直在尝试更多地阅读一些方法,例如为我正在从事的项目之一进行提升。该项目的调查人员有兴趣将其xgboost用于该项目,但是一旦我们获得数据,我们预计会有几个主要问题。

将存在类别不平衡,例如 1 少于 0。我已经看到人们通过使用scale_pos_weightin 参数来处理这个问题xgboost,但据我了解,它xgboost允许自定义目标函数。我想知道人们如何提出自定义目标函数以及他们选择的目标函数背后的基础。我对一个定制的目标函数感兴趣,它可以更多地惩罚假阴性,并且想知道网络上是否有任何推荐的东西。我们正在处理分类问题,因此默认情况下我们将使用对数损失函数。我希望有某种常用的自定义日志丢失功能。

如果我使用了错误的术语,我深表歉意,因为我对此还是很陌生。非常感谢!

2个回答

XGBoost 有几个参数可以调整不平衡数据集。据我所知,您不会弄乱目标函数。您可以在下面找到它们:

  • scale_pos_weight
  • max_delta_step
  • min_child_weight

要考虑的另一件事是重新采样数据集。我们谈论欠采样、过采样和集成采样。我想我为此使用了不平衡学习Python 库。那里的事情可以变得更有创意。例如,在相同的欠采样类实例上创建许多 XGBoost 树,但每个 XGBoost 树包含过采样类实例的另一个副本(或随机采样副本)。然后你可以平均你的结果。

最后,您将不得不亲自尝试并看看。

scale_pos_weight 将指定损失函数中的权衡,以指定更多惩罚 FPs / TPs。

https://xgboost.readthedocs.io/en/latest/parameter.html:“控制正负权重的平衡,对不平衡的类很有用。要考虑的典型值:sum(negative instances) / sum(positive instances) 。”