Скользящий контроль

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
м (Полный скользящий контроль (complete CV))
(первая статья, написанная с помощью LLM)
Строка 1: Строка 1:
-
'''Скользящий контроль''' или '''кросс-проверка''' или '''кросс-валидация''' (cross-validation, CV) — процедура эмпирического оценивания [[Обобщающая способность|обобщающей способности]] алгоритмов, [[обучение по прецедентам|обучаемых по прецедентам]].
+
'''Кросс-валида́ция''' (перекрёстная прове́рка, скользя́щий контро́ль, англ. cross-validation) — метод оценки предсказательной способности [[Машинное обучение|моделей машинного обучения]] и [[Статистическая модель|статистических моделей]], основанный на многократном разбиении исходной выборки на обучающую и проверочную (тестовую) [[Выборка|подвыборки]]. Основная цель кросс-валидации — получить несмещённую (или слабо смещённую) оценку ожидаемой ошибки модели на новых данных, не участвовавших в обучении, и тем самым избежать [[Переобучение|переобучения]] при выборе модели или настройке её [[Гиперпараметр (машинное обучение)|гиперпараметров]].
-
Фиксируется некоторое множество разбиений исходной выборки на две подвыборки: [[обучающая выборка|''обучающую'']] и [[контрольная выборка|''контрольную'']].
+
В современной практике [[Анализ данных|анализа данных]] и [[Машинное обучение|машинного обучения]] кросс-валидация является одним из основных инструментов сравнения алгоритмов, отбора признаков и оптимизации гиперпараметров. Её систематическое применение позволяет разделить этапы обучения, выбора модели и итоговой оценки качества, что критически важно для получения надёжных и воспроизводимых результатов.
-
Для каждого разбиения выполняется настройка [[алгоритм]]а по обучающей подвыборке,
+
-
затем оценивается его средняя ошибка на объектах контрольной подвыборки.
+
-
''Оценкой скользящего контроля'' называется средняя по всем разбиениям величина ошибки на контрольных подвыборках.
+
-
Если выборка независима, то средняя ошибка ''скользящего контроля'' даёт несмещённую оценку вероятности ошибки.
+
== Мотивировка и основные идеи ==
-
Это выгодно отличает её от средней ошибки на обучающей выборке, которая может оказаться смещённой (оптимистически заниженной) оценкой вероятности ошибки, что связано с [[Переобучение|явлением переобучения]].
+
При построении прогностической модели естественно измерять её качество на тех же данных, на которых она обучалась. Однако такая «внутривыборочная» ошибка почти всегда оказывается оптимистично заниженной: модель может запомнить шум и индивидуальные особенности обучающей выборки ([[Переобучение|переобучиться]]), что приводит к плохой обобщающей способности. Нам же нужна оценка ''вневыборочной'' ошибки — ожидаемой ошибки на новых наблюдениях, полученных из того же распределения, что и тренировочные данные.
-
''Скользящий контроль'' является стандартной методикой тестирования и сравнения алгоритмов [[классификация|классификации]], [[регрессия|регрессии]] и [[прогнозирование|прогнозирования]].
+
Простейший способ — отложить часть данных, однократно обучить модель на оставшейся части и вычислить ошибку на отложенной выборке (англ. hold-out validation). Однако такая оценка сильно зависит от конкретного случайного разбиения и неэффективно использует данные, особенно когда выборка мала. Кросс-валидация преодолевает эти недостатки, усредняя ошибку по нескольким разбиениям.
-
== Определения и обозначения ==
+
Центральная идея: ''данные многократно делятся на обучающую и контрольную части; модель каждый раз обучается заново на обучающей части, а ошибка измеряется на контрольной; итоговая оценка вычисляется как среднее полученных ошибок''. Такой подход позволяет использовать все имеющиеся данные и для обучения, и для контроля, и даёт более стабильную оценку качества.
-
Рассматривается задача [[Обучение с учителем|обучения с учителем]].
+
-
Пусть
+
== Историческая справка ==
-
<tex>X</tex> — множество описаний объектов,
+
Идейным предшественником кросс-валидации является метод ''складного ножа'' (англ. jackknife), предложенный [[Кенуй, Морис|Морисом Кенуем]] (Quenouille, 1949) для оценивания смещения статистических оценок и развитый [[Тьюки, Джон|Джоном Тьюки]] (Tukey, 1958), который дал методу его название<ref name="jackknife">{{статья |автор=Quenouille M. H. |заглавие=Approximate tests of correlation in time-series |издание=Journal of the Royal Statistical Society, Series B |год=1949 |том=11 |номер=1 |страницы=68–84 |doi=10.1111/j.2517-6161.1949.tb00023.x}}</ref><ref>{{статья |автор=Tukey J. W. |заглавие=Bias and confidence in not quite large samples (abstract) |издание=The Annals of Mathematical Statistics |год=1958 |том=29 |номер=2 |страницы=614 |doi=10.1214/aoms/1177706647}}</ref>. Тьюки сравнивал его с универсальным ножом бойскаута, который можно приспособить для самых разных задач, хотя он и уступает специализированным инструментам в каждой конкретной ситуации.
-
<tex>Y</tex> — множество допустимых ответов.
+
-
Задана конечная выборка прецедентов <tex>X^L = (x_i,y_i)_{i=1}^L \subset X\times Y</tex>.
+
Современная кросс-валидация возникла в 1970-х годах в работах [[Стоун, Мервин|Мервина Стоуна]] (Stone, 1974), который ввёл термин «cross-validation», и [[Гейссер, Сеймур|Сеймура Гейссера]] (Geisser, 1975), предложившего метод «прогнозирующего повторного использования выборки» (predictive sample reuse)<ref>{{статья |автор=Stone M. |заглавие=Cross-validatory choice and assessment of statistical predictions |издание=Journal of the Royal Statistical Society, Series B |год=1974 |том=36 |номер=2 |страницы=111–147 |doi=10.1111/j.2517-6161.1974.tb00994.x}}</ref><ref>{{статья |автор=Geisser S. |заглавие=The predictive sample reuse method with applications |издание=Journal of the American Statistical Association |год=1975 |том=70 |номер=350 |страницы=320–328 |doi=10.1080/01621459.1975.10479865}}</ref>. Практически одновременно Аллен (Allen, 1974) предложил критерий PRESS (Prediction Sum of Squares) для линейной регрессии, математически эквивалентный скользящему контролю с последовательным исключением одного наблюдения<ref>{{статья |автор=Allen D. M. |заглавие=The relationship between variable selection and data augmentation and a method for prediction |издание=Technometrics |год=1974 |том=16 |номер=1 |страницы=125–127 |doi=10.1080/00401706.1974.10489157}}</ref>. С 1990-х годов, с ростом популярности методов машинного обучения, кросс-валидация стала стандартным инструментом оценки и сравнения алгоритмов, а исследования Кохави (Kohavi, 1995) закрепили многие современные практические рекомендации<ref name="kohavi">{{статья |автор=Kohavi R. |заглавие=A study of cross-validation and bootstrap for accuracy estimation and model selection |издание=Proceedings of the 14th International Joint Conference on Artificial Intelligence (IJCAI) |год=1995 |страницы=1137–1143 |ссылка=https://www.ijcai.org/Proceedings/95-2/Papers/016.pdf}}</ref>.
-
Задан [[алгоритм обучения]] — отображение <tex>\mu</tex>, которое произвольной конечной выборке прецедентов <tex>X^m</tex> ставит в соответствие функцию (алгоритм) <tex>a:\:X\to Y</tex>.
+
== Основные разновидности кросс-валидации ==
 +
Всюду далее будем считать, что имеется выборка <tex>\mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^{n}</tex>, где <tex>\mathbf{x}_i</tex> — вектор признаков, <tex>y_i</tex> — целевая переменная (числовая в задачах [[Регрессионный анализ|регрессии]] или категориальная в [[Классификация|задачах классификации]]). Модель, обученная на подмножестве <tex>\mathcal{T} \subset \mathcal{D}</tex>, обозначается <tex>\hat{f}_{\mathcal{T}}</tex>. Функция потерь <tex>L(y, \hat{y})</tex> измеряет ошибку прогноза (например, квадратичная ошибка, абсолютная ошибка, индикатор несовпадения классов).
-
Качество алгоритма <tex>a</tex> оценивается по произвольной выборке прецедентов <tex>X^m</tex> с помощью ''функционала качества'' <tex>Q(a,X^m)</tex>.
+
=== k-блочная кросс-валидация (k-fold) ===
-
Для процедуры скользящего контроля не важно, как именно вычисляется этот функционал.
+
Выборка случайным образом разбивается на <tex>k</tex> непересекающихся блоков (англ. folds) примерно равного размера: <tex>\mathcal{D} = \mathcal{F}_1 \cup \dots \cup \mathcal{F}_k</tex>. Для каждого блока <tex>\mathcal{F}_j</tex> выполняются следующие шаги:
-
Как правило, он аддитивен по объектам выборки:
+
# модель обучается на объединении всех блоков, кроме <tex>\mathcal{F}_j</tex> (обучающая подвыборка <tex>\mathcal{D} \setminus \mathcal{F}_j</tex>);
-
::<tex>Q(a,X^m)=\frac{1}{m}\sum_{x_i\in X^m} \mathcal{L}(a(x_i),y_i),</tex>
+
# вычисляется средняя ошибка на отложенном блоке <tex>\mathcal{F}_j</tex>: <tex>\text{Err}_j = \frac{1}{|\mathcal{F}_j|} \sum_{i \in \mathcal{F}_j} L(y_i, \hat{f}_{\mathcal{D} \setminus \mathcal{F}_j}(\mathbf{x}_i))</tex>.
-
где <tex>\mathcal{L}(a(x_i),y_i)</tex> — неотрицательная [[функция потерь]], возвращающая величину ошибки ответа алгоритма <tex>a(x_i)</tex> при правильном ответе <tex>y_i</tex>.
+
Итоговая оценка кросс-валидации есть среднее арифметическое по всем <tex>k</tex> блокам:
 +
: <tex>\text{CV}_{(k)} = \frac{1}{k} \sum_{j=1}^{k} \text{Err}_j.</tex>
-
=== Процедура скользящего контроля ===
+
На практике наиболее распространён выбор <tex>k = 5</tex> или <tex>k = 10</tex>. Такие значения обеспечивают компромисс между смещением и дисперсией оценки (см. ниже). При <tex>k = n</tex> метод переходит в скользящий контроль с исключением по одному наблюдению.
-
Выборка <tex>X^L</tex> разбивается <tex>N</tex> различными способами на две непересекающиеся подвыборки:
+
-
<tex>X^L = X^m_n \cup X^k_n</tex>,
+
-
где
+
-
<tex>X^m_n</tex> — обучающая подвыборка длины <i>m</i>,
+
-
<tex>X^k_n</tex> — контрольная подвыборка длины <tex>k=L-m</tex>,
+
-
<tex>n=1,\ldots,N</tex> — номер разбиения.
+
-
Для каждого разбиения ''n'' строится алгоритм
+
=== Скользящий контроль с исключением по одному (LOOCV) ===
-
<tex>a_n = \mu(X^m_n)</tex>
+
Частный случай k-блочной валидации, когда каждый блок состоит ровно из одного наблюдения: <tex>k = n</tex>. Обозначается LOOCV (leave-one-out cross-validation). Модель обучается <tex>n</tex> раз, каждый раз на всех точках, кроме одной, а ошибка вычисляется на исключённой точке. Оценка:
-
и вычисляется значение функционала качества
+
: <tex>\text{CV}_{\text{LOO}} = \frac{1}{n} \sum_{i=1}^{n} L(y_i, \hat{f}_{-i}(\mathbf{x}_i)),</tex>
-
<tex>Q_n = Q (a_n, X^k_n)</tex>.
+
где <tex>\hat{f}_{-i}</tex> — модель, обученная без <tex>i</tex>-го наблюдения.
-
Среднее арифметическое значений <tex>Q_n</tex> по всем разбиениям называется ''оценкой скользящего контроля'':
+
-
::<tex>CV(\mu,X^L)=\frac1N \sum_{n=1}^N Q (\mu(X^m_n), X^k_n).</tex>
+
-
Различные варианты скользящего контроля отличаются видами функционала качества и способами разбиения выборки.
+
LOOCV обладает минимальным смещением, так как для обучения используется почти вся выборка, но может иметь высокую дисперсию, особенно для нестабильных моделей. Кроме того, он вычислительно затратен при больших <tex>n</tex>, хотя для линейных моделей существуют эффективные аналитические формулы (PRESS-статистика).
-
=== Доверительное оценивание ===
+
=== Полный скользящий контроль (complete cross-validation) ===
-
Кроме среднего значения качества на контроле строят также доверительные интервалы.
+
Полный, или исчерпывающий скользящий контроль (англ. complete cross-validation, exhaustive cross-validation) обобщает LOOCV на случай, когда из выборки исключается не одно, а <tex>p</tex> наблюдений, и перебираются ''все возможные'' комбинации тестовых подвыборок такого размера. Эта процедура также известна как скользящий контроль с исключением <tex>p</tex> наблюдений (leave-<tex>p</tex>-out cross-validation, LPOCV). Оценка вычисляется по формуле:
 +
: <tex>\text{CV}_{\text{LPOCV}} = \frac1{C_n^p} \sum_{\mathcal{S}: |\mathcal{S}|=p} \frac{1}{p} \sum_{i \in \mathcal{S}} L(y_i, \hat{f}_{\mathcal{D}\setminus\mathcal{S}}(\mathbf{x}_i)),</tex>
 +
где сумма берётся по всем <tex>C_n^p</tex> подмножествам <tex>\mathcal{S}</tex> размера <tex>p</tex>.
-
'''Непараметрическая оценка''' [[доверительный интервал|доверительного интервала]].
+
Теоретически LPOCV позволяет тонко управлять компромиссом между смещением и дисперсией, варьируя <tex>p</tex>, однако его практическое применение ограничено экспоненциальным ростом числа обучений. Полный перебор осуществим лишь для очень малых выборок. Шао (Shao, 1993) показал, что для состоятельного выбора модели в линейной регрессии доля исключаемых наблюдений должна расти с объёмом выборки, что стимулировало интерес к LPOCV в теоретических исследованиях<ref name="shao1993">{{статья |автор=Shao J. |заглавие=Linear model selection by cross-validation |издание=Journal of the American Statistical Association |год=1993 |том=88 |номер=422 |страницы=486–494 |doi=10.1080/01621459.1993.10476299}}</ref>.
-
Строится вариационный ряд значений <tex>Q_n = Q (a_n, X^k_n)</tex>, <tex>n=1,\ldots,N</tex>:
+
-
::<tex>Q^{(1)} \leq Q^{(2)} \leq \cdots \leq Q^{(N)}.</tex>
+
-
'''Утверждение 1.'''
+
=== Стратифицированная кросс-валидация ===
-
Если разбиения осуществлялись случайно, независимо и равновероятно,
+
В задачах классификации, особенно при сильном дисбалансе классов, случайное разбиение на блоки может привести к тому, что в некоторые блоки не попадёт ни одного представителя редкого класса, либо распределение классов в блоках будет сильно отличаться от исходного. Стратифицированный вариант сохраняет в каждом блоке ту же пропорцию классов, что и в полной выборке. Аналогичный подход применяют в регрессии, разбивая выборку так, чтобы распределение целевой переменной в блоках было схожим (например, по квантилям).
-
то с вероятностью <tex>\eta= \frac{t}{N+1}</tex>
+
-
значение случайной величины <tex>Q(a(X^m),X^k)</tex>
+
-
не превосходит <tex>Q^{(N-t+1)}</tex>.
+
-
'''Следствие 1.'''
+
Стратификация, как правило, снижает дисперсию оценки кросс-валидации и рекомендуется в большинстве практических руководств, в том числе в работе Кохави (1995)<ref name="kohavi"/>. Она особенно важна при малом объёме данных и в задачах медицинской диагностики, обнаружения мошенничества и других областях с несбалансированными классами.
-
Значение случайной величины <tex>Q(a(X^m),X^k)</tex>
+
-
не превосходит <tex>Q^{(N)}</tex>
+
-
с вероятностью <tex>\eta= \frac{1}{N+1}</tex>.
+
-
В частности, для получения верхней оценки с надёжностью 95% достаточно взять <tex>N=20</tex> разбиений.
+
=== Повторная кросс-валидация (repeated CV) ===
 +
Оценка, полученная однократным разбиением на <tex>k</tex> блоков, может обладать заметной дисперсией из-за случайности разбиения. Для её уменьшения процедуру повторяют несколько раз с разными случайными разбиениями, после чего усредняют результаты. Например, 10-кратная кросс-валидация, повторённая 5 раз, даёт более стабильную оценку, чем однократная 10-кратная. Ценой является пропорциональное увеличение времени вычислений.
-
'''Утверждение 2.'''
+
=== Вложенная кросс-валидация (nested CV) ===
-
Если разбиения осуществлялись случайно, независимо и равновероятно, то с вероятностью
+
Когда кросс-валидация одновременно применяется для выбора модели (настройки гиперпараметров) ''и'' для итоговой оценки её качества, возникает опасность оптимистического смещения: модель «подглядывает» в тестовые блоки внешнего цикла через выбор гиперпараметров. Для строгого разделения этих этапов используют ''вложенную'' (двойную) кросс-валидацию, состоящую из двух вложенных циклов:
-
<tex>\eta= \frac{2t}{N+1}</tex>
+
* ''Внешний цикл'' разбивает все данные на <tex>K</tex> блоков. Каждый внешний блок поочерёдно играет роль независимого тестового набора.
-
значение случайной величины
+
* ''Внутренний цикл'' на оставшихся <tex>K-1</tex> блоках выполняет кросс-валидацию (например, 5-кратную) для настройки гиперпараметров или отбора модели-кандидата. Выбранная таким образом модель обучается на полном внутреннем наборе и оценивается на внешнем тестовом блоке.
-
<tex>Q(a(X^m),X^k)</tex>
+
-
не выходит за границы доверительного интервала
+
-
<tex>\bigl[ Q^{(t)},Q^{(N-t+1)} \bigr]</tex>.
+
-
'''Следствие 2.'''
+
Результатом внешнего цикла является несмещённая оценка производительности ''всей процедуры обучения вместе с выбором гиперпараметров''. Вложенная кросс-валидация — золотой стандарт оценки моделей, когда одновременно решаются задачи настройки и сравнения.
-
Значение случайной величины
+
-
<tex>Q(a(X^m),X^k)</tex>
+
-
не выходит за границы вариационного ряда
+
-
<tex>\bigl[ Q^{(1)},Q^{(N)} \bigr]</tex>
+
-
с вероятностью
+
-
<tex>\eta= \frac{2}{N+1}</tex>.
+
-
В частности, для получения двусторонней оценки с надёжностью 95% достаточно взять
+
=== Другие варианты ===
-
<tex>N=40</tex> разбиений.
+
* '''Скользящий контроль с исключением <tex>p</tex> наблюдений (leave-<tex>p</tex>-out)''' — всевозможные подмножества размера <tex>p</tex> используются как тестовые. Число обучений <tex>C_n^p</tex> обычно слишком велико, поэтому на практике применяется редко.
 +
* '''Случайные подвыборки (Monte Carlo CV)''' — заданное количество случайных разбиений на обучающую и тестовую подвыборки фиксированного размера без требования охватить все данные. Позволяет гибко варьировать долю тестовых данных.
-
'''Параметрические оценки''' доверительного интервала основаны на априорном предположении о виде распределения случайной величины <tex>Q(a(X^m),X^k)</tex>.
+
== Статистические свойства ==
-
Если априорные предположения не выполняются, доверительный интервал может оказаться сильно смещённым.
+
Качество оценки ошибки методом кросс-валидации характеризуется смещением и дисперсией.
-
В&nbsp;частности, если предположения о [[нормальное распределение|нормальности распределения]] не выполнены, то нельзя пользоваться стандартным «правилом двух сигм» или «трёх сигм».
+
-
Джон Лангфорд в своей диссертации (2002) указывает на распространённую ошибку, когда правило двух сигм применяется к функционалу частоты ошибок, имеющему на самом деле [[биномиальное распределение]].
+
-
Однако биномиальным распределением в общем случае тоже пользоваться нельзя, поскольку в результате обучения по случайным подвыборкам <tex>X^m</tex> вероятность ошибки алгоритма <tex>a(X^m)</tex> оказывается случайной величиной.
+
-
Следовательно, случайная величина
+
-
<tex>Q(a(X^m),X^k)</tex>
+
-
описывается не биномиальным распределеним, а (неизвестной) смесью биномиальных распределений.
+
-
Аппроксимация смеси биномиальным распределением может приводить к ошибочному сужению доверительного интервала.
+
-
Приведённые выше непараметрические оценки лишены этого недостатка.
+
-
+
-
=== Стратификация ===
+
-
''[[Стратификация]] выборки'' — это способ уменьшить разброс (дисперсию) оценок скользящего контроля, в результате чего получаются более узкие доверительные интервалы и более точные (tight) верхние оценки.
+
-
Стратификация заключается в том, чтобы заранее поделить выборку на части (страты), и при разбиении на обучение длины ''m'' и контроль длины ''k'' гарантировать, что каждая страта будет поделена между обучением и контролем в той же пропорции <tex>m:k</tex>.
+
* '''Смещение.''' k-блочная кросс-валидация оценивает ожидаемую ошибку модели, обученной на подвыборках размера <tex>n - n/k</tex>. Поскольку ошибка, как правило, убывает с ростом объёма обучающей выборки, оценка CV даёт слегка завышенное значение по сравнению с ошибкой модели, обученной на всех <tex>n</tex> наблюдениях. Для LOOCV это смещение минимально, для малых <tex>k</tex> (например, <tex>k=2</tex>) — максимально.
 +
* '''Дисперсия.''' Дисперсия оценки зависит от стабильности алгоритма обучения. LOOCV может иметь высокую дисперсию, потому что обучающие подвыборки почти одинаковы и предсказания на разных исключаемых точках сильно коррелированы. Эмпирические исследования показывают, что 5- и 10-кратная кросс-валидация часто обеспечивают лучший баланс смещения и дисперсии<ref name="kohavi"/>.
 +
* '''Асимптотические свойства.''' При <tex>n \to \infty</tex> и фиксированном <tex>k</tex> оценка CV является состоятельной для ожидаемой ошибки прогноза.
-
''Стратификация классов'' в задачах [[классификация|классификации]] означает, что каждый класс делится между обучением и контролем в пропорции <tex>m:k</tex>.
+
В задачах классификации дополнительную роль играет выбор метрики: доли правильных ответов (accuracy), средней абсолютной ошибки вероятностей (Brier score), логарифмической функции потерь и т. д. Одна и та же процедура кросс-валидации позволяет оценивать любую из них, однако свойства (смещение/дисперсия) могут различаться.
-
''Стратификация по вещественному признаку''.
+
== Доверительные интервалы в кросс-валидации ==
-
Объекты выборки сортируются согласно некоторому критерию, например, по возрастанию одного из [[признак]]ов.
+
Наряду с точечной оценкой ошибки часто требуется указать доверительный интервал (англ. confidence interval), отражающий неопределённость, связанную с конечностью выборки и случайностью разбиений. Построение корректных интервалов для ошибки кросс-валидации — нетривиальная задача, так как результаты обучения на разных блоках зависимы.
-
Затем выборка разбивается на ''k'' последовательных страт одинаковой {{S|(с точностью до 1)}} длины.
+
-
При формировании контрольных выборок из каждой страты выбирается по одному объекту, либо с заданным порядковым номером внутри страты, либо случайным образом.
+
-
<!--
+
Простейший подход — вычислить выборочное стандартное отклонение ошибок на <tex>k</tex> блоках <tex>s</tex> и построить интервал в виде <tex>\text{CV}_{(k)} \pm t_{k-1,\alpha/2} \, s / \sqrt{k}</tex>. Такой интервал часто оказывается слишком оптимистичным (заужен), потому что не учитывает положительную корреляцию между блоками: модель обучена на сильно перекрывающихся данных. Более корректная оценка дисперсии среднего значения должна явно включать ковариации между ошибками блоков.
-
Контрольная выборка составляется из объектов с порядковыми номерами
+
-
<tex>\Bigl[ (i-1)\frac{(L-1)}{k-1}+1 \Bigr],\; i=1,\ldots,k</tex>.
+
-
-->
+
-
== Разновидности скользящего контроля ==
+
=== Повторная кросс-валидация ===
-
Возможны различные варианты скользящего контроля, отличающиеся способами разбиения выборки.
+
Надо и Бенжио (Nadeau & Bengio, 2003) предложили формулу, модифицирующую наивную оценку дисперсии путём учёта отношения числа тестовых наблюдений к общему числу<ref name="nadeau2003">{{статья |автор=Nadeau C., Bengio Y. |заглавие=Inference for the generalization error |издание=Machine Learning |год=2003 |том=52 |номер=3 |страницы=239–281 |doi=10.1023/A:1024068626366}}</ref>. Если <tex>\text{CV}_i</tex> — средняя ошибка в <tex>i</tex>-м повторении <tex>k</tex>-блочной валидации, а <tex>\bar{\text{CV}} = \frac{1}{R}\sum_{i=1}^{R} \text{CV}_i</tex>, то скорректированная дисперсия среднего оценивается как
 +
: <tex>\widehat{\text{Var}}(\bar{\text{CV}}) = \left(\frac{1}{R} + \frac{1}{k-1}\right) \frac{1}{R-1} \sum_{i=1}^{R} (\text{CV}_i - \bar{\text{CV}})^2.</tex>
 +
На основе неё можно построить приближённый доверительный интервал, используя квантили распределения Стьюдента.
-
=== Полный скользящий контроль (complete CV) ===
+
Другой популярный метод — бутстреп (англ. bootstrap) по результатам повторений: из множества из <tex>R</tex> значений <tex>\text{CV}_i</tex> генерируются бутстреп-выборки, и интервал строится по процентилям. Бутстреп не требует вывода аналитических формул дисперсии, однако ему всё равно необходимо достаточно большое <tex>R</tex> (обычно десятки–сотни повторений).
-
Оценка скользящего контроля строится по всем <tex>N=C_L^k</tex> разбиениям. В зависимости от <tex>k</tex> (длины обучающей выборки) различают:
+
-
* Частный случай при <tex>k=1</tex> — [[Скользящий контроль#Контроль по отдельным объектам (leave-one-out CV)|контроль по отдельным объектам (leave-one-out CV)]];<br />
+
Следует помнить, что никакой несмещённой оценки дисперсии ошибки k-блочной кросс-валидации, не зависящей от неизвестных характеристик распределения данных, в общем случае не существует (Bengio & Grandvalet, 2004)<ref>{{статья |автор=Bengio Y., Grandvalet Y. |заглавие=No unbiased estimator of the variance of K-fold cross-validation |издание=Journal of Machine Learning Research |год=2004 |том=5 |страницы=1089–1105 |ссылка=https://jmlr.org/papers/v5/grandvalet04a.html}}</ref>. Поэтому на практике доверительные интервалы для ошибки CV носят приближённый характер и должны интерпретироваться с осторожностью.
-
Было показано (Li,1987) , что контроль по отдельным объектом является асимптотически оптимальным при некоторых условиях<ref>[http://citeseer.ist.psu.edu/309025.html|Complete Cross-Validation for Nearest Neighbor Classifiers], С. 1137-1145</ref>, то есть:<br />
+
-
<tex>\frac{L_n(\hat{m})}{\inf_{m \in M_n}L_n(m)} \rightarrow 1</tex> по вероятности,<br />
+
=== Непараметрическое доверительное оценивание ===
 +
Рассмотрим вариационный ряд значений
 +
<tex>Q_j = \text{Err}_j</tex>, полученных на разбиениях <tex>j=1,\ldots,N</tex>:
 +
:<tex>Q^{(1)} \leq Q^{(2)} \leq \cdots \leq Q^{(N)}.</tex>
 +
Если бы случайные величины <tex>Q_j</tex> были независимы,
 +
то значение случайной величины <tex>Q_j</tex>
 +
не выходило бы за границы доверительного интервала
 +
<tex>\bigl[ Q^{(t)},Q^{(N-t+1)} \bigr]</tex>
 +
с вероятностью
 +
<tex>\eta= \frac{2t}{N+1}</tex>.
 +
В частности,
 +
для интервальной оценки <tex>\bigl[ Q^{(1)},Q^{(N)} \bigr]</tex> с надёжностью 95%
 +
достаточно взять <tex>N=40</tex> разбиений.
 +
Для получения верхней оценки с надёжностью 95% достаточно взять <tex>N=20</tex> разбиений.
-
где:
+
Проблема в том, что величины <tex>Q_j</tex> не являются независимыми,
-
#<tex>M_n</tex> - класс сравниваемых моделей;
+
и к таким простым оценкам следует относиться с осторожностью, как к эвристическим.
-
#<tex>L_n(m)</tex> - среднеквадратичная ошибка при выборе <tex>m</tex>-ой модели;
+
-
#<tex>\hat{m} = \arg \min_{m \in M_n}{CV(m)}</tex>.
+
-
* Общий случай при <tex>k>2</tex>. Здесь число разбиений <tex>N=C_L^k</tex> становится слишком большим даже при сравнительно малых значениях <tex>k</tex>, что затрудняет практическое применение данного метода. Для этого случая ''полный скользящий контроль'' используется либо в теоретических исследованиях (Воронцов,2004), либо в тех редких ситуациях, когда для него удаётся вывести эффективную вычислительную формулу. Например, такая формула известна для [[метод ближайших соседей|метода <i>k</i>&nbsp;ближайших соседей]] <ref>[http://citeseer.ist.psu.edu/309025.html|Complete Cross-Validation for Nearest Neighbor Classifiers], С. 1137-1145</ref>, что позволяет эффективно выбирать параметр&nbsp;<i>k</i>. На&nbsp;практике чаще применяются другие разновидности ''скользящего контроля''.
+
=== Параметрическое доверительное оценивание ===
-
 
+
Параметрические оценки доверительного интервала основаны на априорном предположении о виде распределения случайной величины <tex>Q_j</tex>.
-
=== Случайные разбиения ===
+
Если априорные предположения не выполняются, доверительный интервал может оказаться сильно смещённым.
-
Разбиения <tex>n=1,\ldots,N</tex> выбираются случайно, независимо и равновероятно из множества всех <tex>C_L^k</tex> разбиений.
+
В&nbsp;частности, если предположения о [[нормальное распределение|нормальности распределения]] не выполнены, то нельзя пользоваться стандартным «правилом двух сигм» или «трёх сигм».
-
Именно для этого случая справедливы приведённые выше оценки доверительных интервалов.
+
Джон Лангфорд в своей диссертации (2002) указывает на распространённую ошибку, когда правило двух сигм применяется к функционалу частоты ошибок, имеющему на самом деле [[биномиальное распределение]].
-
На&nbsp;практике эти оценки, как правило, без изменений переносится и на другие способы разбиения выборки.
+
Однако биномиальным распределением в общем случае тоже пользоваться нельзя, поскольку в результате обучения по случайным подвыборкам вероятность ошибки обученной модели <tex>\hat f</tex> оказывается случайной величиной.
-
 
+
Следовательно, случайная величина
-
=== Контроль на отложенных данных (hold-out CV) ===
+
<tex>Q_j</tex>
-
Оценка скользящего контроля строится по одному случайному разбиению, <tex>N=1</tex>.
+
описывается не биномиальным распределением, а (неизвестной) смесью биномиальных распределений.
-
 
+
Аппроксимация смеси биномиальным распределением может приводить к ошибочному сужению доверительного интервала.
-
Этот способ имеет существенные недостатки:
+
-
# Приходится слишком много объектов оставлять в контрольной подвыборке. Уменьшение длины обучающей подвыборки приводит к смещённой (пессимистически завышенной) оценке вероятности ошибки.
+
-
# Оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.
+
-
# Оценка имеет высокую дисперсию, которая может быть уменьшена путём усреднения по разбиениям.
+
-
 
+
-
Следует различать скользящий контроль по отложенным данным и контроль по тестовой выборке. Если во втором случае оценивается вероятность ошибки для классификатора, построенного по обучающей подвыборке, то в первом случае - для классификатора, построенного по полной выборке (то есть доля ошибок вычисляется не для того классификатора, который выдается в качестве результата решения задачи).
+
-
 
+
-
=== Контроль по отдельным объектам (leave-one-out CV) ===
+
-
Является частным случаем полного скользящего контроля при <tex>k=1</tex>, соотвественно, <tex>N=L</tex>.
+
-
Это, пожалуй, самый распространённый вариант скользящего контроля.
+
-
 
+
-
Преимущества LOO в том, что каждый объект ровно один раз участвует в контроле, а длина обучающих подвыборок лишь на единицу меньше длины полной выборки.
+
-
 
+
-
Недостатком LOO является большая ресурсоёмкость, так как обучаться приходится <tex>L</tex> раз.
+
-
Некоторые методы обучения позволяют достаточно быстро перенастраивать внутренние параметры алгоритма
+
-
при замене одного обучающего объекта другим.
+
-
{{S|В этих}} случаях вычисление LOO удаётся заметно ускорить.
+
-
 
+
-
=== Контроль по ''q'' блокам (''q''-fold CV) ===
+
-
Выборка случайным образом разбивается на ''q'' непересекающихся блоков одинаковой (или почти одинаковой) длины <tex>k_1,\ldots,k_q</tex>:
+
-
::<tex>X^L = X^{k_1}_1 \cup\cdots\cup X^{k_q}_q,</tex>&nbsp;&nbsp;&nbsp;&nbsp;
+
-
<tex>k_1+\dots+k_q = L.</tex>
+
-
Каждый блок по очереди становится контрольной подвыборкой, при этом обучение производится по остальным <tex>q-1</tex> блокам.
+
-
Критерий определяется как средняя ошибка на контрольной подвыборке:
+
-
::<tex>CV(\mu,X^L)=\frac1q \sum_{n=1}^q Q \bigl( \mu(X^L\setminus X^{k_n}_n), X^{k_n}_n \bigr).</tex>
+
-
 
+
-
Это компромисс между LOO, hold-out и случайными разбиениями.
+
-
С&nbsp;одной стороны, обучение производится только <i>q</i>&nbsp;раз вместо&nbsp;<i>L</i>.
+
-
С&nbsp;другой стороны, длина обучающих подвыборок, равная <tex>L\frac{q-1}q</tex> с точностью до округления, не сильно отличается от длины полной {{S|выборки <i>L</i>}}.
+
-
Обычно выборку разбивают случайным образом на 10 или 20 блоков.
+
-
 
+
-
=== Контроль по ''r''×''q'' блокам (''r''×''q''-fold CV) ===
+
-
Контроль по ''q'' блокам (''q''-fold CV) повторяется ''r'' раз.
+
-
Каждый раз выборка случайным образом разбивается на ''q'' непересекающихся блоков.
+
-
Этот способ наследует все преимущества ''q''-fold CV,
+
-
при этом появляется дополнительная возможность увеличивать число разбиений.
+
-
 
+
-
Данный вариант скользящего контроля, со [[Стратификация|стратификацией]] классов, является стандартной методикой тестирования и сравнения алгоритмов [[классификация|классификации]].
+
-
В&nbsp;частности, он применяется в системах [[WEKA]] и «[[Полигон алгоритмов]]».
+
-
== Скользящий контроль в задачах прогнозирования ==
+
== Кросс-валидация в задачах прогнозирования и связь с A/B тестированием ==
-
В задачах [[прогнозирование|прогнозирования]], [[динамическое обучение|динамического обучения]], [[обучение с подкреплением|обучения с подкреплением]] и [[активное обучение|активного обучения]] прецеденты изначально линейно упорядочены по времени их появления.
+
В прогностических задачах различают ''валидацию вне выборки'' (англ. out-of-sample validation) и ''валидацию вне времени'' (англ. out-of-time validation). Первая предполагает, что наблюдения из обучающей и тестовой выборок получены из одного и того же стационарного распределения, и случайное разбиение не нарушает структуру данных. Стандартная кросс-валидация как раз реализует эту идею.
-
В&nbsp;этом случае варианты скользящего контроля не так разнообразны.
+
-
=== Контроль при нарастающей длине обучения ===
+
Однако многие реальные задачи связаны с временными рядами и нестационарной средой. Для оценки способности модели предсказывать ''будущие'' значения применяют специальные схемы:
-
Обучающая подвыборка образуется всеми ''прошлыми'' объектами
+
* Валидация на будущих периодах (out-of-time): разбиение производится с учётом хронологии все тренировочные наблюдения предшествуют тестовым. Кросс-валидация временных рядов (time series cross-validation) использует «скользящее окно» или «расширяющееся окно»: модель последовательно обучается на всё более длинных исторических интервалах и проверяется на непосредственно следующем периоде.
-
<tex>X^m_n = \{x_1,\ldots,x_n\}</tex>.
+
* Такой подход гарантирует, что мы оцениваем именно ''прогнозную'' силу во времени, а не умение модели интерполировать пропуски.
-
Контрольная подвыборка образуется всеми ''будущими'' объектами
+
-
<tex>X^k_n = \{x_{n+\delta+1},\ldots,x_{n+\delta+k}\}</tex>,
+
-
где <tex>\delta\geq 0</tex> величина зедержки прогнозирования (обычно <tex>\delta=0</tex>).
+
-
Момент «настоящего времени» ''n'' «скользит» по выборке данных:
+
-
::<tex>CV(\mu,X^L)=\frac1{T_2-T_1+1} \sum_{n=T_1}^{T_2} Q (\mu(X^m_n), X^k_n),</tex>
+
-
где
+
-
<tex>T_1</tex> — минимальная длина обучающей выборки, требуемая для нормальной работы алгоритма обучения <tex>\mu</tex>,
+
-
<tex>T_2= L-\delta-k</tex>.
+
-
Поскольку длина обучения <tex>m=n</tex> увеличивается со временем, точность прогнозов может постепенно улучшаться.
+
Сравнение с [[A/B тестирование|A/B тестированием]] помогает прояснить роль кросс-валидации. A/B тест — это рандомизированный контролируемый эксперимент в реальной системе, где случайно разделённые пользователи взаимодействуют с разными вариантами продукта (например, двумя версиями рекомендательной системы). Кросс-валидация, напротив, является ретроспективным методом, работающим исключительно с уже собранными данными.
-
Этот побочный эффект является нежелательным, если скользящий контроль применяется для оценивания качества алгоритма обучения.
+
-
=== Контроль при фиксированной длине обучения ===
+
Сходство состоит в том, что оба метода стремятся получить несмещённую оценку эффективности (модели или вмешательства). Различия принципиальны:
-
Отличается от предыдущего варианта только тем, что длина обучения ''m'' фиксируется, ограничивась последними ''m'' прецедентами ряда:
+
* Кросс-валидация опирается на предположение о стационарности и независимости наблюдений, в то время как A/B тест может учитывать временные эффекты, новизну и взаимодействие между пользователями.
-
<tex>X^m_n = \{x_{n-m+1},\ldots,x_n\}</tex>.
+
* Кросс-валидация не может заменить A/B тест для измерения причинно-следственных эффектов, потому что не подразумевает активного рандомизированного вмешательства.
-
При этом полагают <tex>T_1=m</tex>.
+
* На практике кросс-валидацию часто используют для офлайн-отбора лучшей модели-кандидата перед запуском A/B теста, чтобы снизить риски и затраты, связанные с тестированием заведомо слабых вариантов.
-
== Недостатки скользящего контроля ==
+
Таким образом, кросс-валидация и A/B тестирование являются взаимодополняющими инструментами: первая позволяет быстро и дёшево сравнивать модели на исторических данных, второе — подтверждать эффект в реальных условиях эксплуатации.
-
# Задачу обучения приходится решать ''N'' раз, что сопряжено со значительными вычислительными затратами.
+
-
# Оценка скользящего контроля предполагает, что алгоритм обучения <tex>\mu</tex> уже задан. Она ничего не говорит о том, какими свойствами должны обладать «хорошие» алгоритмы обучения, и как их строить. Такого рода подсказки дают, например, теоретические оценки обобщающей способности.
+
-
# Попытка использовать скользящий контроль для обучения, в роли оптимизируемого критерия, приводит к тому, что он утрачивает свойство несмещённости, и снова возникает риск [[переобучение|переобучения]].
+
-
# Скользящий контроль дает несмещенную точечную, но не интервальную оценку риска. В настоящее время не существует методов построения на основе скользящего контроля точных доверительных интервалов для риска, то есть математического ожидания потерь (в частности, вероятности ошибочной классификации).
+
-
== Применения скользящего контроля ==
+
== Кросс-валидация в отборе модели и настройке гиперпараметров ==
-
На практике скользящий контроль применяется для оптимизации некоторых критически важных параметров, как правило, определяющих структуру или сложность используемой модели алгоритма, и имеющих относительно небольшое число возможных значений.
+
Кросс-валидация широко применяется для ''выбора модели'' среди семейства кандидатов (например, выбор степени полинома в регрессии, числа соседей в [[Метод k-ближайших соседей|k-NN]], коэффициента регуляризации в [[Гребневая регрессия|гребневой регрессии]] или [[LASSO]]). Стандартный протокол состоит в том, чтобы для каждого значения гиперпараметра вычислить среднюю ошибку кросс-валидации и выбрать то значение, которое её минимизирует.
-
'''Примеры:'''
+
Для дополнительной устойчивости часто применяют «правило одной стандартной ошибки» (one standard error rule): выбирается наиболее простая (экономная) модель, чья ошибка не превышает минимальную более чем на одно стандартное отклонение ошибки CV<ref>{{книга |автор=Hastie T., Tibshirani R., Friedman J. |часть=7.10.1 K-Fold Cross-Validation |заглавие=The Elements of Statistical Learning |издание=2nd ed. |место=New York |издательство=Springer |год=2009 |страницы=241–245 |isbn=978-0-387-84857-0}}</ref>.
-
* [[Выбор модели]] алгоритмов из небольшого множества альтернативных вариантов.
+
-
* Оптимизация параметра [[регуляризация|регуляризации]], в частности:
+
-
** параметра регуляризации в [[гребневая регрессия|гребневой регрессии]];
+
-
** параметра [[сокращение весов|сокращения весов]] (weight decay) в нейронных сетях;
+
-
** параметра ''C'' в [[метод опорных векторов|методе опорных векторов]].
+
-
* Оптимизация ширины окна в методах
+
-
** [[Метод парзеновского окна|парзеновского окна]];
+
-
** [[Метод ближайшего соседа|ближайшего соседа]];
+
-
** [[Ядерное сглаживание|ядерного сглаживания]].
+
-
* Оптимизация числа нейронов в скрытом слое [[Многослойный персептрон|многослойной нейронной сети]].
+
-
* [[Селекция признаков|Выбор информативного набора признаков]].
+
-
* [[Редукция решающего дерева]].
+
-
* [[Структурная минимизация риска]].
+
-
<!--
+
Критически важно помнить: если кросс-валидация используется и для выбора гиперпараметров, и для финальной оценки, то ''итоговую ошибку необходимо измерять на независимом тестовом наборе, не участвовавшем ни в одном из предыдущих этапов''. В противном случае оценка будет чрезмерно оптимистичной. Вложенная кросс-валидация, описанная выше, позволяет получить практически несмещённую оценку без откладывания отдельного тестового набора.
-
== Теоретические оценки ==
+
-
== Ссылки ==
+
-
-->
+
-
== Примечания ==
+
== Распространённые ошибки и практические рекомендации ==
-
<references />
+
* '''Утечка данных (data leakage).''' Любая предобработка, опирающаяся на статистики всей выборки (центрирование, масштабирование, отбор признаков, заполнение пропусков), должна выполняться отдельно внутри каждого блока кросс-валидации на основе только обучающей подвыборки. Игнорирование этого правила завышает кажущуюся обобщающую способность.
 +
* '''Несбалансированные классы.''' Всегда следует использовать стратифицированное разбиение; простой случайный k-fold может привести к блокам без представителей минорного класса и полностью исказить оценку.
 +
* '''Выбор числа блоков <tex>k</tex>.''' Для малых выборок (<tex>n < 100</tex>) часто используют LOOCV или <tex>k=n</tex>. Для средних и больших выборок стандартом де-факто является <tex>k=10</tex>; <tex>k=5</tex> даёт меньшую дисперсию, но чуть большее смещение. При значительном дисбалансе число блоков можно увеличить.
 +
* '''Повторная кросс-валидация и статистические тесты.''' При сравнении нескольких алгоритмов многократно повторённая кросс-валидация позволяет применить парные статистические тесты (например, тест Уилкоксона или скорректированный t-тест) для формальной проверки гипотез о превосходстве одного метода над другим<ref>{{статья |автор=Dietterich T. G. |заглавие=Approximate statistical tests for comparing supervised classification learning algorithms |издание=Neural Computation |год=1998 |том=10 |номер=7 |страницы=1895–1923 |doi=10.1162/089976698300017197}}</ref>.
 +
* '''Детерминированные модели.''' Для некоторых алгоритмов (например, линейная регрессия с фиксированными предикторами) кросс-валидация даёт детерминированный результат; для методов, зависящих от случайной инициализации (нейронные сети, случайный лес), необходимо фиксировать начальное состояние генератора случайных чисел, чтобы обеспечить воспроизводимость.
-
== Литература ==
+
== См. также ==
-
+
* [[Переобучение]]
-
# {{книга
+
* [[Bootstrap (статистика)]]
-
|автор = Воронцов К. В.
+
* [[Регуляризация (машинное обучение)]]
-
|заглавие = Комбинаторный подход к оценке качества обучаемых алгоритмов
+
* [[Информационный критерий Акаике]]
-
|издание = Математические вопросы кибернетики / Под ред. О. Б. Лупанов
+
* [[Байесовский информационный критерий]]
-
|место = М.
+
* [[A/B тестирование]]
-
|издательство = Физматлит
+
* [[Прогнозирование временных рядов]]
-
|год = 2004
+
-
|том = 13
+
-
|страницы = 5–36
+
-
}}
+
-
# {{книга
+
-
|автор = Эфрон Б.
+
-
|заглавие = Нетрадиционные методы многомерного статистического анализа
+
-
|издание = М: Финансы и статистика
+
-
|год = 1988
+
-
}}
+
-
# {{книга
+
-
|автор = Langford J.
+
-
|заглавие = Quantitatively Tight Sample Complexity Bounds
+
-
|ссылка = http://citeseer.ist.psu.edu/langford02quantitatively.html
+
-
|издание = Carnegie Mellon Thesis
+
-
|год = 2002
+
-
|страниц = 124
+
-
}}
+
-
# {{книга
+
-
|автор = Kohavi R.
+
-
|заглавие = A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection
+
-
|ссылка = http://citeseer.ist.psu.edu/kohavi95study.html
+
-
|издание = 14th International Joint Conference on Artificial Intelligence, Palais de Congres Montreal, Quebec, Canada
+
-
|год = 1995
+
-
|страницы = 1137-1145
+
-
}}
+
-
# {{книга
+
-
|автор = Mullin M., Sukthankar R.
+
-
|заглавие = Complete Cross-Validation for Nearest Neighbor Classifiers
+
-
|ссылка = http://citeseer.ist.psu.edu/309025.html
+
-
|издание = Proceedings of International Conference on Machine Learning
+
-
|год = 2000
+
-
|страницы = 1137-1145
+
-
}}
+
-
{{stub}}
+
== Примечания ==
 +
{{примечания}}
-
[[Категория:Машинное обучение]]
+
== Литература ==
 +
