分类预测出错和偏差问题

Posted

技术标签:

【中文标题】分类预测出错和偏差问题【英文标题】:Classification prediction going awry and bias issues 【发布时间】:2020-09-24 09:29:13 【问题描述】:

我的分类预测有问题。最初我在 115 个变量(数字和分类)中有一个大小为 19670 的数据框。我试图建模的类变量 BiClass(由“0”和“1”类组成)有 13540 个“0”类和 6130 个“1”类。 “1”很有趣。我以 80-20 的比例划分了整个数据框,得到了 15736 个训练集和 3934 个观测值的测试集。 Train 有 10853 个“0”类和 4883 个“1”类,Test 有 2687 个“0”类和 1247 个“1”类。

使用 ranger 在训练集上训练随机森林分类模型,并在测试集上进行预测。我得到的预测结果如下

现在我获得了包含 2665 个分类观察值的全新数据。当我在新数据上的训练数据上使用开发的模型时,我得到如下预测结果

这是错误的,因为新数据类最初是 1962“0”和 703“1”。但是,该模型将所有内容都视为误报。

我认为模型偏向 0,一定是类不平衡问题,使用 ROSE 和 SMOTE 准备数据,然后训练模型。我使用这些经过训练的模型得到以下预测:

玫瑰:

SMOTE:

在 115 个变量中,我使用了不同种类的特征选择方法和相关技术来选择特征和模型。我仍然得到不满意的结果。 10 倍交叉验证和 xgboost 导致新数据集中始终无法识别级别。我什至检查了数据是否被正确读取,用新数据检查了整个数据集的分布,用新数据检查了训练数据的分布。没有任何效果。估计建模没有问题,但是数据有问题,导致偏差很大。

我有什么基本遗漏的地方吗?对于我这里的用户来说,在这些行上复制一个示例似乎很难理解。

【问题讨论】:

我在缩放后将数据集拆分为训练和测试,并且我在不调用早期缩放的情况下缩放了新数据。这从根本上是错误的,并引起了问题。我已根据此讨论更正了所有内容,并且有效:***.com/questions/62209496/scaling-production-data 【参考方案1】:

在没有您使用的代码和您提供给算法的数据样本的情况下,这是一个很难回答的问题。

【讨论】:

我在缩放后将数据集拆分为训练和测试,并且我在不调用早期缩放的情况下缩放了新数据。这从根本上是错误的,并引起了问题。我已经根据这个讨论更正了所有内容并且它有效:***.com/questions/62209496/scaling-production-data

以上是关于分类预测出错和偏差问题的主要内容,如果未能解决你的问题,请参考以下文章

算法理论——PLA

使用 Keras 模型进行预测时出错

图像分类器ValueError:检查目标时出错:预期dense_31有2维,但得到的数组形状为(1463、224、224、3)

导出 4 个机器学习模型的预测时出错

使用 predict() 时,预测变量数相同但行数不同的新数据出错

Python Scikit-Learn 库中分类数据的异常值预测