Overfitting (переобучение) возникает, когда модель слишком хорошо запоминает обучающие данные, включая шум, и теряет способность обобщать информацию на новых данных. Это приводит к высокому качеству на обучающем наборе, но плохим результатам на тестовых данных.
➡️ Основные способы предотвращения Overfitting:
1. Регуляризация:
• L1 и L2-регуляризация добавляют штраф к сложным моделям.
• Уменьшают коэффициенты модели, предотвращая избыточное подстраивание.
2. Dropout (для нейронных сетей):
• Исключение случайных нейронов на этапе обучения.
3. Снижение сложности модели:
• Использование меньшего числа признаков или более простых алгоритмов.
4. Увеличение данных:
• Генерация новых данных или увеличение объёма обучающей выборки.
➡️ Пример:
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
# Загружаем данные
data = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# Создаём модель с регуляризацией (Ridge)
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)
# Оцениваем качество
train_score = ridge.score(X_train, y_train)
test_score = ridge.score(X_test, y_test)
print(f"Train Score: {train_score}, Test Score: {test_score}")
🗣️ В этом примере Ridge-регрессия с параметром регуляризации alpha=1.0 помогает предотвратить переобучение, улучшая обобщающую способность модели.
🖥 Подробнее тут