* {{книга |автор=Hastie T., Tibshirani R., Friedman J. |заглавие=The Elements of Statistical Learning: Data Mining, Inference, and Prediction |издание=2nd ed. |место=New York |издательство=Springer |год=2009 |allpages=745 |isbn=978-0-387-84857-0 |ref=Hastie}} — Глава 7 «Model Assessment and Selection».
 +
* {{книга |автор=James G., Witten D., Hastie T., Tibshirani R. |заглавие=An Introduction to Statistical Learning: with Applications in R |место=New York |издательство=Springer |год=2013 |isbn=978-1-4614-7137-0}} — Глава 5 «Resampling Methods».
 +
* {{статья |автор=Kohavi R. |заглавие=A study of cross-validation and bootstrap for accuracy estimation and model selection |издание=Proceedings of the 14th International Joint Conference on Artificial Intelligence (IJCAI) |год=1995 |страницы=1137–1143}}
 +
* {{статья |автор=Stone M. |заглавие=Cross-validatory choice and assessment of statistical predictions |издание=Journal of the Royal Statistical Society, Series B |год=1974 |том=36 |номер=2 |страницы=111–147 |doi=10.1111/j.2517-6161.1974.tb00994.x}}
 +
* {{статья |автор=Geisser S. |заглавие=The predictive sample reuse method with applications |издание=Journal of the American Statistical Association |год=1975 |том=70 |номер=350 |страницы=320–328 |doi=10.1080/01621459.1975.10479865}}
 +
