处理有偏见的二元分类器

数据挖掘 机器学习 分类 阶级失衡
2022-03-09 00:49:29

我的训练数据在“1”类中权重更大,比例约为 4:6。这会输出一个准确率为 82% 的分类器,重点是“1”类,这是有道理的。

Confusion Matrix - 
[[333 133]
 [ 62 612]]

我也有测试比例,其中将测试数据,即“1”的 0.3 和“0”的 0.7 或 1900 0 和 900 1。我的分类器输出 1400 个 1 和 1300 个 0。

我的理论是我需要建立一个有利于“0”的分类器,如果是这样,我怎样才能使分类器偏向于一个类而不是另一个类?

我尝试使用类权重,这确实增加了“0”预测,但只增加了很小的百分比。

2个回答

您在数据中拥有的称为不平衡类

从数据营

不平衡数据通常是指类别不均等的分类任务。

例如,您可能有一个包含 100 个实例的二元分类问题,其中 80 个实例标记为 Class-1,其余 20 个实例标记为 Class-2。

在此链接中,您可以找到一篇不错的文章,详细说明它是什么以及如何处理它-> https://www.datacamp.com/community/tutorials/diving-deep-imbalanced-data

解决方案之一是使用过采样或欠采样。您可以使用 SMOTE 算法实现此目的。这是 Python 中的一个示例。

from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

sm = SMOTE(random_state=2)
X_train_res, y_train_res = sm.fit_sample(X_train, y_train.ravel())

对于二元分类,您可以轻松调整决策阈值以使分类器偏向任一类。默认情况下,决策阈值为 0.5。您可以轻松地将其更改为例如 0.55 以获得更多的 0 预测(即,如果 p<0.55 则为 0,否则为 1)。这种决策阈值调整,也称为阈值移动或偏置/增益适应,导致 ROC 曲线和 AUC 理论。在这里查看更多信息: 阈值移动