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

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

(Различия между версиями)
Перейти к: навигация, поиск
м
м
 
(12 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
'''Скользящий контроль''' или '''кросс-проверка''' или '''кросс-валидация''' (cross-validation, CV) — процедура эмпирического оценивания [[Обобщающая способность|обобщающей способности]] алгоритмов, [[обучение по прецедентам|обучаемых по прецедентам]].
+
{{well|Статья написана с использованием LLM DeepSeek и проверена участником [[Участник:Vokov|К.В.Воронцов]] 19:49, 12 июня 2026 (MSD)}}
-
Фиксируется некоторое множество разбиений исходной выборки на две подвыборки: ''обучающую'' и ''контрольную''.
+
'''Кросс-валида́ция''' (перекрёстная прове́рка, скользя́щий контро́ль, англ. cross-validation) — метод оценки предсказательной способности [[Машинное обучение|моделей машинного обучения]] и [[Статистическая модель|статистических моделей]], основанный на многократном разбиении исходной выборки на обучающую и проверочную (тестовую) [[Выборка|подвыборки]]. Основная цель кросс-валидации — получить несмещённую (или слабо смещённую) оценку ожидаемой ошибки модели на новых данных, не участвовавших в обучении, и тем самым избежать [[Переобучение|переобучения]] при выборе модели или настройке её [[Гиперпараметр (машинное обучение)|гиперпараметров]].
-
Для каждого разбиения выполняется настройка алгоритма по обучающей подвыборке,
+
-
затем оценивается его средняя ошибка на объектах контрольной подвыборки.
+
-
''Оценкой скользящего контроля'' называется средняя по всем разбиениям величина ошибки на контрольных подвыборках.
+
-
Если выборка независима, то средняя ошибка ''скользящего контроля'' даёт несмещённую оценку вероятности ошибки.
+
В современной практике [[Анализ данных|анализа данных]] и [[Машинное обучение|машинного обучения]] кросс-валидация является одним из основных инструментов сравнения алгоритмов, отбора признаков и оптимизации гиперпараметров. Её систематическое применение позволяет разделить этапы обучения, выбора модели и итоговой оценки качества, что критически важно для получения надёжных и воспроизводимых результатов.
-
Это выгодно отличает её от средней ошибки на обучающей выборке, которая может оказаться смещённой (оптимистически заниженной) оценкой вероятности ошибки, что связано с [[Переобучение|явлением переобучения]].
+
-
''Скользящий контроль'' является стандартной методикой тестирования и сравнения алгоритмов [[классификация|классификации]], [[регрессия|регрессии]] и [[прогнозирование|прогнозирования]].
+
== Мотивировка и основные идеи ==
 +
При построении прогностической модели естественно измерять её качество на тех же данных, на которых она обучалась. Однако такая «внутривыборочная» ошибка почти всегда оказывается оптимистично заниженной: модель может запомнить шум и индивидуальные особенности обучающей выборки ([[Переобучение|переобучиться]]), что приводит к плохой обобщающей способности. Нам же нужна оценка ''вневыборочной'' ошибки — ожидаемой ошибки на новых наблюдениях, полученных из того же распределения, что и тренировочные данные.
-
== Определения и обозначения ==
+
Простейший способ — отложить часть данных, однократно обучить модель на оставшейся части и вычислить ошибку на отложенной выборке (англ. hold-out validation). Однако такая оценка сильно зависит от конкретного случайного разбиения и неэффективно использует данные, особенно когда выборка мала. Кросс-валидация преодолевает эти недостатки, усредняя ошибку по нескольким разбиениям.
-
Рассматривается задача [[Обучение с учителем|обучения с учителем]].
+
-
Пусть
+
Центральная идея: ''данные многократно делятся на обучающую и контрольную части; модель каждый раз обучается заново на обучающей части, а ошибка измеряется на контрольной; итоговая оценка вычисляется как среднее полученных ошибок''. Такой подход позволяет использовать все имеющиеся данные и для обучения, и для контроля, и даёт более стабильную оценку качества.
-
<tex>X</tex> — множество описаний объектов,
+
-
<tex>Y</tex> — множество допустимых ответов.
+
-
Задана конечная выборка прецедентов <tex>X^L = (x_i,y_i)_{i=1}^L \subset X\times Y</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>\mu</tex>, которое произвольной конечной выборке <tex>X^m</tex> ставит в соответствие функцию (алгоритм) <tex>a:\:X\to 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–1145 |ссылка=https://www.ijcai.org/Proceedings/95-2/Papers/016.pdf}}</ref>.
-
Задан функционал <tex>Q(a,X^m)</tex>, оценивающий качество алгоритма <tex>a</tex> по конечной выборке прецедентов <tex>X^m</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> измеряет ошибку прогноза (например, квадратичная ошибка, абсолютная ошибка, индикатор несовпадения классов).
-
=== Процедура скользящего контроля ===
+
=== k-блочная кросс-валидация (k-fold) ===
-
Выборка <tex>X^L</tex> разбивается <tex>N</tex> различными способами на две непересекающиеся подвыборки:
+
Выборка случайным образом разбивается на <tex>k</tex> непересекающихся блоков (англ. folds) примерно равного размера: <tex>\mathcal{D} = \mathcal{F}_1 \cup \dots \cup \mathcal{F}_k</tex>. Для каждого блока <tex>\mathcal{F}_j</tex> выполняются следующие шаги:
-
<tex>X^L = X^m_n \cup X^k_n</tex>,
+
# модель обучается на объединении всех блоков, кроме <tex>\mathcal{F}_j</tex> (обучающая подвыборка <tex>\mathcal{D} \setminus \mathcal{F}_j</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>X^m_n</tex> обучающая подвыборка длины <i>m</i>,
+
Итоговая оценка кросс-валидации есть среднее арифметическое по всем <tex>k</tex> блокам:
-
<tex>X^k_n</tex> — контрольная подвыборка длины <tex>k=L-m</tex>,
+
: <tex>\text{CV}_{(k)} = \frac{1}{k} \sum_{j=1}^{k} \text{Err}_j.</tex>
-
<tex>n=1,\ldots,N</tex> — номер разбиения.
+
-
Для каждого разбиения ''n'' строится алгоритм
+
На практике наиболее распространён выбор <tex>k = 5</tex> или <tex>k = 10</tex>. Такие значения обеспечивают компромисс между смещением и дисперсией оценки (см. ниже). При <tex>k = n</tex> метод переходит в скользящий контроль с исключением по одному наблюдению.
-
<tex>a_n = \mu(X^m_n)</tex>
+
-
и вычисляется значение функционала качества
+
-
<tex>Q_n = Q (a_n, X^k_n)</tex>.
+
-
Среднее арифметическое значений <tex>Q_n</tex> по всем разбиениям называется ''оценкой скользящего контроля'':
+
-
<center>
+
-
<tex>CV(\mu,X^L)=\frac1N \sum_{n=1}^N Q (\mu(X^m_n), X^k_n).</tex>
+
-
</center>
+
-
Различные варианты скользящего контроля отличаются видами функционала качества и способами разбиения выборки.
+
=== Скользящий контроль с исключением по одному (LOOCV) ===
 +
Частный случай 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>\hat{f}_{-i}</tex> — модель, обученная без <tex>i</tex>-го наблюдения.
-
=== Доверительное оценивание ===
+
LOOCV обладает минимальным смещением, так как для обучения используется почти вся выборка, но может иметь высокую дисперсию, особенно для нестабильных моделей. Кроме того, он вычислительно затратен при больших <tex>n</tex>, хотя для линейных моделей существуют эффективные аналитические формулы (PRESS-статистика).
-
Кроме среднего значения качества на контроле строят также доверительные интервалы.
+
-
'''Непараметрическая оценка''' [[доверительный интервал|доверительного интервала]].
+
=== Полный скользящий контроль (complete cross-validation) ===
-
Строится вариационный ряд значений <tex>Q_n = Q (a_n, X^k_n)</tex>, <tex>n=1,\ldots,N</tex>:
+
Полный, или исчерпывающий скользящий контроль (англ. complete cross-validation, exhaustive cross-validation) обобщает LOOCV на случай, когда из выборки исключается не одно, а <tex>p</tex> наблюдений, и перебираются ''все возможные'' комбинации тестовых подвыборок такого размера. Эта процедура также известна как скользящий контроль с исключением <tex>p</tex> наблюдений (leave-<tex>p</tex>-out cross-validation, LPOCV). Оценка вычисляется по формуле:
-
<center>
+
: <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>Q^{(1)} \leq Q^{(2)} \leq \cdots \leq Q^{(N)}.</tex>
+
где сумма берётся по всем <tex>C_n^p</tex> подмножествам <tex>\mathcal{S}</tex> размера <tex>p</tex>.
-
</center>
+
-
'''Утверждение 1.'''
+
Теоретически 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>\eta= \frac{t}{N+1}</tex>
+
-
значение случайной величины <tex>Q(a(X^m),X^k)</tex>
+
-
не превосходит <tex>Q^{(N-t+1)}</tex>.
+
-
'''Следствие 1.'''
+
=== Стратифицированная кросс-валидация ===
-
Значение случайной величины <tex>Q(a(X^m),X^k)</tex>
+
В задачах классификации, особенно при сильном дисбалансе классов, случайное разбиение на блоки может привести к тому, что в некоторые блоки не попадёт ни одного представителя редкого класса, либо распределение классов в блоках будет сильно отличаться от исходного. Стратифицированный вариант сохраняет в каждом блоке ту же пропорцию классов, что и в полной выборке. Аналогичный подход применяют в регрессии, разбивая выборку так, чтобы распределение целевой переменной в блоках было схожим (например, по квантилям).
-
не превосходит <tex>Q^{(N)}</tex>
+
-
с вероятностью <tex>\eta= \frac{1}{N+1}</tex>.
+
-
В частности, для получения верхней оценки с надёжностью 95% достаточно взять <tex>N=20</tex> разбиений.
+
Стратификация, как правило, снижает дисперсию оценки кросс-валидации и рекомендуется в большинстве практических руководств, в том числе в работе Кохави (1995)<ref name="kohavi"/>. Она особенно важна при малом объёме данных и в задачах медицинской диагностики, обнаружения мошенничества и других областях с несбалансированными классами.
-
'''Утверждение 2.'''
+
=== Повторная кросс-валидация (repeated CV) ===
-
Если разбиения осуществлялись случайно, независимо и равновероятно, то с вероятностью
+
Оценка, полученная однократным разбиением на <tex>k</tex> блоков, может обладать заметной дисперсией из-за случайности разбиения. Для её уменьшения процедуру повторяют несколько раз с разными случайными разбиениями, после чего усредняют результаты. Например, 10-кратная кросс-валидация, повторённая 5 раз, даёт более стабильную оценку, чем однократная 10-кратная. Ценой является пропорциональное увеличение времени вычислений.
-
<tex>\eta= \frac{2t}{N+1}</tex>
+
-
значение случайной величины
+
-
<tex>Q(a(X^m),X^k)</tex>
+
-
не выходит за границы доверительного интервала
+
-
<tex>\bigl[ Q^{(t)},Q^{(N-t+1)} \bigr]</tex>.
+
-
'''Следствие 2.'''
+
=== Вложенная кросс-валидация (nested CV) ===
-
Значение случайной величины
+
Когда кросс-валидация одновременно применяется для выбора модели (настройки гиперпараметров) ''и'' для итоговой оценки её качества, возникает опасность оптимистического смещения: модель «подглядывает» в тестовые блоки внешнего цикла через выбор гиперпараметров. Для строгого разделения этих этапов используют ''вложенную'' (двойную) кросс-валидацию, состоящую из двух вложенных циклов:
-
<tex>Q(a(X^m),X^k)</tex>
+
* ''Внешний цикл'' разбивает все данные на <tex>K</tex> блоков. Каждый внешний блок поочерёдно играет роль независимого тестового набора.
-
не выходит за границы вариационного ряда
+
* ''Внутренний цикл'' на оставшихся <tex>K-1</tex> блоках выполняет кросс-валидацию (например, 5-кратную) для настройки гиперпараметров или отбора модели-кандидата. Выбранная таким образом модель обучается на полном внутреннем наборе и оценивается на внешнем тестовом блоке.
-
<tex>\bigl[ Q^{(1)},Q^{(N)} \bigr]</tex>
+
-
с вероятностью
+
-
<tex>\eta= \frac{2}{N+1}</tex>.
+
-
В частности, для получения двусторонней оценки с надёжностью 95% достаточно взять
+
Результатом внешнего цикла является несмещённая оценка производительности ''всей процедуры обучения вместе с выбором гиперпараметров''. Вложенная кросс-валидация — золотой стандарт оценки моделей, когда одновременно решаются задачи настройки и сравнения.
-
<tex>N=40</tex> разбиений.
+
-
'''Параметрические оценки''' доверительного интервала основаны на априорном предположении о виде распределения случайной величины <tex>Q(a(X^m),X^k)</tex>.
+
=== Другие варианты ===
-
Если априорные предположения не выполняются, доверительный интервал может оказаться сильно смещённым.
+
* '''Скользящий контроль с исключением <tex>p</tex> наблюдений (leave-<tex>p</tex>-out)''' — всевозможные подмножества размера <tex>p</tex> используются как тестовые. Число обучений <tex>C_n^p</tex> обычно слишком велико, поэтому на практике применяется редко.
-
{{S|В частности}}, если предположения о [[нормальное распределение|нормальности распределения]] не выполнены, то нельзя пользоваться стандартным «правилом двух сигм» или «трёх сигм».
+
* '''Случайные подвыборки (Monte Carlo CV)''' — заданное количество случайных разбиений на обучающую и тестовую подвыборки фиксированного размера без требования охватить все данные. Позволяет гибко варьировать долю тестовых данных.
-
Джон Лангфорд в своей диссертации (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>.
+
== Статистические свойства ==
 +
Качество оценки ошибки методом кросс-валидации характеризуется смещением и дисперсией.
-
''Стратификация классов'' в задачах [[классификация|классификации]] означает, что каждый класс делится между обучением и контролем в пропорции <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 является состоятельной для ожидаемой ошибки прогноза.
-
''Стратификация по вещественному признаку''. Объекты выборки сортируются согласно некоторому критерию (например, по одному из [[признак]]ов), и контрольная выборка составляется из объектов с номерами
+
В задачах классификации дополнительную роль играет выбор метрики: доли правильных ответов (accuracy), средней абсолютной ошибки вероятностей (Brier score), логарифмической функции потерь и т. д. Одна и та же процедура кросс-валидации позволяет оценивать любую из них, однако свойства (смещение/дисперсия) могут различаться.
-
<tex>\Bigl[ \frac{(i-1)(L-1)}{k-1}+1 \Bigr],\; i=1,\ldots,k</tex>.
+
-
== Разновидности скользящего контроля ==
+
== Доверительные интервалы в кросс-валидации ==
-
Возможны различные варианты скользящего контроля, отличающиеся способами разбиения выборки.
+
Наряду с точечной оценкой ошибки часто требуется указать доверительный интервал (англ. confidence interval), отражающий неопределённость, связанную с конечностью выборки и случайностью разбиений. Построение корректных интервалов для ошибки кросс-валидации — нетривиальная задача, так как результаты обучения на разных блоках зависимы.
-
=== Полный скользящий контроль (complete CV) ===
+
Простейший подход — вычислить выборочное стандартное отклонение ошибок на <tex>k</tex> блоках <tex>s</tex> и построить интервал в виде <tex>\text{CV}_{(k)} \pm t_{k-1,\alpha/2} \, s / \sqrt{k}</tex>. Такой интервал часто оказывается слишком оптимистичным (заужен), потому что не учитывает положительную корреляцию между блоками: модель обучена на сильно перекрывающихся данных. Более корректная оценка дисперсии среднего значения должна явно включать ковариации между ошибками блоков.
-
Оценка скользящего контроля строится по всем <tex>N=C_L^k</tex> разбиениям.
+
-
Это число становится слишком большим уже при <tex>k>2</tex>, поэтому полный скользящий контроль используется либо в теоретических исследованиях, либо в тех редких случаях, когда для него удаётся вывести эффективную вычислительную формулу. Например, такая формула известна для метода <i>k</i>&nbsp;ближайших соседей, что позволяет эффективно выбирать параметр&nbsp;<i>k</i>.
+
-
{{S|На практике}} чаще применяются другие разновидности скользящего контроля.
+
-
=== Случайные разбиения ===
+
=== Повторная кросс-валидация ===
-
Разбиения <tex>n=1,\ldots,N</tex> выбираются случайно, независимо и равновероятно из множества всех <tex>C_L^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>
-
{{S|На практике}} эти оценки, как правило, без изменений переносится и на другие способы разбиения выборки.
+
На основе неё можно построить приближённый доверительный интервал, используя квантили распределения Стьюдента.
-
=== Контроль на отложенных данных (hold-out CV) ===
+
Другой популярный метод — бутстреп (англ. bootstrap) по результатам повторений: из множества из <tex>R</tex> значений <tex>\text{CV}_i</tex> генерируются бутстреп-выборки, и интервал строится по процентилям. Бутстреп не требует вывода аналитических формул дисперсии, однако ему всё равно необходимо достаточно большое <tex>R</tex> (обычно десятки–сотни повторений).
-
Оценка скользящего контроля строится по одному случайному разбиению.
+
-
Этот способ имеет существенные недостатки:
+
Следует помнить, что никакой несмещённой оценки дисперсии ошибки 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 носят приближённый характер и должны интерпретироваться с осторожностью.
-
# Приходится слишком много объектов оставлять в контрольной подвыборке. Уменьшение длины обучающей подвыборки приводит к смещённой (пессимистически завышенной) оценке вероятности ошибки.
+
-
# Оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.
+
-
# Оценка имеет высокую дисперсию, которая может быть уменьшена путём усреднения по разбиениям.
+
-
=== Контроль по отдельным объектам (leave-one-out CV) ===
+
=== Непараметрическое доверительное оценивание ===
-
Является частным случаем полного скользящего контроля при <tex>k=1</tex>.
+
Рассмотрим вариационный ряд значений
 +
<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>Q_j</tex>.
 +
Если априорные предположения не выполняются, доверительный интервал может оказаться сильно смещённым.
 +
В&nbsp;частности, если предположения о [[нормальное распределение|нормальности распределения]] не выполнены, то нельзя пользоваться стандартным «правилом двух сигм» или «трёх сигм».
 +
Джон Лангфорд в своей диссертации (2002) указывает на распространённую ошибку, когда правило двух сигм применяется к функционалу частоты ошибок, имеющему на самом деле [[биномиальное распределение]].
 +
Однако биномиальным распределением в общем случае тоже пользоваться нельзя, поскольку в результате обучения по случайным подвыборкам вероятность ошибки обученной модели <tex>\hat f</tex> оказывается случайной величиной.
 +
Следовательно, случайная величина
 +
<tex>Q_j</tex>
 +
описывается не биномиальным распределением, а (неизвестной) смесью биномиальных распределений.
 +
Аппроксимация смеси биномиальным распределением может приводить к ошибочному сужению доверительного интервала.
-
Это, пожалуй, самый распространённый вариант скользящего контроля.
+
== Кросс-валидация в задачах прогнозирования и связь с A/B тестированием ==
-
Преимущества LOO в том, что каждый объект ровно один раз участвует в контроле, а длина обучающих подвыборок лишь на единицу меньше длины полной выборки.
+
В прогностических задачах различают ''валидацию вне выборки'' (англ. out-of-sample validation) и ''валидацию вне времени'' (англ. out-of-time validation). Первая предполагает, что наблюдения из обучающей и тестовой выборок получены из одного и того же стационарного распределения, и случайное разбиение не нарушает структуру данных. Стандартная кросс-валидация как раз реализует эту идею.
-
Недостатком LOO является большая ресурсоёмкость, так как обучаться приходится <tex>L</tex> раз.
+
Однако многие реальные задачи связаны с временными рядами и нестационарной средой. Для оценки способности модели предсказывать ''будущие'' значения применяют специальные схемы:
-
Некоторые методы обучения позволяют достаточно быстро перенастраивать внутренние параметры алгоритма
+
* Валидация на будущих периодах (out-of-time): разбиение производится с учётом хронологии — все тренировочные наблюдения предшествуют тестовым. Кросс-валидация временных рядов (time series cross-validation) использует «скользящее окно» или «расширяющееся окно»: модель последовательно обучается на всё более длинных исторических интервалах и проверяется на непосредственно следующем периоде.
-
при замене одного обучающего объекта другим.
+
* Такой подход гарантирует, что мы оцениваем именно ''прогнозную'' силу во времени, а не умение модели интерполировать пропуски.
-
{{S|В этих}} случаях вычисление LOO удаётся заметно ускорить.
+
-
=== Контроль по ''q'' блокам (''q''-fold CV) ===
+
Сравнение с [[A/B тестирование|A/B тестированием]] помогает прояснить роль кросс-валидации. A/B тест — это рандомизированный контролируемый эксперимент в реальной системе, где случайно разделённые пользователи взаимодействуют с разными вариантами продукта (например, двумя версиями рекомендательной системы). Кросс-валидация, напротив, является ретроспективным методом, работающим исключительно с уже собранными данными.
-
Выборка случайным образом разбивается на ''q'' непересекающихся блоков одинаковой (или почти одинаковой) длины <tex>k_1,\ldots,k_q</tex>:
+
-
<center>
+
-
<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>
+
-
</center>
+
-
Каждый блок по очереди становится контрольной подвыборкой, при этом обучение производится по остальным <tex>q-1</tex> блокам.
+
-
Критерий определяется как средняя ошибка на контрольной подвыборке:
+
-
<center>
+
-
<tex>CV(\mu,X^L)=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>
+
-
</center>
+
-
Это компромисс между LOO, hold-out и случайными разбиениями.
+
Сходство состоит в том, что оба метода стремятся получить несмещённую оценку эффективности (модели или вмешательства). Различия принципиальны:
-
{{S|С одной}} стороны, обучение производится только {{S|<i>q</i> раз}} {{S|вместо <i>L</i>}}.
+
* Кросс-валидация опирается на предположение о стационарности и независимости наблюдений, в то время как A/B тест может учитывать временные эффекты, новизну и взаимодействие между пользователями.
-
{{S|С другой}} стороны, длина обучающих подвыборок, равная <tex>L\frac{q-1}q</tex> с точностью до округления, не сильно отличается от длины полной {{S|выборки <i>L</i>}}.
+
* Кросс-валидация не может заменить A/B тест для измерения причинно-следственных эффектов, потому что не подразумевает активного рандомизированного вмешательства.
-
Обычно выборку разбивают случайным образом на 10 или 20 блоков.
+
* На практике кросс-валидацию часто используют для офлайн-отбора лучшей модели-кандидата перед запуском A/B теста, чтобы снизить риски и затраты, связанные с тестированием заведомо слабых вариантов.
-
=== Контроль по ''T''×''q'' блокам (''T''×''q''-fold CV) ===
+
Таким образом, кросс-валидация и A/B тестирование являются взаимодополняющими инструментами: первая позволяет быстро и дёшево сравнивать модели на исторических данных, второе — подтверждать эффект в реальных условиях эксплуатации.
-
Контроль по ''q'' блокам (''q''-fold CV) повторяется ''T'' раз.
+
-
Каждый раз выборка случайным образом разбивается на ''q'' непересекающихся блоков.
+
-
Преимущество этого способа в том, что увеличивается число разбиений.
+
-
== Скользящий контроль в задачах прогнозирования ==
+
== Кросс-валидация в отборе модели и настройке гиперпараметров ==
-
...а также динамического обучения и обучения с подкреплением
+
Кросс-валидация широко применяется для ''выбора модели'' среди семейства кандидатов (например, выбор степени полинома в регрессии, числа соседей в [[Метод 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>.
-
# Задачу обучения приходится решать ''N'' раз, что сопряжено со значительными вычислительными затратами.
+
-
# Оценка скользящего контроля предполагает, что алгоритм обучения <tex>\mu</tex> уже задан. Она ничего не говорит о том, какими свойствами должны обладать «хорошие» алгоритмы обучения, и как их строить. Такого рода подсказки дают только теоретические оценки обобщающей способности.
+
-
# Попытка использовать скользящий контроль для обучения, в роли оптимизируемого критерия, приводит к тому, что он утрачивает свойство несмещённости, и снова возникает риск [[переобучение|переобучения]].
+
-
== Применения скользящего контроля ==
+
Критически важно помнить: если кросс-валидация используется и для выбора гиперпараметров, и для финальной оценки, то ''итоговую ошибку необходимо измерять на независимом тестовом наборе, не участвовавшем ни в одном из предыдущих этапов''. В противном случае оценка будет чрезмерно оптимистичной. Вложенная кросс-валидация, описанная выше, позволяет получить практически несмещённую оценку без откладывания отдельного тестового набора.
-
На практике скользящий контроль применяется для оптимизации некоторых критически важных параметров, как правило, определяющих структуру или сложность используемой модели алгоритма, и имеющих относительно небольшое число возможных значений.
+
-
Примеры:
+
-
* [[Выбор модели]] алгоритмов из небольшого множества альтернативных вариантов
+
-
* Оптимизация параметра [[регуляризация|регуляризации]]
+
-
* Оптимизация ширины окна в методах [[Метод парзеновского окна|парзеновского окна]], [[Метод ближайшего соседа|ближайшего соседа]], [[Ядерное сглаживание|ядерного сглаживания]]
+
-
* Оптимизация числа нейронов в скрытом слое [[Многослойный персептрон|многослойной нейронной сети]]
+
-
* [[Селекция признаков|Выбор информативного набора признаков]]
+
-
* [[Редукция решающего дерева]]
+
-
* [[Структурная минимизация риска]]
+
-
== Теоретические оценки ==
+
== Распространённые ошибки и практические рекомендации ==
 +
* '''Утечка данных (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 тестирование]]
 +
* [[Прогнозирование временных рядов]]
-
== Литература ==
+
== Примечания ==
-
# {{книга
+
{{примечания}}
-
|автор = Эфрон Б.
+
-
|заглавие = Нетрадиционные методы многомерного статистического анализа
+
-
|издание = М: Финансы и статистика
+
-
|год = 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–1145}}
 +
* {{статья |автор=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}}
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
 +
[[Категория:Прикладная статистика]]

Текущая версия

Статья написана с использованием LLM DeepSeek и проверена участником К.В.Воронцов 19:49, 12 июня 2026 (MSD)


Кросс-валида́ция (перекрёстная прове́рка, скользя́щий контро́ль, англ. 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–1145.
  • 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.
Личные инструменты