* {{статья |автор=Arlot S., Celisse A. |заглавие=A survey of cross-validation procedures for model selection |издание=Statistics Surveys |год=2010 |том=4 |страницы=40–79 |doi=10.1214/09-SS054}}
 +
* {{статья |автор=Shao J. |заглавие=Linear model selection by cross-validation |издание=Journal of the American Statistical Association |год=1993 |том=88 |номер=422 |страницы=486–494 |doi=10.1080/01621459.1993.10476299}}
 +
* {{статья |автор=Nadeau C., Bengio Y. |заглавие=Inference for the generalization error |издание=Machine Learning |год=2003 |том=52 |номер=3 |страницы=239–281 |doi=10.1023/A:1024068626366}}
 +
* {{статья |автор=Bengio Y., Grandvalet Y. |заглавие=No unbiased estimator of the variance of K-fold cross-validation |издание=Journal of Machine Learning Research |год=2004 |том=5 |страницы=1089–1105}}

Версия 15:47, 12 июня 2026

Кросс-валида́ция (перекрёстная прове́рка, скользя́щий контро́ль, англ. cross-validation) — метод оценки предсказательной способности моделей машинного обучения и статистических моделей, основанный на многократном разбиении исходной выборки на обучающую и проверочную (тестовую) подвыборки. Основная цель кросс-валидации — получить несмещённую (или слабо смещённую) оценку ожидаемой ошибки модели на новых данных, не участвовавших в обучении, и тем самым избежать переобучения при выборе модели или настройке её гиперпараметров.

