Кросс-валидация (Cross-Validation – CV) – это метод оценки Моделей (Model)Машинного обучения (ML) в условиях небольшого объема данных. Датасет (Dataset) разделяют на N равных частей разными способами, затем обучают на первой и вычисляют эффективность с помощью второй части. Затем дообучают на второй и снова обсчитывают эффективность на третьей.
Такая перекрестная проверка используется для обнаружения Переобучения (Overfitting), т.е. неспособности распознать паттерн. Выделяют следующие виды кросс-валидации:
Удерживающая проверка (Hold-Out CV): датасет делится на два набора: для обучения и для тестирования. Модель обучается на тренировочном наборе, а затем оценивается на тестовом.
k-блочная перекрестная проверка (k-Fold CV): в этом типе проверки набор данных делится на k подмножеств одинакового размера. Модель обучается k раз и каждый раз использует другое подмножество в качестве набора для тестирования и оставшиеся подмножества в качестве набора для обучения.
Стратифицированный метод k-Fold проверки(Stratified k-Fold cross-validation) — это разновидность k-Fold CV, разработанная для эффективной работы в случаях дисбаланса классов. Например, в наборе данных о ценах на наручные часы может быть большее количество наручных часов в категории "Люкс".
Повторная перекрестная проверка k-Fold (Repeated k-Fold CV) – наиболее надежным из всех методов CV, описанных в этой статье. Это разновидность k-Fold, но k здесь не является количеством подмножеств. Это количество раз, которое мы будем обучать модель. На каждой итерации мы будем случайным образом выбирать образцы по всему набору данных в качестве нашего тестового набора. Например, если мы решим, что 20% набора данных будут нашим тестовым набором, остальные 80% станут обучающим набором.
Перекрестная проверка с исключением одного (Leave-One-Out Cross Validation – LOOCV): это особый случай k-Fold, где k равно количеству экземпляров в наборе данных. В этом случае каждый экземпляр используется как тестовый набор один раз.
Перекрестная проверка с исключением p записей (Leave-p-out cross-validation – LpOC) похожа на LOOCV с исключением одного: она создает все возможные обучающие и тестовые наборы, используя p записей в качестве тестового набора.
Вложенная перекрестная проверка (Nested CV): это комбинация k-Fold и Hold-Out: набор сначала делится на несколько подмножеств. Затем производится удерживающая проверка для каждого подмножества. Этот подход обеспечивает более надежную оценку производительности модели, но требует бо́льших вычислительных ресурсов.
Перекрестная проверка с выходом из одной группы (Leave-One-Group-Out Cross-Validation – LOGO CV) – это вариант перекрестной проверки, где образцы сгруппированы в отдельные кластеры. Процесс перекрестной проверки выполняется путем исключения одной целой группы за раз для тестирования. Оставшиеся группы в это время используются для обучения модели. Этот процесс повторяется для каждой группы, и производительность модели усредняется.
Кросс-валидация Временных рядов (Time Series) (Time-Series Cross-Validation) выполняется на скользящей основе, т. е. начиная с небольшого подмножества данных в целях обучения, прогнозирования будущих значений.
Блокирующая кросс-валидация временных рядов (Blocked Time-Series Cross-Validation). Первый метод может привести к Утечке данных (Data Leakage), то есть заимствованию записей о дальнейшем времени. Модель будет наблюдать за будущими паттернами, чтобы прогнозировать. Вот почему была введена блокирующая перекрестная проверка.
Отдельным видом выделяют:
Бутстрэп (Bootstrap Cross-Validation – BS CV) выбирает записи случайным образом. В каждом подмножестве есть повторения из-за случайности выбора.
Итоговая эффективность – это среднее всех итераций.