了解不平衡数据集中的 ROC

数据挖掘 r 随机森林 表现 准确性
2022-02-18 17:02:41

响应变量(标签)B可以是0或者1.

在训练集中,Bi=1是极其罕见的事件,仅0.26%发生。这使得在测试数据集上预测这个标签成为一个难题。

  • 我曾经SMOTE从一些人的训练集中抽样1.55×105行以获得完全平衡的集合620行。

    balanced.df <- SMOTE(B ~ ., df, perc.over = 100, perc.under = 200)

  • randomForest1000树用于拟合模型,如图所示:

    randomForest.Fit <- randomForest(B ~ ., data = balanced.df, ntree = 1000)

  • 为了制作验证集,2000行是随机抽样的,没有从数据集中重复。

实际频率Bi在验证集中是:

   0    1 
 1998   2

预测集中的那些是:

   0    1 
 1836  164

ROC曲线

结果似乎很有希望,但可能有点太多了。此外,减少误报的百分比也很重要。

我的问题是:

  • 您认为数据偏差对验证结果的影响有多严重?

  • 通过创建带有偏见的任意数据集再次验证是否有意义,例如通过选择更多Bi=1在验证集中?

  • 还有哪些反映预测“准确性*”的指标/验证技术?

*术语准确性是在一般意义上使用的。

1个回答

因此,您的 155000 条记录数据集有 403 条记录,其中 B=1,其余 154597 条记录为 B=0。

您可以尝试将数据集拆分为由每个 B 类采样的 2:1 训练/测试集。完成此操作后,仅对训练集使用 SMOTE 对 B=1 的记录进行过采样以及对 B=0 训练记录进行欠采样,以使班级比例达到 4:1。

不需要对测试集进行过采样/过采样,因为它应该模拟现实世界的不确定性来测试模型的性能。

您的模型的 AUC 肯定会减少,因为(正如 stmax 正确指出的那样),您在拆分训练测试集之前通过过度采样 B=1 案例将测试记录泄漏到训练集中。

您的每个问题的答案是:

  1. 是的,类别不平衡确实会影响随机森林模型的准确性。严重程度取决于不平衡的严重程度以及数据集本身的性质。
  2. 是的,您通过对少数类进行过度抽样来使训练产生偏差,但如果这些样本在原始集中足够大,那么希望它们是整个群体的接近表示。
  3. 我会推荐您可以在这里使用的两种指标/技术:Kappa 统计(请参阅本文)和用于比较不同模型的精确召回曲线。