В современной практике анализа данных и машинного обучения кросс-валидация является одним из основных инструментов сравнения алгоритмов, отбора признаков и оптимизации гиперпараметров. Её систематическое применение позволяет разделить этапы обучения, выбора модели и итоговой оценки качества, что критически важно для получения надёжных и воспроизводимых результатов.

Содержание

Мотивировка и основные идеи

При построении прогностической модели естественно измерять её качество на тех же данных, на которых она обучалась. Однако такая «внутривыборочная» ошибка почти всегда оказывается оптимистично заниженной: модель может запомнить шум и индивидуальные особенности обучающей выборки (переобучиться), что приводит к плохой обобщающей способности. Нам же нужна оценка вневыборочной ошибки — ожидаемой ошибки на новых наблюдениях, полученных из того же распределения, что и тренировочные данные.

Простейший способ — отложить часть данных, однократно обучить модель на оставшейся части и вычислить ошибку на отложенной выборке (англ. hold-out validation). Однако такая оценка сильно зависит от конкретного случайного разбиения и неэффективно использует данные, особенно когда выборка мала. Кросс-валидация преодолевает эти недостатки, усредняя ошибку по нескольким разбиениям.

Центральная идея: данные многократно делятся на обучающую и контрольную части; модель каждый раз обучается заново на обучающей части, а ошибка измеряется на контрольной; итоговая оценка вычисляется как среднее полученных ошибок. Такой подход позволяет использовать все имеющиеся данные и для обучения, и для контроля, и даёт более стабильную оценку качества.

