Underfitting простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Зачем это знать

Overfitting — главный враг ML. Underfitting — его брат-близнец. Модель «слишком глупая», не улавливает паттерны в данных → плохие метрики на train и test. На собесе спросят оба: «что хуже, overfit или underfit?».

В работе underfitting проявляется как: «запустил logistic regression, accuracy 55%». Модель простая, данные сложные. Лечение — усложнить модель или добавить features.

В статье:

  • Что такое underfitting
  • Признаки
  • Причины
  • Как исправить
  • Сравнение с overfitting

Короткое объяснение

Underfitting — модель слишком простая, чтобы уловить паттерны. Результат: низкие метрики и на train, и на test.

Признаки

  • Train accuracy: 60%
  • Test accuracy: 58%

Обе низкие. Gap маленький.

vs overfit:

  • Train 98%
  • Test 65%

Обе критические ситуации.

Причины

1. Слишком простая модель

Linear regression на нелинейных данных. Decision tree глубиной 1.

2. Мало features

Предсказываем churn по одной переменной (age). Не хватает сигнала.

3. Недостаточно training

Neural network с недостаточным количеством epochs.

4. Плохие features

Если все ваши features не коррелируют с target — никакая модель не поможет.

5. Too much regularization

Очень высокий L1/L2 penalty → коэффициенты обнуляются → модель недоучивается.

Как исправить

1. Более сложная модель

  • Linear regression → Polynomial features → Random Forest → XGBoost
  • Shallow tree → Deep tree
  • Logistic regression → Neural network

2. Больше features

  • Feature engineering (ratios, interactions)
  • Добавить внешние данные (weather, holidays)
  • Domain knowledge features

3. Уменьшить регуляризацию

L2 с λ = 100 → try 0.1.

4. Учиться дольше

Больше epochs для neural nets.

5. Feature interactions

X1 × X2 как новая feature.

Сравнение с overfitting

Underfitting Overfitting
Train accuracy низкая высокая
Test accuracy низкая низкая
Train-test gap маленький большой
Сложность модели низкая высокая
Bias высокий низкий
Variance низкий высокий

Bias-variance tradeoff

Underfitting = high bias. Overfitting = high variance.

Идеал: средняя сложность модели. Оба зла избегаются.

Пример: polynomial regression

Данные имеют нелинейную связь Y = X² + noise.

Degree 1 (linear)

from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X, y)
# train R² = 0.20, test R² = 0.18 → underfitting

Прямая не объясняет parabola.

Degree 2 (quadratic)

from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
model = LinearRegression().fit(X_poly, y)
# train R² = 0.92, test R² = 0.90 → balanced

Degree 20

poly = PolynomialFeatures(degree=20)
X_poly = poly.fit_transform(X)
# train R² = 0.99, test R² = 0.40 → overfitting

Средний degree лучше.

Learning curves

Важный диагностический инструмент:

from sklearn.model_selection import learning_curve

train_sizes, train_scores, test_scores = learning_curve(model, X, y, cv=5)

Underfitting

Обе кривые (train и test) низко. Стабильны с ростом N. Более data не поможет.

Overfitting

Train высоко, test низко. Gap большой.

На собесе

«Underfitting vs overfitting?» Under — слишком простая (обе метрики плохие). Over — слишком сложная (train good, test bad).

«Что хуже?» Overfitting хуже (ложная уверенность). Under легче увидеть и исправить.

«Как исправить?» Усложнить модель, больше features, меньше регуляризации.

«Больше данных help?» От underfit — обычно нет. От overfit — да.

Частые ошибки

1. «Больше данных спасёт»

Underfitting — проблема модели, не данных.

2. Overregularize

Слишком сильный L2 → underfit.

3. Log reg на нелинейных

Для сложных patterns — tree-based или neural.

4. Смотреть только test

Надо train + test сравнивать.

Связанные темы

FAQ

Neural network underfit?

Возможно. Слишком мало слоёв или short training.

Data leakage или underfit — что сначала?

Сначала leakage check (hubris metrics). Потом fit assessment.

Какой индикатор underfit?

Train и test accuracy одинаково низкие. С ростом complexity улучшаются обе.

Как узнать «минимальный complexity»?

Learning curves + validation curve.


Тренируйте ML — откройте тренажёр с 1500+ вопросами для собесов.