Проверяет понимание переобучения модели машинного обучения, когда она слишком хорошо запоминает обучающие данные и теряет способность обобщать.
Overfitting (переобучение) — это явление в машинном обучении, при котором модель слишком хорошо запоминает обучающие данные, включая случайный шум и выбросы, вместо того чтобы выявлять общие закономерности. В результате модель показывает высокую точность на тренировочной выборке, но плохо работает на новых, невиданных ранее данных. Это одна из ключевых проблем, с которой сталкиваются специалисты по данным.
Основные причины переобучения:
Признаки переобучения: высокая точность на тренировочном наборе и значительно более низкая на валидационном или тестовом наборе.
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score
# Генерация данных
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание переобученной модели (глубокое дерево)
model_overfit = DecisionTreeClassifier(max_depth=10)
model_overfit.fit(X_train, y_train)
print(f"Train accuracy: {accuracy_score(y_train, model_overfit.predict(X_train)):.2f}")
print(f"Test accuracy: {accuracy_score(y_test, model_overfit.predict(X_test)):.2f}")В этом примере дерево с большой глубиной (max_depth=10) скорее всего покажет 100% точность на тренировочных данных, но значительно ниже на тестовых.
Вывод: Overfitting — это критическая проблема, которую необходимо контролировать при построении моделей машинного обучения. Применение регуляризации, кросс-валидации и адекватный выбор сложности модели помогают достичь хорошей обобщающей способности и надежности предсказаний на новых данных.