Историческая справка

Идейным предшественником кросс-валидации является метод складного ножа (англ. jackknife), предложенный Морисом Кенуем (Quenouille, 1949) для оценивания смещения статистических оценок и развитый Джоном Тьюки (Tukey, 1958), который дал методу его название[1][1]. Тьюки сравнивал его с универсальным ножом бойскаута, который можно приспособить для самых разных задач, хотя он и уступает специализированным инструментам в каждой конкретной ситуации.

Современная кросс-валидация возникла в 1970-х годах в работах Мервина Стоуна (Stone, 1974), который ввёл термин «cross-validation», и Сеймура Гейссера (Geisser, 1975), предложившего метод «прогнозирующего повторного использования выборки» (predictive sample reuse)[1][1]. Практически одновременно Аллен (Allen, 1974) предложил критерий PRESS (Prediction Sum of Squares) для линейной регрессии, математически эквивалентный скользящему контролю с последовательным исключением одного наблюдения[1]. С 1990-х годов, с ростом популярности методов машинного обучения, кросс-валидация стала стандартным инструментом оценки и сравнения алгоритмов, а исследования Кохави (Kohavi, 1995) закрепили многие современные практические рекомендации[1].

Основные разновидности кросс-валидации

Всюду далее будем считать, что имеется выборка \mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^{n}, где \mathbf{x}_i — вектор признаков, y_i — целевая переменная (числовая в задачах регрессии или категориальная в задачах классификации). Модель, обученная на подмножестве \mathcal{T} \subset \mathcal{D}, обозначается \hat{f}_{\mathcal{T}}. Функция потерь L(y, \hat{y}) измеряет ошибку прогноза (например, квадратичная ошибка, абсолютная ошибка, индикатор несовпадения классов).

