Проблема переобучения (overfitting) заключается в том, что модель машинного обучения слишком хорошо подстраивается под обучающие данные, включая их шум и случайные колебания, что приводит к плохой обобщающей способности на новых, невидимых данных. Переобученная модель имеет высокую точность на обучающих данных, но плохо работает на тестовых или реальных данных.
Модель имеет слишком много параметров относительно объема данных. Например, глубокая нейронная сеть с множеством слоев и узлов.
Недостаточно данных для обучения модели, что приводит к тому, что модель запоминает отдельные примеры вместо выявления общих закономерностей.
Наличие шума или выбросов в данных, которые модель начинает интерпретировать как важные закономерности.
Если модель показывает очень высокую точность на данных, на которых она обучалась, и низкую точность на новых данных, это явный признак переобучения.
Модель может иметь высокие значения коэффициентов, что указывает на сильное подстраивание под обучающие данные.
Использование тренировочного набора для обучения модели и тестового набора для оценки ее обобщающей способности.
Разделение данных на несколько частей и использование разных частей для обучения и тестирования в нескольких итерациях.
Введение штрафов за сложные модели. Например, L1 и L2 регуляризация уменьшают значения коэффициентов модели.
Использование менее сложных моделей с меньшим количеством параметров.
Увеличение объема обучающих данных помогает модели лучше выявлять общие закономерности.
Остановка обучения модели, когда ошибка на валидационном наборе данных начинает увеличиваться.
Создание дополнительных данных путем их модификации (например, поворот, масштабирование изображений), что помогает модели обобщать лучше.
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Пример данных
X = ... # Ваши данные признаков
y = ... # Целевая переменная
# Разделение данных на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Модель с L2 регуляризацией (Ridge)
model = Ridge(alpha=1.0)
model.fit(X_train, y_train)
# Предсказание и оценка
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)
train_error = mean_squared_error(y_train, y_pred_train)
test_error = mean_squared_error(y_test, y_pred_test)
print(f'Training Error: {train_error}')
print(f'Test Error: {test_error}')
Ставь 👍 и забирай 📚 Базу знаний