Кросс-валидация, которую иногда называют перекрестной проверкой, это техника валидации модели для проверки того, насколько успешно применяемый в модели статистический анализ способен работать на независимом наборе данных. Обычно кросс-валидация используется в ситуациях, где целью является предсказание, и хотелось бы оценить, насколько предсказывающая модель способна работать на практике. Один цикл кросс-валидации включает разбиение набора данных на части, затем построение модели на одной части (называемой тренировочным набором), и валидация модели на другой части (называемой тестовым набором). Чтобы уменьшить разброс результатов, разные циклы кросс-валидации проводятся на разных разбиениях, а результаты валидации усредняются по всем циклам.
Кросс-валидация важна для защиты от гипотез, навязанных данными («ошибки третьего рода»), особенно когда получение дополнительных данных затруднительно или невозможно.
Предположим, у нас есть модель с одним или несколькими неизвестными параметрами, и набор данных, на котором эта модель может быть оптимизирована (тренировочный набор). Процесс подгонки оптимизирует параметры модели и делает модель настолько подходящей под тренировочный набор, насколько это возможно. Если мы теперь возьмем независимый образец данных для валидации модели из того же источника, откуда мы взяли тренировочный набор данных, обычно обнаруживается, что модель описывает тестовые данные хуже, чем тренировочный набор. Это называется переподгонкой (overfitting), и особенно часто встречается в ситуациях, когда размер тренировочного набора невелик, или когда число параметров в модели велико. Кросс-валидация это способ оценить способность модели работать на гипотетическом тестовом наборе, когда такой набор в явном виде получить невозможно.
Распространенные типы кросс-валидации
Кросс-валидация по K блокам (K-fold cross-validation)
В этом случае исходый набор данных разбивается на K одинаковых по размеру блока. Из K блоков один оставляется для тестирования модели, а остающиеся K-1 блока используются как тренировочный набор. Процесс повторяется K раз, и каждый из блоков используется один раз как тестовый набор. Получаются K результатов, по одному на каждый блок, они усредняются или комбинируются каким-либо другим способом, и дают одну оценку. Преимущество такого способа перед случайным сэмплированием (random subsampling) в том, что все наблюдения используются и для тренировки, и для тестирования модели, и каждое наблюдение используется для тестирования в точности один раз. Часто используется кросс-валидация на 10 блоках, но каких-то определенных рекомендаций по выбору числа блоков нет.
В послойной кросс-валидации блоки выбираются таким образом, что среднее значение ответа модели примерно равно по всем блокам.
Валидация последовательным случайным сэмплированием (random subsampling)
Этот метод случайным образом разбивает набор данных на тренировочный и тестовый наборы. Для каждого такого разбиения, модель подгоняется под тренировочные данные, а точность предсказания оценивается на тестовом наборе. Результаты затем усредняются по всем разбиениям. Преимущество такого метода перед кросс-валидацией на K блоках в том, что пропорции тренировочного и тестового наборов не зависят от числа повторений (блоков). Недостаток метода в том, что некоторые наблюдения могут ни разу не попасть в тестовый набор, тогда как другие могут попасть в него более, чем один раз. Другими словами, тестовые наборы могут перекрываться. Кроме того, поскольку разбиения проводятся случайно, результаты будут отличаться в случае повторного анализа.
В послойном варианте этого метода, случайные выборки генерируются таким способом, при котором средний ответ модели равен по тренировочному и тестовому наборам. Это особенно полезно, когда ответ модели бинарен, с неравными пропорциями ответов по данным.
Поэлементная кросс-валидация (Leave-one-out, LOO)
Здесь отдельное наблюдение используется в качестве тестового набора данных, а остальные наблюдения из исходного набора – в качестве тренировочного. Цикл повторяется, пока каждое наблюдение не будет использовано один раз в качестве тестового. Это то же самое, что и K-блочная кросс-валидация, где K равно числу наблюдений в исходном наборе данных.
Оценка соответствия модели
Цель кросс-валидации в том, чтобы оценить ожидаемый уровень соответствия модели данным, независимым от тех данных, на которых модель тренировалась. Она может использоваться для оценки любой количественной меры соответствия, подходящей для данных и модели. Например, для задачи бинарной классификации, каждый случай в тестовом наборе будет предсказан правильно или неправильно. В этой ситуации коэффициент ошибки может быть использован в качестве оценки соответствия, хотя могут использоваться и другие оценки. Если предсказываемое значение распределено непрерывно, для оценки соответствия может использоваться среднеквадратичная ошибка, корень из среднеквадратичной ошибки или медианное абсолютное отклонение.
Применения
Кросс-валидация может использоваться для сравнения результатов различных процедур предсказывающего моделирования. Например, предположим, что мы интересуемся оптическим распознаванием символов, и рассматриваем варианты использования либо поддерживающих векторов (Support Vector Machines, SVM), либо k ближайших соседей (k nearest neighbors, KNN). С помощью кросс-валидации мы могли бы объективно сравнить эти два метода в терминах относительных коэффициентов их ошибок классификаций. Если мы будем просто сравнивать эти методы по их ошибкам на тренировочной выборке, KNN скорее всего покажет себя лучше, поскольку он более гибок и следовательно более склонен к переподгонке по сравнению с SVM.
Кросс-валидация также может использоваться для выбора параметров. Предположим, у нас есть 20 параметров, которые мы могли бы использовать в модели. Задача – выбрать параметры, использование которых даст модель с лучшими предсказывающими способностями. Если мы будем сравнивать подмножества параметров по их ошибкам на тестовом наборе, лучшие результаты получатся при использовании всех параметров. Однако с кросс-валидацией, модель с лучшей способностью к обобщению обычно включает только некоторое подмножество параметров, которые достаточно информативны.
Вопросы вычислительной производительности
Большинство форм кросс-валидации достаточно просты для реализации, если имеется готовая реализация метода предсказания. В частности, метод предсказания нужен только в виде «черного ящика», нет нужды лезть в детали его реализации. Если метод предсказания достаточно ресурсоемок в тренировке, кросс-валидация может быть медленной, поскольку тренировка выполняется последовательно много раз. В некоторых случаях, таких как метод наименьших квадратов или ядерная регрессия, кросс-валидация может быть существенно ускорена предварительным вычислением некоторых значений, которые используются повторно на тренировке, или используя «правила обновления», такие как формулу Sherman-Morrison. Однако нужно быть осторожным, чтобы обеспечить полное отделение валидационного набора данных от тренировочного, иначе может случиться смещение (bias). Крайний пример ускорения кросс-валидации случается в случае линейной регрессии, где результаты кросс-валидациии имеют явную аналитическую форму, известную как PRESS (prediction residual error sum of squares).
Ограничения и неверное использование кросс-валидации
Кросс-валидация дает значимые результаты только когда тренировочный набор данных и тестовый набор данных берутся из одного источника, из одной популяции. В многих применениях предсказательных моделей структура изучаемой системы меняется со временем. Это может наводить систематические отклонения тренировочного и валидационного наборов данных. К примеру, если модель для предсказания цены акции тренируется на данных из определенного пятилетнего периода, нереалистично рассматривать последующий пятилетний период как выборку из той же самой популяции.
Если выполняется правильно, и наборы данных из одной популяции, кросс-валидация дает результат практически без смещений (bias). Однако, есть много способов использовать кросс-валидацию неправильно. В этом случае ошибка предсказания на реальном валидационном наборе данных скорее всего будет намного хуже, чем ожидается по результатам кросс-валидации.
Способы неверно использовать кросс-валидацию:
1. Использовать кросс-валидацию на нескольких моделях, и взять только результаты лучшей модели.
2. Проводить начальный анализ для определения наиболее информативного набора параметров, используя полный набор данных. Если отбор параметров требуется в модели предсказания, он должен проводиться последовательно на каждом тренировочном наборе данных. Если кросс-валидация используется для определения набора используемых моделью параметров, на каждом тренировочном наборе должна проводиться внутренняя кросс-валидация для определения набора параметров.
3. Позволять некоторым тренировочным данным попадать также и в тестовый набор – это может случиться из-за существования дублирующих наблюдений в исходном наборе.
Источник: wikipedia.org
Другие статьи по теме:
Кросс-валидация — алгоритм оценки торговых систем
Фондовый рынок как искусственный хаос: почему погибают торговые системы
Предсказывает ли Variance Risk Premium будущее изменение цены?
Комментарии:
Yaroslav Efremov: Как-то не согласуются две фразы
1) Кросс-валидация может использоваться для сравнения результатов различных процедур предсказывающего моделирования.
2) Способы неверно использовать кросс-валидацию:
Использовать кросс-валидацию на нескольких моделях, и взять только результаты лучшей модели.
Почему нельзя за счет кросс-валидации выбрать модель? Пока вижу один минус, что если мы выбираем из тысячи похожих моделей, то скорее всего выберем ту, которая покажет лучшие результаты на кросс-валидации, а это будет ручная подгонка. Но если есть скажем 4 модели и их результаты отличаются в разы на валидационной выборки, то выбор оправдан…
mehanizator: во второй фразе говорится о результатах, а не о модели. для выбора модели использовать кросс-валидацию — это ок. ошибка когда каждый раз гоняются несколько моделей и берутся лучшие результаты.