我正在使用随机森林,并且一类级别的袋外错误与其测试错误非常不同。我正在使用等于 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),但我不确定。造成这种巨大差异的原因是什么?