随机森林中袋外错误和测试错误差异很大的情况

数据挖掘 机器学习 预测建模 随机森林 表现
2022-02-24 08:31:47

我正在使用随机森林,并且一类级别的袋外错误与其测试错误非常不同。我正在使用等于 c(0.2,0.8) 的截断值。情况如下:

fmla <- as.formula(paste("ex ~ ", paste(names(muestra.fullarbol[,-c(1,2,3,9,10,11,12,17,19,20,21,22,23,24,29,31,32,33,34,35,36,47)]), collapse= "+")))
> bosque <- randomForest(fmla , data=muestra.fullarbol ,mtry=12, ntree=1000  , cutoff=c(0.2,0.8),importance=TRUE)
> bosque

Call:
 randomForest(formula = fmla, data = muestra.fullarbol, mtry = 12,      ntree = 1000, cutoff = c(0.2, 0.8), importance = TRUE) 
               Type of random forest: classification
                     Number of trees: 1000
No. of variables tried at each split: 12

        OOB estimate of  error rate: 15.81%
Confusion matrix:
     No Si class.error
No 3999  1     0.00025
Si  758 42     0.94750

正如我们所见,“SI”级别的袋外误差为 0.94750。但是,如果我使用测试集来了解错误,结果会大不相同:

res.arbol <- predict(bosque,test.fullarbol,type="class")
> summary(res.arbol)
  No   Si 
7761   43 
> table(res.arbol,test.fullarbol$ex)

res.arbol   No   Si
       No 6937  824
       Si    4   39
> prop.table(table(res.arbol,test.fullarbol$ex),1)

res.arbol         No         Si
       No 0.89382811 0.10617189
       Si 0.09302326 0.90697674

现在我们看到“Si”类中测试集的错误率非常低,等于 0.093,这对我来说没有意义。

我猜这个截止只是为了预测样本(muestra.fullarbol),但我不确定。造成这种巨大差异的原因是什么?

1个回答

您使用什么类型的采样方法来拆分数据?我猜,通过查看 OOB 混淆矩阵和测试集混淆矩阵中未分层的类的比率,这是正确的吗?例如,OOB 数据中的类比是 4000:800,而在测试集中是 7761:43。作为起点,您可能希望使用分层抽样来拆分数据,以便在训练数据和测试数据中公平地表示(在统计意义上)类。测试集中类的比率应该与训练数据中使用的比率相同或几乎相同。

我认为这将是解决问题的一个很好的起点。