Train () Caret - точность модели bestTune отличается от точности повторной выборки - PullRequest
0 голосов
/ 24 апреля 2019

Я использую модель KNN, используя пакет R's Caret.Я оцениваю точность модели с помощью начальной загрузки 1000 раз, а затем составляю гистограмму точности модели по каждой начальной загрузке.

Функция train () при использовании метода KNN обычно проверяет точность на 5, 7 и 9Ближайшие соседи и секция результатов обеспечивают точность и каппу для разных ближайших соседей.

в моем методе trainControl Я указываю, что секция повторной выборки модели должна возвращать только повторные выборки из наилучшей настроенной модели.Тем не менее, точность наилучшей настройки модели в разделе результатов выше, чем средняя точность повторной выборки.Может кто-нибудь объяснить, почему это так?

library(caret)
library(klaR)

data("iris")

set.seed(10)

train_controlIris <- trainControl(method="boot632", number=1000, returnResamp = 'final',savePredictions = 'final' )

modelIris <- train( Species~.,data=iris, method="knn",trControl=train_controlIris)

modelIris$results

#results are
# k  Accuracy     Kappa AccuracySD    KappaSD AccuracyApparent KappaApparent
# 5 0.9596929 0.9391343 0.02518187 0.03806050        0.9666667          0.95
# 7 0.9636048 0.9450297 0.02477967 0.03746918        0.9733333          0.96
# 9 0.9668314 0.9498840 0.02406576 0.03636270        0.9800000          0.97

mean(modelIris$resample$Accuracy)
#result is 0.9591676

1 Ответ

0 голосов
/ 25 апреля 2019

Основная причина в том, что вы запросили оценщик начальной загрузки 632, который отличается от простого среднего.

library(caret)
#> Loading required package: lattice
#> Loading required package: ggplot2
library(klaR)
#> Loading required package: MASS

data("iris")

set.seed(10)

train_controlIris <-
  trainControl(
    method = "boot",
    number = 1000,
    returnResamp = 'final',
    savePredictions = 'final'
  )

modelIris <-
  train(Species ~ .,
        data = iris,
        method = "knn",
        trControl = train_controlIris)

mean(modelIris$resample$Accuracy)
#> [1] 0.9589355
getTrainPerf(modelIris)
#>   TrainAccuracy TrainKappa method
#> 1     0.9589355  0.9378173    knn

Создано в 2019-04-25 пакетом Представлять (v0.2.1)

...