Интуитивно понятная проблема с k-кратной перекрестной проверкой - PullRequest
1 голос
/ 28 мая 2020

У меня есть некоторые интуитивные проблемы с проверкой силы предсказания с перекрестной проверкой, я думаю, что не могу получить алгоритм на 100%. На примере хочу рассказать о своих интуитивных проблемах. Пусть k = 5 (количество складок) и

library(caret)
x=runif(100) 
z=rexp(100)
y=rnorm(100) 
Q=data.frame(x,z,y) 
train.control <- trainControl(method = "cv", number = 5)
train(y~x+z,method="lm",data=Q,trControl=train.control)

И на выходе я получил:

100 samples
  2 predictor

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 80, 80, 80, 80, 80 
Resampling results:

  RMSE      Rsquared   MAE      
  1.032508  0.1272826  0.8213676

Tuning parameter 'intercept' was held constant at a value of TRUE 

и мои вопросы:

(1) почему мой Выборка была разделена на подвыборки длиной: 80,80,80,80,80 вместо 20,20,20,20,20? Длина y, x и z равна 100, а не 400.

(2) алгоритм рисует только из x и z или из x, y и z?

(3) что делает алгоритм после рандомизации? Ничего не могу найти в inte rnet. Я только видел, что он вычисляет RMSE и MAE. Но, например, MAE вычисляет абсолютное значение разницы между y и y.hat. Я считаю, что h.hat - это значения, прогнозируемые моделью y ~ x + z (например, если я рисую x = 0,05 и z = 0,16, тогда y.hat = 0,21). Но я понятия не имею, что такое y для этих номеров розыгрышей, и я не могу представить себе возможность выбрать правильный.

Пожалуйста, ответьте на мои интуитивные проблемы или просто дайте мне хорошую страницу, чтобы прочитать об этом ? На всех страницах, которые я прочитал, я не мог найти решения своих проблем. Заранее спасибо.

1 Ответ

2 голосов
/ 28 мая 2020
  1. 5-кратное CV означает, что вы разделяете данные на 5 частей, обучаете 4 части и тестируете 1 оставшуюся часть. Следовательно, вы тренируетесь на 80 и проверяете оставшиеся 20. И вы делаете это 5 раз для разных 20. Вы можете проверить эту виньетку о перекрестной проверке , я в основном беру диаграмму оттуда:

enter image description here

Он выбирает строки вашего фрейма данных. Xy и z должны быть go вместе и не могут быть дискретизированы независимо, в противном случае это полная ерунда, верно.

Вы указали method="lm" и y~x+z, поэтому вы подобрали линейную модель с y как зависимая переменная и x и z как независимые переменные. Каждый раз, когда вы рисуете выборку из 80, коэффициент модели будет (должен) отличаться из-за того, что выборка будет нарисована. Вы прогнозируете значения для набора тестов и вычисляете ошибки, RMSE или MAE. И после 5 раундов у нас есть RMSE или MAE для 5 наборов тестов, и мы берем среднее значение. Обычно мы делаем это итеративно для разных гиперпараметров модели, чтобы выбрать лучший параметр на основе наименьшей ошибки. Но в вашем примере нет гиперпараметра для настройки. Вы можете проверить это красивое введение в учебник по статистике

...