Линейная регрессия на Python: первый прогноз числовой величины

Линейная регрессия предсказывает число как взвешенную сумму признаков. Она служит понятной отправной точкой для оценки цены, спроса или длительности: модель быстро обучается,…

Линейная регрессия предсказывает число как взвешенную сумму признаков. Она служит понятной отправной точкой для оценки цены, спроса или длительности: модель быстро обучается, коэффициенты можно исследовать, а результат удобно использовать как baseline для более сложных методов.

Как устроен прогноз

Для одного признака модель ищет прямую y = w × x + b. Коэффициент w показывает, насколько меняется прогноз при увеличении признака на единицу, а b задаёт свободный член. Для нескольких признаков складываются их отдельные вклады.

Во время обучения коэффициенты подбираются так, чтобы уменьшить функцию потерь. Обычный метод наименьших квадратов минимизирует сумму квадратов отклонений между известными ответами и прогнозами. Большие промахи получают особенно высокий вес.

Пример с синтетическими данными

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import train_test_split

rng = np.random.default_rng(42)
area = rng.uniform(20, 120, size=300)
rooms = rng.integers(1, 5, size=300)
price = 2.1 * area + 8.0 * rooms + rng.normal(0, 12, size=300)

X = np.column_stack([area, rooms])
X_train, X_test, y_train, y_test = train_test_split(
    X, price, test_size=0.2, random_state=42
)

model = LinearRegression().fit(X_train, y_train)
predictions = model.predict(X_test)

print('MAE:', round(mean_absolute_error(y_test, predictions), 2))
print('Коэффициенты:', model.coef_.round(2))

Здесь данные специально созданы почти линейными, поэтому модель должна восстановить вклады площади и комнат. На реальной выборке связь может зависеть от района, состояния, сезона и взаимодействия признаков.

Как читать коэффициенты

Положительный коэффициент означает рост прогноза при увеличении признака, если остальные значения фиксированы. Но величины коэффициентов нельзя напрямую сравнивать, когда признаки измерены в разных единицах. Один квадратный метр и один миллион рублей дохода имеют несопоставимый масштаб.

Коэффициент также не доказывает причинность. Модель может использовать признак как косвенный индикатор другой величины. Сильная корреляция между признаками делает отдельные веса нестабильными: прогноз остаётся приемлемым, а интерпретация каждого вклада меняется между выборками.

Когда прямой недостаточно

Линейная модель систематически ошибается, если связь имеет изгиб, порог или сложное взаимодействие. Можно добавить осмысленные преобразования, например квадрат площади, но каждое расширение увеличивает гибкость и риск переобучения.

Регуляризованные варианты Ridge и Lasso штрафуют слишком большие коэффициенты. Они особенно полезны при множестве связанных признаков, однако силу регуляризации нужно выбирать на валидации, а не на финальном тесте.

С чем сравнивать результат

Baseline для регрессии может всегда предсказывать медиану обучающих ответов. Если линейная модель не превосходит такое правило, проверьте постановку, признаки и разбиение. Сложный алгоритм не исправит цель, которую доступные данные почти не объясняют.

Практика: исследуйте остатки

Постройте прогноз цены по одному признаку и вычислите остатки y_test - predictions. Сравните среднюю ошибку для маленьких и больших объектов. Если знаки или величины заметно различаются, сформулируйте, какой нелинейный эффект или отсутствующий признак может объяснить структуру ошибок.

Что важно запомнить

Источники