🤔 В чем заключается проблема овер фитинг?



Проблема переобучения (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}')




Ставь 👍 и забирай 📚 Базу знаний