k-блочная кросс-валидация (k-fold)

Выборка случайным образом разбивается на k непересекающихся блоков (англ. folds) примерно равного размера: \mathcal{D} = \mathcal{F}_1 \cup \dots \cup \mathcal{F}_k. Для каждого блока \mathcal{F}_j выполняются следующие шаги:

  1. модель обучается на объединении всех блоков, кроме \mathcal{F}_j (обучающая подвыборка \mathcal{D} \setminus \mathcal{F}_j);
  2. вычисляется средняя ошибка на отложенном блоке \mathcal{F}_j: \text{Err}_j = \frac{1}{|\mathcal{F}_j|} \sum_{i \in \mathcal{F}_j} L(y_i, \hat{f}_{\mathcal{D} \setminus \mathcal{F}_j}(\mathbf{x}_i)).

Итоговая оценка кросс-валидации есть среднее арифметическое по всем k блокам:

\text{CV}_{(k)} = \frac{1}{k} \sum_{j=1}^{k} \text{Err}_j.

На практике наиболее распространён выбор k = 5 или k = 10. Такие значения обеспечивают компромисс между смещением и дисперсией оценки (см. ниже). При k = n метод переходит в скользящий контроль с исключением по одному наблюдению.

Скользящий контроль с исключением по одному (LOOCV)

