Для специалистов по обработке данных одним из важных шагов в создании надежных моделей машинного обучения является оценка их производительности. Хотя для этой цели обычно используются традиционные разделения на основе обучающих тестов, они не всегда могут обеспечить точное представление о том, насколько хорошо модель будет работать на невидимых данных. Именно здесь в игру вступает K-кратная перекрестная проверка. В этой статье мы окунемся в мир K-кратной перекрестной проверки, рассмотрим различные методы и продемонстрируем примеры кода, которые помогут вам освоить эту мощную технику.
Что такое K-кратная перекрестная проверка?
K-кратная перекрестная проверка – это метод повторной выборки, используемый для оценки производительности моделей машинного обучения. Он включает в себя разделение доступных данных на K складок или подмножеств одинакового размера. Затем модель обучается и оценивается K раз, при этом каждая складка служит тестовым набором один раз, а оставшиеся складки используются для обучения. Результаты каждой итерации усредняются для получения общей оценки производительности.
- Стратифицированная перекрестная проверка K-кратности:
Стратифицированная перекрестная проверка K-кратности полезна при работе с несбалансированными наборами данных, где целевая переменная распределена неравномерно. Это гарантирует, что каждая складка сохраняет то же распределение классов, что и исходный набор данных. Этот метод можно реализовать с использованием различных платформ машинного обучения, таких как scikit-learn в Python.
from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
for train_index, test_index in skf.split(X, y):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# Model training and evaluation
- Перекрестная проверка с исключением одного исключения (LOOCV):
LOOCV — это особый случай K-кратной перекрестной проверки, где K устанавливается равным общему количеству выборок в наборе данных. На каждой итерации одна точка данных используется в качестве тестового набора, а остальные выборки используются для обучения. LOOCV обеспечивает надежную оценку производительности модели, но может оказаться дорогостоящим в вычислительном отношении для больших наборов данных.
from sklearn.model_selection import LeaveOneOut
loo = LeaveOneOut()
for train_index, test_index in loo.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# Model training and evaluation
- Повторная K-кратная перекрестная проверка.
Повторная K-кратная перекрестная проверка включает в себя повторение процесса K-кратной проверки несколько раз с различными случайными разбиениями данных. Это помогает проверить стабильность и последовательность производительности модели. Это может быть полезно, когда набор данных относительно небольшой и вы хотите получить более надежную оценку эффективности модели.
from sklearn.model_selection import RepeatedKFold
rkf = RepeatedKFold(n_splits=5, n_repeats=3, random_state=42)
for train_index, test_index in rkf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# Model training and evaluation
- Групповая перекрестная проверка K-кратности.
Групповая перекрестная проверка K-кратности используется, когда набор данных содержит группы или кластеры, которые не следует разбивать на несколько сгибов. Это может быть полезно при работе с данными временных рядов или данными с зависимостями между выборками. Для реализации этого метода можно использовать классGroupKFold
в scikit-learn.
from sklearn.model_selection import GroupKFold
gkf = GroupKFold(n_splits=3)
for train_index, test_index in gkf.split(X, groups=groups):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# Model training and evaluation
K-кратная перекрестная проверка — это фундаментальный метод оценки производительности моделей машинного обучения. В этой статье мы исследовали различные методы, включая стратифицированную K-кратную проверку, исключение одного, повторную K-кратную и групповую K-кратную перекрестную проверку. Включив эти методы в свой рабочий процесс, вы сможете получить более надежную оценку производительности вашей модели и принять обоснованные решения о выборе модели и настройке гиперпараметров.
Освоив K-кратную перекрестную проверку, вы сможете улучшить свои навыки работы с данными и создавать более надежные и точные модели машинного обучения.