Регрессия (ML)
Задача машинного обучения, где модель предсказывает непрерывное число: цену, нагрузку, температуру, время отклика.
Что такое регрессия
Регрессия — задача машинного обучения, в которой модель предсказывает непрерывную величину: цену квартиры, завтрашнюю нагрузку на сервер, время доставки, температуру. Ответом служит число из бесконечного диапазона, а не метка из заранее заданного списка.
Этим регрессия отличается от классификации — второй базовой задачи обучения с учителем. «Сколько будет стоить эта машина?» — регрессия. «Это седан или внедорожник?» — классификация.
Регрессия vs классификация
| Регрессия | Классификация | |
|---|---|---|
| Что предсказывает | Число | Метку класса |
| Ответ | 3 427.50 ₽ | «спам» / «не спам» |
| Типичный loss | MSE, MAE | Cross-entropy |
| Метрики качества | MAE, RMSE, R² | Accuracy, precision, recall |
| Выход модели | Одно число | Логиты → softmax |
Ловушка именования. Логистическая регрессия, вопреки названию, решает задачу классификации — она предсказывает вероятность класса, а не произвольное число. Название историческое: внутри действительно линейная регрессия, но её выход прогоняют через сигмоиду.
Задача регрессии формально
Есть набор объектов с признаками и известным правильным ответом — датасет. Нужно подобрать функцию, которая по признакам выдаёт число, максимально близкое к правильному:
Признаки (X) Целевая переменная (y)
площадь, этаж, район → цена
CPU, RSS, число запросов → время отклика
Обучение — это подбор параметров модели так, чтобы минимизировать ошибку на обучающих данных. Ошибку измеряет функция потерь, а сам подбор идёт по градиенту — шаг за шагом в сторону уменьшения ошибки.
Виды регрессионных моделей
| Модель | Когда применима | Особенность |
|---|---|---|
| Линейная | Зависимость близка к прямой | Интерпретируема, быстрая, базовый ориентир |
| Полиномиальная | Гладкая нелинейная зависимость | Легко переобучается на высоких степенях |
| Ridge / Lasso | Много признаков, есть шум | Линейная + регуляризация; Lasso обнуляет лишние признаки |
| Дерево решений | Разрывы и пороги в данных | Не требует масштабирования признаков |
| Градиентный бустинг | Табличные данные | Практический выбор по умолчанию для таблиц |
| Нейросеть | Много данных, сложная структура | Нужен GPU, хуже интерпретируется |
На табличных данных градиентный бустинг (XGBoost, LightGBM, CatBoost) обычно обыгрывает нейросети. Нейросети выигрывают там, где признаки не таблица, а сырой сигнал — изображение, звук, текст.
Метрики качества
- MAE — средняя абсолютная ошибка. В единицах целевой переменной: «в среднем ошибаемся на 12 минут». Устойчива к выбросам.
- MSE — средний квадрат ошибки. Штрафует крупные промахи сильнее мелких.
- RMSE — корень из MSE. Как MSE, но снова в исходных единицах.
- R² — доля объяснённой дисперсии. 1 — идеально, 0 — не лучше предсказания средним, отрицательное значение — хуже среднего.
Выбор метрики — это решение о том, что считать ошибкой. Если один промах на 100 хуже, чем сто промахов по 1, берите RMSE; если все ошибки равнозначны — MAE.
Пример на scikit-learn
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, r2_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = LinearRegression().fit(X_train, y_train)
pred = model.predict(X_test)
print(mean_absolute_error(y_test, pred)) # средняя ошибка в единицах y
print(r2_score(y_test, pred)) # доля объяснённой дисперсии
Метрики всегда считают на отложенной выборке. Хорошее качество на обучающих данных при плохом на тестовых — переобучение: модель запомнила выборку вместо того, чтобы уловить закономерность.
Регрессия и инфраструктура
Регрессионные модели редко требуют GPU: линейная модель или бустинг на миллионах строк обучаются на CPU за минуты. GPU нужен, когда регрессия — это «голова» нейросети: предсказание глубины по картинке, оценка возраста по лицу, прогноз по временным рядам.
Прикладной сценарий для хостинга — прогноз нагрузки: модель предсказывает число запросов на час вперёд, а autoscaling поднимает реплики заранее, а не по факту роста.
Ещё одно значение. В тестировании «регрессия» означает совсем другое — возврат ранее исправленной ошибки, и регрессионные тесты проверяют, что старая функциональность не сломалась. С ML это слово не связано никак.
Связанные термины
- loss — то, что минимизируют при обучении регрессии
- gradient — направление, по которому идёт подбор параметров
- параметр модели — то, что подбирается в процессе обучения
- overfitting — главный риск при усложнении модели
- regularization — способ его ограничить
- датасет — данные с известными ответами
Готовы запустить GPU-задачу?
Запустить GPU-сервер