Оценка точности модели с использованием повторного обучения перекрестной проверки против прогнозирования - PullRequest
0 голосов
/ 07 мая 2019

Я провожу ряд исследований KNN. В настоящее время я тренирую модель на полных данных и использую метод repeatcv, который разбивает данные на 4 части, чтобы получить оценку точности. Я хочу знать две вещи

  1. Является ли указание повторений = 100 в функции поезда с использованием repeatcv аналогично ручному выбору четверти данных, которые должны быть назначены в качестве набора тестов, с использованием createDataPartition () и Forex (). Для меня единственная разница заключается в том, что в первом случае модель оптимизируется с точки зрения прогнозирующей способности для всех данных, тогда как в последнем случае она оптимизируется только на обучающем разделе. Поэтому, если я просто оцениваю влияние предикторов, а не пытаюсь применить модель к новым данным, лучше использовать поезд. Это правильно?

  2. Можно ли получить информацию без учета скорости, оставшейся во время тренировки, как вы можете получить для матрицы путаницы оценки?

Я включил приведенный ниже код, используя набор данных Iris в качестве примера

set.seed(10)
#using the train and resampling procedure on whole data to determine accuracy
train_controlIris <- trainControl(method="repeatedcv", number=4,repeats = 100, returnResamp = 'final',savePredictions = 'final' )

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

#The confusion matrix gives no No Information Rate in the output
Cross-Validated (4 fold, repeated 100 times) Confusion Matrix 

(entries are percentual average cell counts across resamples)

            Reference
Prediction   setosa versicolor virginica
  setosa       33.3        0.0       0.0
  versicolor    0.0       31.7       1.5
  virginica     0.0        1.6      31.9

 Accuracy (average) : 0.9689


#now creating a partition and using the data to predict the test partition
index <- createDataPartition(iris$Species, p=0.75, list=FALSE)
#make test and train sets
data.train<- iris[index,]
data.test<- iris[-index,]
model_knn <- train(data.train[, 1:4], data.train$Species, method='knn')

predictions<-predict(object=model_knn,data.test[,1:4])
evaluationCaret<-confusionMatrix(predictions,data.test$Species)
print(evaluationCaret)
#this confusion matrix does give a No information Rate


Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         12          0         0
  versicolor      0         11         1
  virginica       0          1        11

Overall Statistics

               Accuracy : 0.9444          
                 95% CI : (0.8134, 0.9932)
    No Information Rate : 0.3333          
    P-Value [Acc > NIR] : 1.728e-14       

                  Kappa : 0.9167          
 Mcnemar's Test P-Value : NA  

...