Как построить перекрестную проверку в случайном порядке - PullRequest
0 голосов
/ 28 марта 2019

Я начинающий R, и мне нужно сделать 5 или 10-кратную перекрестную проверку в модели случайного леса. Моя проблема заключается в том, что я должен сделать резюме вручную, а не с пакетом. Что я хочу сделать, это: 1. Построить k-сгибы с моими тренировочными данными 2. Выберите мой параметр настройки, например деревья = c (200, 400, 600) 3. Установите мою модель на k-1 сгибах и прогнозируйте мои значения на набор удержания (набор проверки) 4. Затем я хочу оценить свой прогноз на наборе удержания и сохранить значение.

мой оценочный параметр должен быть AUC. Я понимаю теорию, но у меня есть проблемы, чтобы сделать это в R. У вас есть идея для моего кода? Большое спасибо !!!

  • Это проблема классификации, так как альтернативой является то, что набор данных радужной оболочки также будет работать здесь.

  • Я застрял там, не зная, как мне уместить модель в k-1 сгибы и предсказать значения для каждого проверочного набора. Я устанавливаю i = 1, i = 2 и так далее? Это то, что у меня уже есть, но это не работает:

training.x = ирис [, 1: 4]; training.y = iris [, 5];

training$folds = 
 sample(1:5,nrow(training), replace=TRUE)
myGrid <- expand.grid
( ntrees = c(500, 1000, 2000),
 mtry = c( 2, 4, 6, 8)
for (i in 1: 5){
newrf = randomForest(x = training.x[training$folds!=i,] , y = as.factor(training.y)
   ,tuneGrid = myGrid , importance = TRUE , do.trace = 10)  new.pr = predict(newrf, training.mt.X[training$folds==i,], id= i)
 err.vect[i] =roc.area(test, new.pr)$class
 print(paste("AUC for fold", i, ":", err.vect[i]))}``` 

1 Ответ

0 голосов
/ 29 марта 2019
# Code for 10 Fold Cross Validation: Adjust variables and data frame to yours
set.seed(17)
cv.error=rep(0,9)
for (i in 1:9){
  glm.fit=(medv~poly(lstat,i),data=Boston)
  cv.error[i]=cv.glm(Boston,glm.fit,K=10)$delta[1]
}
cv.error
plot(cv.error,type="b")
...