Мне кажется, что проверка не нужна. То есть разделение исходного набора данных на две части (обучение и тестирование) и использование результатов тестирования в качестве обобщающей меры несколько бесполезны.
K-кратная перекрестная проверка, кажется, дает лучшие приближения к обобщению (поскольку она обучает и проверяет каждую точку). Итак, почему мы должны использовать стандартную проверку удержания? Или даже поговорить об этом?
machine-learning
cross-validation
validation
амеба говорит восстановить монику
источник
источник
Ответы:
Мое единственное предположение, что вы можете продержаться с тремя часами опыта программирования; другой занимает в принципе неделю и шесть месяцев на практике.
В принципе это просто, но написание кода утомительно и отнимает много времени. Как сказал Линус Торвальдс: «Плохие программисты беспокоятся о коде. Хорошие программисты беспокоятся о структурах данных и их отношениях». Многие из тех, кто занимается статистикой, являются плохими программистами не по своей вине. Эффективное перекрестное подтверждение в k-кратном порядке (и под этим я подразумеваю способ, который не является ужасно неприятным для отладки и использования более одного раза) в R, требует смутного понимания структур данных, но структуры данных обычно пропускаются к статистическому программированию »учебники. Это как старик, впервые пользующийся интернетом. Это на самом деле не сложно, просто требуется полчаса или около того, чтобы разобраться в первый раз, но он совершенно новый, и это вводит в заблуждение, поэтому его легко игнорировать.
У вас есть такие вопросы: Как реализовать выдерживани из проверки в R . Никаких оскорблений, предназначенных для просящего. Но многие люди просто не грамотны. Тот факт, что люди проводят перекрестную проверку, достаточно, чтобы сделать меня счастливым.
Это звучит глупо и банально, но это происходит из личного опыта, будучи этим парнем и работая со многими людьми, которые были этим парнем.
источник
Задержка часто используется как синоним валидации с независимым набором тестов, хотя существуют принципиальные различия между случайным разделением данных и разработкой эксперимента по валидации для независимого тестирования.
Независимые тестовые наборы могут использоваться для измерения эффективности обобщения, которая не может быть измерена путем повторной выборки или проверки удержания, например производительности для неизвестных будущих случаев (= случаев, которые измеряются позже, после завершения обучения). Это важно для того, чтобы знать, как долго существующая модель может использоваться для новых данных (например, дрейф инструмента). В более общем смысле это может быть описано как измерение эффективности экстраполяции для определения пределов применимости.
Другой сценарий, в котором задержка может быть действительно выгодным: очень легко обеспечить правильное разделение данных обучения и испытаний - гораздо проще, чем при проверке повторной выборки: например,
В зависимости от уровня разделения, который вам нужен, каждый шаг может быть сделан кем-то другим. На первом уровне отказ от передачи каких-либо данных (даже измерений) тестовых случаев разработчику модели позволяет быть очень уверенным, что никакие тестовые данные не попадут в процесс моделирования. На втором уровне окончательные результаты измерений модели и тестового примера могут быть переданы кому-то еще, и так далее.
Да, вы платите за это более низкой эффективностью оценок удержания по сравнению с проверкой повторной выборки. Но я видел много работ, в которых я подозреваю, что проверка повторной выборки не разделяет должным образом случаи (в моей области у нас много кластерных / иерархических / сгруппированных данных).
Я усвоил урок об утечке данных для повторной выборки, убирая рукопись через неделю после представления, когда обнаружил, что у меня была ранее необнаруженная (при выполнении перестановочных тестов) утечка в моей процедуре расщепления (опечатка в расчете индекса).
Иногда удержание может быть более эффективным, чем поиск кого-то, кто готов потратить время на проверку кода повторной выборки (например, для кластеризованных данных), чтобы получить тот же уровень уверенности в результатах. Тем не менее, IMHO, как правило, неэффективно делать это до того, как вы окажетесь на той стадии, когда вам в любом случае необходимо измерить, например, будущую производительность (первая точка) - иными словами, когда вам в любом случае нужно будет установить эксперимент проверки для существующей модели.
OTOH, в ситуациях с небольшим размером выборки отсрочка невозможна: вам нужно выдержать достаточно тестовых случаев, чтобы результаты тестов были достаточно точными, чтобы можно было сделать нужный вывод (помните: 3 правильных из 3 тестовых случаев для классификации означают биномиальный 95% доверительный интервал, который колеблется намного ниже 50:50, догадываясь!) Фрэнк Харрелл будет указывать на правило большого пальца, которое, по крайней мере, ок. 100 (тестовых) случаев необходимы для правильного измерения пропорции [такой как доля правильно предсказанных случаев] с полезной точностью.
Обновление: существуют ситуации, когда правильное разбиение особенно трудно достичь, и перекрестная проверка становится невозможной. Рассмотрим проблему с рядом нарушителей. Расщепление легко, если эти конфузоры строго вложены (например, исследование с несколькими пациентами имеет несколько образцов каждого пациента и анализирует количество клеток каждого образца): вы разделяете на самом высоком уровне иерархии выборки (по пациентам) , Но у вас могут быть независимые факторы, которые не являются вложенными, например, ежедневные изменения или отклонения, вызванные различными экспериментаторами, проводящими тест. Затем вам нужно убедиться, что разделение является независимым для всехна самом высоком уровне (вложенные участники автоматически будут независимыми). Позаботиться об этом очень сложно, если некоторые выявившие факторы обнаруживаются только во время исследования, а разработка и проведение эксперимента по валидации может быть более эффективным, чем работа с расщеплениями, в которых почти не остается данных ни для обучения, ни для тестирования суррогатных моделей.
источник
Может быть полезно немного прояснить терминологию. Если мы допустим, чтобы было некоторым целым числом, меньшим (или равным) где - размер выборки, и мы разделили выборку на уникальных подвыборок, то то, что вы называете проверкой удержания, на самом деле просто в 2 раза ( = 2 ) перекрестная проверка. Перекрестная проверка - это всего лишь инструмент для оценки частоты ошибок вне выборки (или обобщения) конкретной модели. Необходимость оценки частоты ошибок вне выборки является распространенной и породила целую литературу. См. Для начала главу 7 ESL .н н к кk n n k k
Итак, чтобы ответить на вопросы:
Зачем об этом говорить? Педагогически. Стоит рассматривать валидацию как особый - и только иногда полезный - случай весьма полезного в других отношениях метода с множеством вариантов.
Зачем это использовать? Если одному из них повезло иметь колоссальный набор данных (с точки зрения наблюдений, ), то имеет смысл разделить данные пополам - обучение на одну половину и тестирование на другую - имеет смысл. Это имеет смысл в вычислительных целях, поскольку все, что требуется, - это подгонка один раз и прогнозирование один раз (а не раз). И это имеет смысл с точки зрения оценки больших выборок, поскольку у вас есть масса наблюдений, чтобы соответствовать вашей модели.кn k
Практическое правило, которое я выучил, таково: когда большое, может быть маленьким, но когда мало, должно быть близко к .к н к нn k n k n
источник
Если ваша процедура выбора и подгонки модели не может быть закодирована, потому что она субъективна или частично такова - с привлечением к просмотру графиков и т. П. - может быть лучшее, что вы можете сделать. (Я полагаю, вы могли бы использовать что-то вроде Mechanical Turk в каждом сгибе резюме, хотя я никогда не слышал о том, что это делается.)
источник
Просто хотел добавить несколько простых рекомендаций, которые Эндрю Нг упомянул в нашем классе CS 229 в Стэнфорде относительно перекрестной проверки. Это практики, которым он следует в своей работе.
Пусть будет количеством выборок в вашем наборе данных. Если используйте перекрестную проверку Leave-one-out.м ≤ 20m m≤20
Если используйте перекрестную проверку в k-кратном размере с относительно большим значением учитывая вычислительные затраты.k ≤ m20<m≤100 k≤m
Если используйте регулярную перекрестную проверку в k-кратном порядке . Или, если вычислительной мощности недостаточно и , используйте перекрестную проверку с удержанием.( к = 5 ) м > 10 , 000100<m≤1,000,000 (k=5) m>10,000
Если использует перекрестную проверку без удержания, но при наличии вычислительной мощности вы можете использовать перекрестную проверку в k-кратном размере если вы хотите выжать эту дополнительную производительность из вашей модели.( к = 5 )m≥1,000,000 (k=5)
источник
Краткий ответ:
Я бы рекомендовал всегда использовать CV как минимум с для:k=5
Вы можете расслабить это для:
Некоторые из вас упоминали, что программирование этого на R может быть проблемой. Я рекомендую вам взглянуть на пакет "mlr" . Он объединяет различные пакеты в единый интерфейс, а также предоставляет действительно продвинутые методы повторной выборки и оценки производительности.
Посмотрите: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ и: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm
Еще одно объяснение - что CV делает на самом деле, так это нарушает компромиссную разницу:
Теперь проблема, которую пытаются решить оба подхода, состоит в оценке ошибки обобщения, которая зависит от данных, которые использовались для обучения модели.
У Holdout есть проблема с уклоном и дисперсией:
Сокращая объем данных, которые мы тестируем, мы вносим дисперсию в нашу предполагаемую ошибку обобщения, поскольку тестовые данные могут не очень хорошо представлять базовое распределение. Это само по себе не вносит смещения, хотя, как и ожидалось, оценочные показатели будут правильными.
Однако уменьшение обучающего набора приводит к пессимистическому смещению, поскольку опять-таки базовое распределение не очень хорошо представлено в данных, и модель также не может соответствовать данным. Создание очень маленького тренировочного набора также вносит различия.
Поскольку размер обучения и тестового набора определяют друг друга, это оставляет нам компромисс: пессимистический уклон против высокой дисперсии.
k - 1k Кросс-валидация в кратном размере решает эту проблему, поддерживая большой обучающий набор (часть данных используется для обучения на каждой итерации) и обрабатывая дисперсию ошибки теста путем повторной выборки. , После всех итераций мы проверили производительность при каждом наблюдении набора данных с одним учащимся. Очевидно, что это требует больше времени на вычисления, чем простое удержание.k−1k
Перекрестная проверка особенно важна для более сложных (с высокой дисперсией) учащихся. Они обычно более дорогие в вычислительном отношении, что может сделать весь процесс довольно длительным.
источник
Все это полезные комментарии. Просто примите еще один во внимание. Когда у вас достаточно данных, использование Hold-Out - это способ оценки конкретной модели (конкретной модели SVM, конкретной модели CART и т. Д.), Тогда как при использовании других процедур перекрестной проверки вы оцениваете методологии (в ваших проблемных условиях). ), а не модели (методология SVM, методология CART и т. д.).
Надеюсь, это полезно!
источник
Моделирование со временем серьезных данных является исключением для меня. K fold не может работать в некоторых случаях, когда вам нужно предсказать будущее на основе предыдущих данных. Наборы тестов должны быть будущими данными, и вы никогда не сможете прикоснуться к ним на этапе обучения. ex прогнозирование продажи или фондового рынка. Продержаться полезно в этих случаях.
источник
Проще говоря; время. При перекрестной проверке вы запускаете тренировочную программу k раз (т.е. один раз для каждого набора удержания). Если у вас большие данные, то вам может потребоваться много часов или даже дней, чтобы обучить модель только одному набору данных, поэтому вы умножаете это на k при использовании перекрестной проверки.
Таким образом, хотя перекрестная проверка является наилучшим методом, в определенных обстоятельствах это неосуществимо, и время, которое потребовалось бы, могло бы быть лучше потрачено на моделирование данных по-разному или на опробование различных функций потерь для получения лучшей модели.
Лично я предпочитаю получать данные проверки по всему набору данных, поэтому вместо того, чтобы брать один 10% -ный фрагмент из заголовка или хвоста данных, я беру 2% из 5 точек в наборе данных. Это делает данные проверки немного более представительными для данных в целом.
источник
Следует отметить, что не всегда возможно применить перекрестную проверку. Рассмотрите зависящие от времени наборы данных, так что вы хотите использовать исторические данные для обучения прогнозирующей модели для будущего поведения. В этом случае вы должны применить отложенную проверку.
источник