Частный случай k-блочной валидации, когда каждый блок состоит ровно из одного наблюдения: k = n. Обозначается LOOCV (leave-one-out cross-validation). Модель обучается n раз, каждый раз на всех точках, кроме одной, а ошибка вычисляется на исключённой точке. Оценка:

\text{CV}_{\text{LOO}} = \frac{1}{n} \sum_{i=1}^{n} L(y_i, \hat{f}_{-i}(\mathbf{x}_i)),

где \hat{f}_{-i} — модель, обученная без i-го наблюдения.

LOOCV обладает минимальным смещением, так как для обучения используется почти вся выборка, но может иметь высокую дисперсию, особенно для нестабильных моделей. Кроме того, он вычислительно затратен при больших n, хотя для линейных моделей существуют эффективные аналитические формулы (PRESS-статистика).

Полный скользящий контроль (complete cross-validation)

Полный, или исчерпывающий скользящий контроль (англ. complete cross-validation, exhaustive cross-validation) обобщает LOOCV на случай, когда из выборки исключается не одно, а p наблюдений, и перебираются все возможные комбинации тестовых подвыборок такого размера. Эта процедура также известна как скользящий контроль с исключением p наблюдений (leave-p-out cross-validation, LPOCV). Оценка вычисляется по формуле:

\text{CV}_{\text{LPOCV}} = \frac1{C_n^p} \sum_{\mathcal{S}: |\mathcal{S}|=p} \frac{1}{p} \sum_{i \in \mathcal{S}} L(y_i, \hat{f}_{\mathcal{D}\setminus\mathcal{S}}(\mathbf{x}_i)),

где сумма берётся по всем C_n^p подмножествам \mathcal{S} размера p.

Теоретически LPOCV позволяет тонко управлять компромиссом между смещением и дисперсией, варьируя p, однако его практическое применение ограничено экспоненциальным ростом числа обучений. Полный перебор осуществим лишь для очень малых выборок. Шао (Shao, 1993) показал, что для состоятельного выбора модели в линейной регрессии доля исключаемых наблюдений должна расти с объёмом выборки, что стимулировало интерес к LPOCV в теоретических исследованиях[1].

Стратифицированная кросс-валидация

В задачах классификации, особенно при сильном дисбалансе классов, случайное разбиение на блоки может привести к тому, что в некоторые блоки не попадёт ни одного представителя редкого класса, либо распределение классов в блоках будет сильно отличаться от исходного. Стратифицированный вариант сохраняет в каждом блоке ту же пропорцию классов, что и в полной выборке. Аналогичный подход применяют в регрессии, разбивая выборку так, чтобы распределение целевой переменной в блоках было схожим (например, по квантилям).

Стратификация, как правило, снижает дисперсию оценки кросс-валидации и рекомендуется в большинстве практических руководств, в том числе в работе Кохави (1995)[1]. Она особенно важна при малом объёме данных и в задачах медицинской диагностики, обнаружения мошенничества и других областях с несбалансированными классами.

Повторная кросс-валидация (repeated CV)

Оценка, полученная однократным разбиением на k блоков, может обладать заметной дисперсией из-за случайности разбиения. Для её уменьшения процедуру повторяют несколько раз с разными случайными разбиениями, после чего усредняют результаты. Например, 10-кратная кросс-валидация, повторённая 5 раз, даёт более стабильную оценку, чем однократная 10-кратная. Ценой является пропорциональное увеличение времени вычислений.

Вложенная кросс-валидация (nested CV)

Когда кросс-валидация одновременно применяется для выбора модели (настройки гиперпараметров) и для итоговой оценки её качества, возникает опасность оптимистического смещения: модель «подглядывает» в тестовые блоки внешнего цикла через выбор гиперпараметров. Для строгого разделения этих этапов используют вложенную (двойную) кросс-валидацию, состоящую из двух вложенных циклов:

  • Внешний цикл разбивает все данные на K блоков. Каждый внешний блок поочерёдно играет роль независимого тестового набора.
  • Внутренний цикл на оставшихся K-1 блоках выполняет кросс-валидацию (например, 5-кратную) для настройки гиперпараметров или отбора модели-кандидата. Выбранная таким образом модель обучается на полном внутреннем наборе и оценивается на внешнем тестовом блоке.

Результатом внешнего цикла является несмещённая оценка производительности всей процедуры обучения вместе с выбором гиперпараметров. Вложенная кросс-валидация — золотой стандарт оценки моделей, когда одновременно решаются задачи настройки и сравнения.

Другие варианты

  • Скользящий контроль с исключением p наблюдений (leave-p-out) — всевозможные подмножества размера p используются как тестовые. Число обучений C_n^p обычно слишком велико, поэтому на практике применяется редко.
  • Случайные подвыборки (Monte Carlo CV) — заданное количество случайных разбиений на обучающую и тестовую подвыборки фиксированного размера без требования охватить все данные. Позволяет гибко варьировать долю тестовых данных.

Статистические свойства

Качество оценки ошибки методом кросс-валидации характеризуется смещением и дисперсией.

  • Смещение. k-блочная кросс-валидация оценивает ожидаемую ошибку модели, обученной на подвыборках размера n - n/k. Поскольку ошибка, как правило, убывает с ростом объёма обучающей выборки, оценка CV даёт слегка завышенное значение по сравнению с ошибкой модели, обученной на всех n наблюдениях. Для LOOCV это смещение минимально, для малых k (например, k=2) — максимально.
  • Дисперсия. Дисперсия оценки зависит от стабильности алгоритма обучения. LOOCV может иметь высокую дисперсию, потому что обучающие подвыборки почти одинаковы и предсказания на разных исключаемых точках сильно коррелированы. Эмпирические исследования показывают, что 5- и 10-кратная кросс-валидация часто обеспечивают лучший баланс смещения и дисперсии[1].
  • Асимптотические свойства. При n \to \infty и фиксированном k оценка CV является состоятельной для ожидаемой ошибки прогноза.

В задачах классификации дополнительную роль играет выбор метрики: доли правильных ответов (accuracy), средней абсолютной ошибки вероятностей (Brier score), логарифмической функции потерь и т. д. Одна и та же процедура кросс-валидации позволяет оценивать любую из них, однако свойства (смещение/дисперсия) могут различаться.

Доверительные интервалы в кросс-валидации

Наряду с точечной оценкой ошибки часто требуется указать доверительный интервал (англ. confidence interval), отражающий неопределённость, связанную с конечностью выборки и случайностью разбиений. Построение корректных интервалов для ошибки кросс-валидации — нетривиальная задача, так как результаты обучения на разных блоках зависимы.

Простейший подход — вычислить выборочное стандартное отклонение ошибок на k блоках s и построить интервал в виде \text{CV}_{(k)} \pm t_{k-1,\alpha/2} \, s / \sqrt{k}. Такой интервал часто оказывается слишком оптимистичным (заужен), потому что не учитывает положительную корреляцию между блоками: модель обучена на сильно перекрывающихся данных. Более корректная оценка дисперсии среднего значения должна явно включать ковариации между ошибками блоков.

Повторная кросс-валидация

Надо и Бенжио (Nadeau & Bengio, 2003) предложили формулу, модифицирующую наивную оценку дисперсии путём учёта отношения числа тестовых наблюдений к общему числу[1]. Если \text{CV}_i — средняя ошибка в i-м повторении k-блочной валидации, а \bar{\text{CV}} = \frac{1}{R}\sum_{i=1}^{R} \text{CV}_i, то скорректированная дисперсия среднего оценивается как

