Як я можу знати, який метод перехресної перевірки найкращий?


36

Я намагаюся розібратися, який метод перехресної перевірки найкращий для моєї ситуації.

Наступні дані - лише приклад для роботи над проблемою (в R), але мої реальні Xдані ( xmat) співвідносяться між собою і співвідносяться в різній мірі зі yзмінною ( ymat). Я надав код R, але моє питання не про R, а про методи. Xmatвключає X змінних V1 до V100, в той час як ymatвключає одну змінну y.

set.seed(1233)
xmat           <- matrix(sample(-1:1, 20000, replace = TRUE), ncol = 100)
colnames(xmat) <- paste("V", 1:100, sep ="")
rownames(xmat) <- paste("S", 1:200, sep ="")
  # the real y data are correlated with xmat
ymat           <- matrix(rnorm(200, 70,20), ncol = 1)
rownames(ymat) <- paste("S", 1:200, sep="")

Я хотів би побудувати модель прогнозування yна основі всіх змінних в xmat. Тож це буде лінійна регресійна модель y ~ V1 + V2 + V3+ ... + V100. З огляду я бачу наступні три методи перехресної перевірки:

  1. Розбийте дані приблизно на половину та використовуйте одну для тренувань, а другу половину для тестування (перехресне підтвердження):

    prop       <- 0.5 # proportion of subset data
    set.seed(1234)
      # training data set 
    training.s <- sample (1:nrow(xmat), round(prop*nrow(xmat),0))
    xmat.train <- xmat[training.s,]
    ymat.train <- ymat[training.s,]
    
      # testing data set 
    testing.s <- setdiff(1:nrow(xmat), training)
    xmat.test <- xmat[testing.s,]
    ymat.test <- ymat[testing.s,]
    
  2. Перехресне підтвердження K-кратного використання - з використанням 10-кратної перехресної перевірки:

    mydata <- data.frame(ymat, xmat)
    fit    <- lm(ymat ~ ., data=mydata)
    library(DAAG)
    cv.lm(df=mydata, fit, m=10) # ten-fold cross validation 
    
  3. Маскування одного значення або кількох значень одночасно : У цьому методі ми випадковим чином маскуємо значення у наборі даних (y), замінюючи його NA та прогнозуючи його. Процес повторюється n разів.

    n = 500 
    predicted.v <- rep(NA, n)
    real.v      <- rep(NA, n)
    
    for (i in 1:n){
      masked.id <- sample (1:nrow(xmat), 1)
      ymat1     <- ymat 
      real.v[i] <- ymat[masked.id,]
      ymat1[masked.id,] <- NA
      mydata            <- data.frame(ymat1, xmat)
      fit               <- lm(ymat1 ~ ., data=mydata)
      predicted.v[i]    <- fit$fitted.values[masked.id]
    }
    

Як я можу знати, що найкраще для будь-якої ситуації? Чи існують інші методи? Bootstrap validationпроти CV? Напрацьовані приклади були б вдячні.


Чи зацікавлені у тому, щоб перевірити достовірність даних або перевірити прогнозовані оцінки чи значення b-коефіцієнтів.
Subhash C. Davar

Мене цікавить перевірка прогнозованих оцінок або значень b-коефіцієнтів
rdorlearn

Проблема, що у мене з методом №1, полягає в тому, що розмір вибірки набагато менший, ніж у вас насправді. Тому оцінені смуги довіри / мінливість, ймовірно, будуть значно більшими. Крім того, я здогадуюсь, метод №2 та метод №3 будуть схожі за своєю ефективністю. Якби я був ти, почніть з кратної перехресної перевірки K = 5,6, ..., 14,15 і просто подивіться, чи ваші результати досить схожі.
Кіан

Також ви маєте намір зробити вибір моделі, щоб зменшити кількість коваріатів? 100, здається, досить багато.
Кіан

@ user2432701 Ні, я не хотів би використати всі 100.
rdorlearn

Відповіді:


34

Оскільки ОП поставила прихильність цьому питанню, воно повинно привернути певну увагу, і, таким чином, це правильне місце для обговорення деяких загальних ідей, навіть якщо це не відповідає безпосередньо ОП.

Ім'я:

а) перехресне підтвердження - це загальна назва всіх методик оцінювання / вимірювання, які використовують тестовий набір, відмінний від набору поїздів. Синонім: оцінки поза вибіркою або поза вибіркою. Антонім: оцінка вибірки.

