Различные результаты с каретой, когда classProbs=TRUE
Когда я тренируюсь в моделях, один из которых использует 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 (переменная модель):
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
результат даже в разных конечных моделях после выбора параметров (C=1, когда classProbs = FALSE и C=2, когда classProbs=TRUE).
Я обнаружил, что все прогнозы одинаковы для обеих моделей, кроме тех, в которых классификатор не очень уверен, какой класс прогнозировать. Например:
> 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 влияет на предсказания? Я думал, что это использовалось, чтобы просмотреть вероятности для каждого класса, но это не изменило результаты.