\widehat{\text{Var}}(\bar{\text{CV}}) = \left(\frac{1}{R} + \frac{1}{k-1}\right) \frac{1}{R-1} \sum_{i=1}^{R} (\text{CV}_i - \bar{\text{CV}})^2.

На основе неё можно построить приближённый доверительный интервал, используя квантили распределения Стьюдента.

Другой популярный метод — бутстреп (англ. bootstrap) по результатам повторений: из множества из R значений \text{CV}_i генерируются бутстреп-выборки, и интервал строится по процентилям. Бутстреп не требует вывода аналитических формул дисперсии, однако ему всё равно необходимо достаточно большое R (обычно десятки–сотни повторений).

Следует помнить, что никакой несмещённой оценки дисперсии ошибки k-блочной кросс-валидации, не зависящей от неизвестных характеристик распределения данных, в общем случае не существует (Bengio & Grandvalet, 2004)[1]. Поэтому на практике доверительные интервалы для ошибки CV носят приближённый характер и должны интерпретироваться с осторожностью.

Непараметрическое доверительное оценивание

Рассмотрим вариационный ряд значений Q_j = \text{Err}_j, полученных на разбиениях j=1,\ldots,N:

Q^{(1)} \leq Q^{(2)} \leq \cdots \leq Q^{(N)}.

Если бы случайные величины Q_j были независимы, то значение случайной величины Q_j не выходило бы за границы доверительного интервала \bigl[ Q^{(t)},Q^{(N-t+1)} \bigr] с вероятностью \eta= \frac{2t}{N+1}. В частности, для интервальной оценки \bigl[ Q^{(1)},Q^{(N)} \bigr] с надёжностью 95% достаточно взять N=40 разбиений. Для получения верхней оценки с надёжностью 95% достаточно взять N=20 разбиений.

Проблема в том, что величины Q_j не являются независимыми, и к таким простым оценкам следует относиться с осторожностью, как к эвристическим.

Параметрическое доверительное оценивание

Параметрические оценки доверительного интервала основаны на априорном предположении о виде распределения случайной величины Q_j. Если априорные предположения не выполняются, доверительный интервал может оказаться сильно смещённым. В частности, если предположения о нормальности распределения не выполнены, то нельзя пользоваться стандартным «правилом двух сигм» или «трёх сигм». Джон Лангфорд в своей диссертации (2002) указывает на распространённую ошибку, когда правило двух сигм применяется к функционалу частоты ошибок, имеющему на самом деле биномиальное распределение. Однако биномиальным распределением в общем случае тоже пользоваться нельзя, поскольку в результате обучения по случайным подвыборкам вероятность ошибки обученной модели \hat f оказывается случайной величиной. Следовательно, случайная величина Q_j описывается не биномиальным распределением, а (неизвестной) смесью биномиальных распределений. Аппроксимация смеси биномиальным распределением может приводить к ошибочному сужению доверительного интервала.

Кросс-валидация в задачах прогнозирования и связь с A/B тестированием

В прогностических задачах различают валидацию вне выборки (англ. out-of-sample validation) и валидацию вне времени (англ. out-of-time validation). Первая предполагает, что наблюдения из обучающей и тестовой выборок получены из одного и того же стационарного распределения, и случайное разбиение не нарушает структуру данных. Стандартная кросс-валидация как раз реализует эту идею.

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

  • Валидация на будущих периодах (out-of-time): разбиение производится с учётом хронологии — все тренировочные наблюдения предшествуют тестовым. Кросс-валидация временных рядов (time series cross-validation) использует «скользящее окно» или «расширяющееся окно»: модель последовательно обучается на всё более длинных исторических интервалах и проверяется на непосредственно следующем периоде.
  • Такой подход гарантирует, что мы оцениваем именно прогнозную силу во времени, а не умение модели интерполировать пропуски.

Сравнение с A/B тестированием помогает прояснить роль кросс-валидации. A/B тест — это рандомизированный контролируемый эксперимент в реальной системе, где случайно разделённые пользователи взаимодействуют с разными вариантами продукта (например, двумя версиями рекомендательной системы). Кросс-валидация, напротив, является ретроспективным методом, работающим исключительно с уже собранными данными.

Сходство состоит в том, что оба метода стремятся получить несмещённую оценку эффективности (модели или вмешательства). Различия принципиальны:

  • Кросс-валидация опирается на предположение о стационарности и независимости наблюдений, в то время как A/B тест может учитывать временные эффекты, новизну и взаимодействие между пользователями.
  • Кросс-валидация не может заменить A/B тест для измерения причинно-следственных эффектов, потому что не подразумевает активного рандомизированного вмешательства.
  • На практике кросс-валидацию часто используют для офлайн-отбора лучшей модели-кандидата перед запуском A/B теста, чтобы снизить риски и затраты, связанные с тестированием заведомо слабых вариантов.

Таким образом, кросс-валидация и A/B тестирование являются взаимодополняющими инструментами: первая позволяет быстро и дёшево сравнивать модели на исторических данных, второе — подтверждать эффект в реальных условиях эксплуатации.

Кросс-валидация в отборе модели и настройке гиперпараметров

Кросс-валидация широко применяется для выбора модели среди семейства кандидатов (например, выбор степени полинома в регрессии, числа соседей в k-NN, коэффициента регуляризации в гребневой регрессии или LASSO). Стандартный протокол состоит в том, чтобы для каждого значения гиперпараметра вычислить среднюю ошибку кросс-валидации и выбрать то значение, которое её минимизирует.

Для дополнительной устойчивости часто применяют «правило одной стандартной ошибки» (one standard error rule): выбирается наиболее простая (экономная) модель, чья ошибка не превышает минимальную более чем на одно стандартное отклонение ошибки CV[1].

Критически важно помнить: если кросс-валидация используется и для выбора гиперпараметров, и для финальной оценки, то итоговую ошибку необходимо измерять на независимом тестовом наборе, не участвовавшем ни в одном из предыдущих этапов. В противном случае оценка будет чрезмерно оптимистичной. Вложенная кросс-валидация, описанная выше, позволяет получить практически несмещённую оценку без откладывания отдельного тестового набора.

Распространённые ошибки и практические рекомендации

  • Утечка данных (data leakage). Любая предобработка, опирающаяся на статистики всей выборки (центрирование, масштабирование, отбор признаков, заполнение пропусков), должна выполняться отдельно внутри каждого блока кросс-валидации на основе только обучающей подвыборки. Игнорирование этого правила завышает кажущуюся обобщающую способность.
  • Несбалансированные классы. Всегда следует использовать стратифицированное разбиение; простой случайный k-fold может привести к блокам без представителей минорного класса и полностью исказить оценку.
  • Выбор числа блоков k. Для малых выборок (n < 100) часто используют LOOCV или k=n. Для средних и больших выборок стандартом де-факто является k=10; k=5 даёт меньшую дисперсию, но чуть большее смещение. При значительном дисбалансе число блоков можно увеличить.
  • Повторная кросс-валидация и статистические тесты. При сравнении нескольких алгоритмов многократно повторённая кросс-валидация позволяет применить парные статистические тесты (например, тест Уилкоксона или скорректированный t-тест) для формальной проверки гипотез о превосходстве одного метода над другим[1].
  • Детерминированные модели. Для некоторых алгоритмов (например, линейная регрессия с фиксированными предикторами) кросс-валидация даёт детерминированный результат; для методов, зависящих от случайной инициализации (нейронные сети, случайный лес), необходимо фиксировать начальное состояние генератора случайных чисел, чтобы обеспечить воспроизводимость.

См. также

Примечания

Литература

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed.. — New York: Springer, 2009. — ISBN 978-0-387-84857-0 — Глава 7 «Model Assessment and Selection».
  • James G., Witten D., Hastie T., Tibshirani R. An Introduction to Statistical Learning: with Applications in R. — New York: Springer, 2013. — ISBN 978-1-4614-7137-0 — Глава 5 «Resampling Methods».
  • Kohavi R. A study of cross-validation and bootstrap for accuracy estimation and model selection // Proceedings of the 14th International Joint Conference on Artificial Intelligence (IJCAI). — 1995. — С. 1137–1143.
  • Stone M. Cross-validatory choice and assessment of statistical predictions // Journal of the Royal Statistical Society, Series B. — 1974. — Т. 36. — № 2. — С. 111–147.
  • Geisser S. The predictive sample reuse method with applications // Journal of the American Statistical Association. — 1975. — Т. 70. — № 350. — С. 320–328.
  • Arlot S., Celisse A. A survey of cross-validation procedures for model selection // Statistics Surveys. — 2010. — Т. 4. — С. 40–79.
  • Shao J. Linear model selection by cross-validation // Journal of the American Statistical Association. — 1993. — Т. 88. — № 422. — С. 486–494.
  • Nadeau C., Bengio Y. Inference for the generalization error // Machine Learning. — 2003. — Т. 52. — № 3. — С. 239–281.
  • Bengio Y., Grandvalet Y. No unbiased estimator of the variance of K-fold cross-validation // Journal of Machine Learning Research. — 2004. — Т. 5. — С. 1089–1105.