In-sample оцінка - методи, які використовують певну інформацію про навчальний набір для оцінки якості моделі (не обов'язково помилки). Це дуже часто, якщо модель має велику упередженість - тобто вона робить сильні припущення щодо даних. У лінійних моделях (модель з високим зміщенням), як у прикладі запитання, використовуються R-квадрат, AIC, BIC, відхилення, як міра якості моделі - все це є вибірковими оцінками. Наприклад, у SVM відношення даних у векторі підтримки до кількості даних - це вибіркова оцінка похибки моделі.

Існує багато методів перехресної перевірки:

б) витримка - це метод №1 вище. Розділіть набір на навчальний та один тест. Існує довга історія дискусій та практик щодо відносних розмірів навчального та тестового набору.

в) k- кратно - метод №2 вище. Досить стандартний.

г) Вихід-один-вихід - метод №3 вище.

д) завантажувальна програма : якщо ваш набір має N даних, випадковим чином виберіть N зразків із заміною з набору та використовуйте це як навчання. У якості тестового набору використовуються дані з оригінального набору, який не був відібраний ніколи. Існують різні способи обчислення остаточної оцінки похибки моделі, яка використовує як помилку для тестового набору (поза вибіркою), так і помилку для набору поїздів (у зразку). Див., Наприклад, завантажувальну систему .632. Я думаю, що існує також формула .632+ - це формули, які оцінюють справжню помилку моделі, використовуючи як помилки поза вибіркою, так і помилки у вибірці.

f) Ортогональним до вибору вищевказаного методу є питання повторення. За винятком виходу з режиму «один-один», усі вищевказані методи можна повторити будь-яку кількість разів. Насправді можна говорити про повторне утримування або повторне k- кратне. Для справедливості, майже завжди метод завантаження використовується повторно.


Наступне питання, який метод "кращий". Проблема в тому, що означає "краще".

1) Перша відповідь - чи упереджений кожен з цих методів для оцінки помилки моделі (для нескінченної кількості майбутніх даних).

2) Друга альтернатива полягає в тому, наскільки швидко або наскільки добре кожен із цих методів конвергується до справжньої помилки моделі (якщо вони не є упередженими). Я вважаю, що це все ще тема дослідження. Дозвольте вказати на ці два документи (за платною стіною), але реферат дає нам певне розуміння того, що вони намагаються досягти. Також зауважте, що дуже часто називати k -fold як "перехресну перевірку" саме по собі.

Напевно багато інших робіт на ці теми. Це лише деякі приклади.

3) Ще одним аспектом "кращого" є: з огляду на конкретний показник помилки моделі за допомогою одного з наведених вище методів, наскільки ви впевнені, що правильна помилка моделі близька.

Загалом, у цьому випадку потрібно вжити багатьох заходів помилки та обчислити довірчий інтервал (або достовірний інтервал, якщо дотримуватися байєсівського підходу). У цьому випадку питання полягає в тому, наскільки можна довіряти різниці набору помилок. Зауважте, що за винятком режиму "відпуск один", усі вищевикладені методи дадуть вам багато різних заходів ( k заходів для k- кратного, n заходів для n -повторного витримки), і таким чином ви можете виміряти дисперсію (або стандартне відхилення ) цього набору і обчислити довірчий інтервал для міри помилки.

Тут справи дещо ускладнюються. З того, що я розумію з статті Немає об'єктивного оцінювача дисперсії k- кратної перехресної валідації (не позаду платної стіни), не можна довіряти дисперсії, отриманій від k- кратної, тому не можна побудувати хороший інтервал довіри від k - складки. Також з того, що я розумію з статті Приблизні статистичні випробування для порівняння алгоритмів навчання контрольованої класифікації (не позаду платної стіни), методи, що використовують повторні заходи (повторне k-кратне, повторне затримка - не впевнений у завантажувальній програмі) буде під-оцінювати справжню дисперсію міри помилок (це дещо легко помітити - оскільки ви берете вибірку з кінцевого набору, якщо повторите міру дуже великої кількості Час повторюються ті ж самі значення, які зберігають середнє значення однаковим, але зменшують дисперсію). Таким чином, методи повторних заходів будуть надто оптимістичними на довірчому інтервалі.

Цей останній документ пропонує зробити 5 повторних 2-кратних - які він називає 5 × 2 CV - як хороший баланс багатьох заходів (10), але не надто багато повторень.

Редагувати:

Звичайно, у перехресній валідації є чудові відповіді на деякі з цих питань (хоча іноді вони не погоджуються між собою). Ось декілька:

