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 → balancedDegree 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+ вопросами для собесов.