sklearn HistGradientBoostingClassifier 具有大量不平衡数据

问题描述 投票:0回答:3

我一直在使用 Sklearn

HistGradientBoostingClassifier
对一些数据进行分类。我的实验是使用单标签预测(20 个标签)的多类分类。

我的经验有两种情况。第一种情况是在没有数据增强的情况下测量这些算法的准确性(大约不平衡 3,000 个样本)。第二种情况是通过数据增强来测量准确性(大约 12,000 个不平衡样本)。我使用的是默认参数。

在第一种情况下,

HistGradientBoostingClassifier
显示的准确度约为 86.0%。然而,随着数据增强,结果显示准确度较低,约为 23%。

我想知道这种准确性是否来自不平衡的数据集,但由于 Sklearn 库中没有用于修复

HistGradientBoostingClassifier
算法的不平衡数据集的功能,因此我无法验证这一事实。

有些人对大数据集也有同样的问题吗

HistGradientBoostingClassifier

编辑:我尝试了具有相同数据分割的其他算法,结果似乎很正常(通过数据增强,准确度提高了 5% 左右)。我想知道为什么我只能通过

HistGradientBoostingClassifier
得到这个。

scikit-learn classification multilabel-classification lightgbm
3个回答
1
投票

处理不平衡数据时,准确性是一个很差的指标。假设我有 90:10 的 0 类和 1 类。仅预测 0 类的

DummyClassifier
将达到 90% 的准确率。

您必须考虑精度、召回率、f1、混淆矩阵,而不仅仅是准确性。


0
投票

我发现一些可能是在大约 12,000 个样本的增强数据集上使用具有默认参数的

HistGradientBoostingClassifier
算法时缺乏准确性的原因。

我在相同的数据分割上比较了

HistGradientBoostingClassifier
LightGBM
算法(sklearn 的 HistGradientBoostingClassifier 是 Microsoft LightGBM 的实现。)。 HistGradientBoostingClassifier 的准确率较弱,为 24.7%,而 LightGBM 的准确率较高,为 87.5%。

正如我在 sklearn 和 Microsoft 的文档中所读到的那样,

HistGradientBoostingClassifier
“无法正确处理”不平衡的数据集,而
LightGBM
可以。后者有这个参数:
class_weigth (dict, 'balanced' or None, optional (default=None))
在该页面找到

我的假设是,目前数据集随着增强而变得更加不平衡,并且由于

HistGradientBoostingClassifier
算法没有任何处理不平衡数据的功能,该算法会被误导。 此外,正如 Hanafi Haffidz 在评论中提到的,该算法可能会过度拟合默认参数。


0
投票

sklearn
版本
1.2
起,
HistGradientBoostingClassifier
也具有
class_weight
参数。因此,您应该能够设置
class_weight='balanced'
并获得与不平衡数据更加一致的结果。

© www.soinside.com 2019 - 2024. All rights reserved.