关于逻辑回归中预测变量重要性的下采样与上采样

机器算法验证 回归 物流 分类 不平衡类
2022-03-24 03:50:56

我一直在尝试使用 R 中的 caret 包使用多元逻辑回归构建二元分类模型。我的数据集包含大约 20000 个观察值,其中 >99% 属于 X 类,只有 <1% 属于 Y 类,并且因此它是一个不平衡的数据集。

根据 Max Kuhn 和 Kjell Johnson 的书(Applied Predictive Modeling,Springer 2013),可以通过在训练模型之前对多数类进行下采样或对数据集的少数类进行上采样来管理类不平衡。我决定使用相同的训练数据集测试这两种解决方案来比较结果。

下采样数据集由 822 个观测值(每类 411 个)组成,上采样数据集由 45272 个观测值(每类 22636 个)组成。两个数据集现在都是“平衡的”,但我不确定选择哪种方法。下面我向您展示模型在训练数据集中的表现(10 倍 CV 重复 5 次)。

在灵敏度和特异性方面,两个选项(上采样和下采样)都给了我相似的结果,尽管下采样情况下参数的标准偏差要大 10 倍:

上采样结果:

ROC                                    
0.7711678          
Sens
0.7011926
Spec
0.697951
ROC SD
0.005977932 
Sens SD
0.00834598
Spec SD
0.009579698

下采样结果:

ROC                               
0.7781663            
Sens
0.7212311
Spec
0.4199943
ROC SD
0.0445779
Sens SD
0.06813285
Spec SD
0.0724861

然而,就预测变量的重要性而言,对于下采样的情况,只有四个预测变量是显着的:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept) -6.561091   1.507289  -4.353 1.34e-05 ***
sexFemale   -0.002311   0.217136  -0.011    0.992    
age          0.044491   0.006457   6.890 5.57e-12 ***
smokingSi    0.004606   0.234458   0.020    0.984    
drinkingSi   0.017497   0.185291   0.094    0.925    
diabHistSi   0.732457   0.163528   4.479 7.50e-06 ***
htDXSi       0.010499   0.222508   0.047    0.962    
height      -0.007022   0.007923  -0.886    0.375    
waist        0.022091   0.005598   3.947 7.93e-05 ***
aveSP        0.024395   0.005420   4.501 6.77e-06 ***

相比之下,对于上采样案例,所有预测变量都很显着:

              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -6.0755790  0.2305014 -26.358  < 2e-16 ***
sexFemale   -0.1409143  0.0302186  -4.663 3.11e-06 ***
age          0.0304018  0.0008032  37.849  < 2e-16 ***
smokingSi   -0.0691276  0.0309232  -2.235  0.02539 *  
drinkingSi   0.0538318  0.0243686   2.209  0.02717 *  
diabHistSi   0.6493554  0.0214752  30.238  < 2e-16 ***
htDXSi      -0.0809236  0.0281700  -2.873  0.00407 ** 
height      -0.0105632  0.0012510  -8.444  < 2e-16 ***
waist        0.0312969  0.0008087  38.699  < 2e-16 ***
aveSP        0.0237232  0.0006948  34.146  < 2e-16 ***

你觉得哪一个更好?一方面,对数据集进行下采样,我忽略了属于多数类的近 20000 个观察值。另一方面,当我对少数类进行上采样时,我会多次复制相同的 400 个观察结果......

我知道我可以在 ROC 曲线中寻找不同的分类阈值,而不是使用下采样或上采样来管理原始不平衡数据集,但我已经尝试过了,但没有得到好的结果。

我也知道支持向量机等其他方法可以使用成本函数来识别少数类的情况,但我需要模型是可解释的和“用户友好的”。这就是我使用逻辑回归的原因。

1个回答

永远不要使用下采样来使方法工作。如果该方法有任何好处,它将在不平衡的情况下工作。去除样品是不科学的。逻辑回归在极端不平衡下效果很好。另外(1)逻辑回归不是一种分类方法,(2)确保使用正确的准确度评分规则,(3)逻辑回归不是多变量(多因变量)方法。它是一种多元回归方法。