В машинном обучении тестовая выборка (Test Set) – это часть данных, которую модель никогда не видела во время обучения. Именно на ней оценивается реальная способность модели делать прогнозы на новых, внешних данных. Ниже подробно рассматриваются основные принципы работы с тестовой выборкой, способы её использования и типичные ошибки.
Что такое тестовая выборка?
Тестовая выборка – это набор объектов, который отделён от обучающей и валидационной частей датасета. После того как модель обучена на обучающих данных, она применяет свои знания к тестовой выборке, генерируя предсказания. На основе разницы между предсказанными и реальными значениями рассчитываются метрики качества.
Разделение данных
Обучающая, валидационная и тестовая выборки
Современная практика разделения данных включает три части:
- Обучающая (Train) – используется для обучения модели. Обычно занимает 60–70 % всех объектов.
- Валидационная (Validation) – служит для подбора гиперпараметров и раннего остановки. Около 10–15 %.
- Тестовая (Test) – окончательная оценка качества. Остальные 20–25 %.
Разделение должно быть случайным (или с учётом временных меток для ряды), чтобы избежать смещения.
Почему важно разделение?
- Переобучение: модель может «запомнить» обучающие данные и показывать нереалистично высокую точность.
- Объективность оценки: тестовая выборка обеспечивает реальное представление о работе модели в продакшене.
- Проверка стабильности: если модель будет переобучена, метрика на тесте резко упадёт.
Как использовать тестовую выборку?
Шаг 1: Подготовка данных
# Пример на Python + scikit-learn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, mean_absolute_error
X, y = load_iris(return_X_y=True)
X_trainval, X_test, y_trainval, y_test = train_test_split(
X, y, test_size=0.25, random_state=42, stratify=y
)
Шаг 2: Обучение модели
# Обучаем логистическую регрессию
model = LogisticRegression(max_iter=200)
model.fit(X_trainval, y_trainval)
Шаг 3: Предсказание на тесте
# Предсказываем
y_pred = model.predict(X_test)
Шаг 4: Оценка качества
- Точность (Accuracy) – % правильных предсказаний.
- MAE (Mean Absolute Error) – средняя абсолютная ошибка (для регрессии).
- ROC‑AUC – площадь под кривой ROC (для бинарных классификаторов).
# Метрика точности
acc = accuracy_score(y_test, y_pred)
print(f"Accuracy: {acc:.4f}")
Типичные ошибки при работе с тестовой выборкой
Смещение выборки (Sampling Bias)
Если обучающая и тестовая выборки не принадлежат однородной популяции, метрика на тесте может быть сильно завышена или занижена. Особенно важно учитывать при работе с временными рядами: нельзя «пробрасывать» данные из будущего в обучающую часть.
Переобучение и «обучение на тесте»
Не стоит использовать результаты теста для настройки модели – это приводит к оптимистичной оценке. Валидационную выборку нужно использовать только для гиперпараметров, а тестовый набор оставлять «не тронутым» до финального расчёта метрик.
Недостаточный размер тестовой выборки
При малом объёме данных (< 30 объектов) статистическая значимость оценок падает. В таких случаях рекомендуется использовать кросс‑валидацию, но даже тогда итоговая метрика должна оцениваться на отдельном hold‑out наборе.
Кросс‑валидация и тестовый набор
Кросс‑валидация (k‑fold) помогает получить более надёжную оценку, но все folds строятся из обучающей выборки. После её завершения окончательная проверка проводится на независимом тестовом наборе.
Особенности для временных рядов
- Нельзя случайно перемешивать данные: будущее не должно «знать» о прошлом.
- Лучше использовать «rolling‑window» или «expanding‑window» стратегии.
- Тестовый набор обычно представляет последние временные метки.
Практические рекомендации
- Случайная разбиение – используйте
stratifyдля сохранения пропорций классов. - Проверяйте распределение метрик – не только среднее значение, но и дисперсию.
- Для небольших наборов применяйте bootstrap или leave‑one‑out методы.
- Всегда сохраняйте один фиксированный тестовый набор для финальной оценки.
- Если данные имеют многомерные признаки (например, «вес» и «пушистость» у животных), убедитесь, что в тесте присутствуют все типы объектов.
Тестовая выборка – ключевой элемент процесса оценки модели. Правильное разделение данных, осмотрительное использование теста и выбор надёжных метрик позволяют избежать переобучения и получить объективную оценку производительности. Не забывайте, что модель должна «видеть» только обучающую часть, а тестовый набор остаётся «чистым» до момента финальной проверки. Это гарантирует, что результаты, которые вы публикуете или внедряете в продакшн, действительно отражают реальную эффективность модели.