当我训练模型时,一个使用classProbs = TRUE而另一个没有计算概率,我会得到不同的结果:
library(caret)
set.seed(7)
myControl <- trainControl(method='cv',number=3,savePredictions=TRUE)
set.seed(7)
model <- train(Species~., iris, tuneLength=4,method='svmRadial', trControl=myControl)
set.seed(7)
myControl <- trainControl(method='cv',number=3,savePredictions=TRUE,classProbs=TRUE)
set.seed(7)
modelProbs <- train(Species~., iris, tuneLength=4, method='svmRadial', trControl=myControl)
classProbs = FALSE(var model)的模型是:
C Accuracy Kappa Accuracy SD Kappa SD
0.25 0.9266667 0.8900100 0.03055050 0.04584410
0.50 0.9333333 0.8999840 0.02309401 0.03469643
1.00 0.9400000 0.9099880 0.02000000 0.03004800
2.00 0.9400000 0.9100059 0.02000000 0.02999416
classProbs = TRUE(var modelProb)的模型是:
C Accuracy Kappa Accuracy SD Kappa SD
0.25 0.9266667 0.890010 0.03055050 0.04584410
0.50 0.9333333 0.899984 0.02309401 0.03469643
1.00 0.9400000 0.909988 0.02000000 0.03004800
2.00 0.9466667 0.919980 0.02309401 0.03466529
参数选择后,即使在最终模型中也会产生(当classProbs = FALSE时,C = 1,当classProbs = TRUE时,C = 2)。
我发现两个模型的所有预测都是相同的,除了分类器不能确定要预测哪个类的那些模型。例如:
> model$pred[423,]
pred obs rowIndex sigma C Resample
423 versicolor versicolor 69 0.8071298 0.25 Fold3
> modelProbs$pred[423,]
pred obs setosa versicolor virginica rowIndex sigma C Resample
423 virginica versicolor 0.03307154 0.4813102 0.4856182 69 0.8071298 0.25 Fold3
在这个实验中,差异非常小,但我尝试过更复杂的数据,差异很大。任何人都可以解释classProbs属性如何影响预测吗?我认为它用于查看每个班级的概率,但它并没有改变结果。