Перехресне підтвердження або завантаження для оцінки ефективності класифікації?

Різниці між перехресною валідацією та завантажувальною програмою для оцінки похибки прогнозування

Перехресне підтвердження або завантаження для оцінки ефективності класифікації?

Розуміння завантажувальної програми для перевірки та вибору моделі

Загалом, тегів це ваш друг.


То яке найкраще рішення? Не знаю. Я використовував 5 × 2 CV, коли мені потрібно бути дуже суворим, коли мені потрібно бути впевненим, що одна методика краща за іншу, особливо в публікаціях. І я використовую затримку, якщо я не планую вносити будь-які міри відхилення чи стандартного відхилення, або якщо у мене є обмеження в часі - є лише одна модель навчання в затриманні .


Що стосується складних дисперсійних властивостей перехресної валідації, я думаю, що потрібно бути обережними, яку дисперсію слід виміряти. IIRC, Bengio та ін. зосередити увагу на дисперсії для в наборі даних розміру п для розв'язуваної задачі. Яка відрізняється (і більше) від випадкової невизначеності для передбачень моделі навченої на тих наборів даних у мене є під рукою. Дивіться також проблематику таксономії у зведеному вище документі Діттеріха.
cbeleites підтримує Моніку

7

Будь ласка, зверніться до сторінки вікіпедії для визначення методів (вони роблять набагато кращу роботу, ніж я міг би тут зробити).

Після того, як ви переглянули цю сторінку, вам може допомогти наступне. Дозвольте зупинитися на частині питання, де потрібно вибрати один із цих методів для процесу моделювання. Оскільки це досить частий вибір, який можна зробити, і вони могли б отримати додаткові знання, ось моя відповідь на дві ситуації:

  1. Будь-яка ситуація : використовуйте k-fold cross validationвідповідну кількість повторів (скажімо, 5 або 10).

    • Розбиття даних на 1 половину, тренування на першому таймі та перевірка другого є одним із кроків у дворазовій перехресній валідації (інший крок - повторення тієї самої вправи з двома половинками). Отже, виключайте стратегію "розділення даних навпіл".

    • У багатьох роботах з машинного навчання та видобутку даних використовується перехресне підтвердження k-кратної (не мають цитування), тому використовуйте його, якщо вам не доведеться бути дуже обережними на цьому кроці.

    • Тепер залиште один із методів, а інші методи, такі як « залишити p out » та « випадкове розділення та повторення » (по суті, як завантажувальний процес, описаний вище), безумовно, хороші суперники.

    • Якщо ваш розмір даних дорівнює N, то перехресне підтвердження N-кратного по суті таке ж, як і залишити його.

    • 'p p out' і 'bootstrap' трохи відрізняються від перехресної перевірки k кратного перекладу, але різниця полягає в тому, як визначаються складки та кількість повторень 'k', які трапляються.

    • Як зазначається на сторінці вікі, і k-кратно, і « залишити p out » є гідними оцінниками « очікуваної ефективності / придатності » (хоча ставки знищені щодо дисперсії цих оцінювачів).

  2. Ваша ситуація: у вас є лише розмір вибірки 200 порівняно з кількістю функцій (100). Я думаю, є дуже великий шанс, що існує кілька лінійних моделей, що дають однакові показники. Я б запропонував використати k-кратну перехресну перевірку з> 10 повторень . Виберіть значення ак 3 або 5.

    • Причина k значення: загальний вибір.

    • Причина повторного значення: Тут, напевно, важливе значення для повторення, ймовірно, тут є критичним, оскільки вихід одного обчислення з перехресною валідацією в один з кратних разів може бути сприятливим для складання змінної / випадковості розбиття, що розбивається.

Додаткові думки:

  • Можливо, я б також застосував методи « залишити p out » та « bootstrap, як випадкове повторне повторне повторення » (на додаток до k-кратної перехресної перевірки) для тієї ж міри продуктивності / розміщення, щоб перевірити, чи виглядають результати мого k-красного перехресного перевірки.

  • Хоча ви хочете використовувати всі 100 функцій, як хтось запропонував, зверніть увагу на мультиколінеарність / кореляцію і, можливо, зменшіть кількість функцій.


Також ознайомтеся з цією відповіддю: stats.stackexchange.com/questions/69291/…
Тежа

Я б вирішив багато цього і перейшов безпосередньо до завантажувальної програми з оптимізмом Efron-Gong, що реалізовано в rmsпакеті validateта calibrateфункціях R.
Френк Харрелл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.