Проблема переобучения (overfitting) заключается в том, что модель машинного обучения слишком хорошо подстраивается под обучающие данные, включая их шум и случайные колебания, что приводит к плохой обобщающей способности на новых, невидимых данных. Переобученная модель имеет высокую точность на обучающих данных, но плохо работает на тестовых или реальных данных.
🚩Причины переобучения
🟠Слишком сложная модель
Модель имеет слишком много параметров относительно объема данных. Например, глубокая нейронная сеть с множеством слоев и узлов.
🟠Малый объем данных
Недостаточно данных для обучения модели, что приводит к тому, что модель запоминает отдельные примеры вместо выявления общих закономерностей.
🟠Шумные данные
Наличие шума или выбросов в данных, которые модель начинает интерпретировать как важные закономерности.
🚩Признаки переобучения
🟠Высокая точность на обучающих данных и низкая на тестовых данных
Если модель показывает очень высокую точность на данных, на которых она обучалась, и низкую точность на новых данных, это явный признак переобучения.
🟠Сложные модели с высокими коэффициентами
Модель может иметь высокие значения коэффициентов, что указывает на сильное подстраивание под обучающие данные.
🚩Методы предотвращения переобучения
🟠Разделение данных на тренировочный и тестовый наборы
Использование тренировочного набора для обучения модели и тестового набора для оценки ее обобщающей способности.
🟠Кросс-валидация
Разделение данных на несколько частей и использование разных частей для обучения и тестирования в нескольких итерациях.
🟠Регуляризация
Введение штрафов за сложные модели. Например, L1 и L2 регуляризация уменьшают значения коэффициентов модели.
🟠Снижение сложности модели
Использование менее сложных моделей с меньшим количеством параметров.
🟠Сбор большего объема данных
Увеличение объема обучающих данных помогает модели лучше выявлять общие закономерности.
🟠Прерывание обучения (Early Stopping)
Остановка обучения модели, когда ошибка на валидационном наборе данных начинает увеличиваться.
🟠Аугментация данных
Создание дополнительных данных путем их модификации (например, поворот, масштабирование изображений), что помогает модели обобщать лучше.
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}')
Ставь 👍 и забирай 📚 Базу знаний