Урок 8. Модель LinearRegression в Scikit-Learn, градиентный спуск в SGDRegressor и метрика R2

На предыдущих этапах мы подробно изучили математическую логику градиентного спуска и провели ручную очистку датасета. Теперь мы переходим к использованию промышленного стандарта — библиотеки машинного обучения Scikit-Learn (sklearn). Мы разберем стандартный пайплайн регрессии, изучим аналитический метод оптимизации линейных моделей и познакомимся с относительной метрикой оценки качества прогнозов.

1. Знакомство со Scikit-Learn

Scikit-Learn — это фундаментальная open-source библиотека машинного обучения для Python. Ее ключевое преимущество — простой и унифицированный API. Вне зависимости от сложности используемого алгоритма, интерфейс взаимодействия остается неизменным:

  • .fit(X, y) — метод запуска обучения (подгонки весов) модели на основе признаков \(X\) и целевой переменной \(y\).
  • .predict(X_new) — метод расчета предсказаний для новых объектов.

Пайплайн решения задачи регрессии:

Импорт библиотек → Подготовка данных → Выделение X и y → fit() → predict() → Оценка качества

Мы импортируем класс LinearRegression, разделяем наш итоговый очищенный датасет на матрицу независимых признаков \(X\) (путем отбрасывания столбца цены: data.drop(columns=['Цена'])) и вектор целевой переменной \(y\) (data['Цена']), после чего запускаем обучение в один оператор: model.fit(X, y).

2. Математическое ядро LinearRegression: нормальное уравнение

В отличие от нашего самописного алгоритма из первого занятия, класс LinearRegression в Scikit-Learn по умолчанию не использует итерационный градиентный спуск. Вместо этого он вычисляет точные оптимальные веса за один шаг, используя аналитический метод линейной алгебры — нормальное уравнение (Normal Equation):

$$ \theta = (X^T X)^{-1} X^T y $$

Где:

  • \(\theta\) (theta) — вектор искомых весов (коэффициентов \(w\) и смещения \(b\)).
  • \(X\) — матрица признаков (со специальным добавленным столбцом из единиц для свободного члена).
  • \(X^T\) — транспонированная матрица признаков.
  • \((…)^{-1}\) — операция обращения матрицы.
  • \(y\) — вектор целевых значений цены.

Важное следствие: Поскольку нормальное уравнение представляет собой прямое аналитическое вычисление, у модели LinearRegression полностью отсутствуют гиперпараметры. Ей не нужно задавать шаг обучения (\(\alpha\)) или количество эпох — формула сразу находит глобальный минимум функции ошибки.

Когда нормальное уравнение работает плохо?

Главный недостаток аналитического метода — высокая вычислительная сложность операции обращения матрицы (\(O(P^3)\), где \(P\) — количество признаков). Если признаков становится слишком много (например, \(P > 10\,000\) после применения One-Hot Encoding), вычисления становятся ресурсоемкими и медленными.

В таких многомерных случаях используют итерационную альтернативу — класс SGDRegressor, реализующий стохастический градиентный спуск.

3. Масштабируемый оптимизатор SGDRegressor

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

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

4. Оценка качества регрессии: коэффициент детерминации \(R^2\)

Абсолютные метрики (MAE и MSE) измеряют ошибку в единицах целевой переменной (например, в рублях). Но они не дают ответа на вопрос: «А насколько наша модель вообще хороша в относительном выражении?». Ошибка в \(18\,000\) рублей при аренде квартиры за \(60\,000\) рублей — это средний результат, но та же ошибка при покупке квартиры за \(15\) млн — фантастическая точность.

Для универсальной шкалы оценки используется **коэффициент детерминации \(R^2\) (R-squared)**. Он показывает, какую долю дисперсии (вариативности) целевой переменной смогла объяснить наша модель по сравнению с простейшей базовой моделью (baseline).

Базовая модель (baseline) — это «модель наивного предсказания», которая для любого объекта просто выдает среднее арифметическое значение цены по всей выборке (\(\bar{y}\)).

Формула коэффициента детерминации \(R^2\):

$$ R^2 = 1 – \frac{SS_{\text{res}}}{SS_{\text{tot}}} = 1 – \frac{\sum (y_i – \hat{y}_i)^2}{\sum (y_i – \bar{y})^2} $$

Где:

  • \(SS_{\text{res}}\) (числитель) — сумма квадратов остатков нашей модели (необъясненная дисперсия).
  • \(SS_{\text{tot}}\) (знаменатель) — общая сумма квадратов отклонений от среднего значения (общая дисперсия выборки).

Метрика R2

Интерпретация значений \(R^2\):

  • \(R^2 \approx 1\) (или \(100\%\)) — идеальная модель, безошибочно описывающая все зависимости.
  • \(R^2 \approx 0.75\) — хороший прикладной показатель. Модель успешно объясняет \(75\%\) вариативности данных.
  • \(R^2 = 0\) — бесполезная модель, работающая на уровне наивного предсказания по среднему значению.
  • \(R^2 < 0\) — аномально плохая модель. Ее предсказания дают большую ошибку, чем простое среднее значение.

Результаты нашего обучения

Для обученной нами модели LinearRegression на подготовленном датасете ЦИАН метрика \(R^2\) составляет \(0.686\) на тесте и \(0.709\) на обучении. Это означает, что даже при сильно усеченном наборе признаков наша модель успешно объясняет около \(70\%\) ценообразования московских квартир.

План занятия

  1. Знакомство со Scikit-Learn
    • Обзор ключевых возможностей библиотеки с открытым исходным кодом.
    • Концепция единого API: универсальные методы fit() (обучение) и predict() (прогнозирование).
    • Стандартный пайплайн решения регрессионных задач.
  2. Практическая реализация LinearRegression
    • Разделение итогового датасета на матрицу независимых признаков \(X\) и вектор целевой переменной \(y\).
    • Инициализация и обучение модели в один шаг через model.fit(X, y).
    • Создание нового тестового объекта и прогнозирование цены с помощью predict().
    • Расчет базовых абсолютных метрик качества предсказаний (MAE и MSE) из пакета sklearn.metrics.
  3. Аналитическое ядро LinearRegression
    • Почему стандартный класс LinearRegression не использует градиентный спуск.
    • Математическая суть **нормального уравнения (Normal Equation)**: аналитический расчет весов \(\theta = (X^T X)^{-1} X^T y\).
    • Объяснение отсутствия гиперпараметров (скорости обучения и количества итераций) у модели.
    • Ограничения метода: высокая вычислительная сложность операции обращения матрицы при количестве признаков \(P > 10\,000\).
  4. Масштабируемый оптимизатор SGDRegressor
    • SGDRegressor как итерационная альтернатива на основе стохастического градиентного спуска.
    • Критическая важность предварительного масштабирования признаков при помощи StandardScaler для устранения эффекта вытянутого каньона потерь.
    • Обзор ключевых гиперпараметров оптимизатора: loss (функция потерь, Huber Loss), penalty (L1/L2 регуляризация), learning_rate, eta0, max_iter, tol.
    • Сводные правила выбора: когда использовать LinearRegression, а когда — SGDRegressor.
  5. Коэффициент детерминации \(R^2\)
    • Почему абсолютные метрики MAE и MSE неудобны для кросс-проектной оценки качества предсказаний.
    • Концепция базового уровня (baseline) регрессии на основе среднего значения выборки (\(\bar{y}\)).
    • Математическая формула \(R^2\) как мера доли объясненной дисперсии данных: $$R^2 = 1 – \frac{SS_{\text{res}}}{SS_{\text{tot}}}$$
    • Интерпретация шкалы значений \(R^2\) (от \(\leq 0\) до \(1.0\)). Оценка результатов нашей модели на датасете ЦИАН.

Не уходите просто так – не упустите возможность только здесь и сейчас получить скиду!

Индивидуальная консультация по Яндекс Директу или Google Ads со скидкой

25%

"*"обозначает обязательные поля

Это поле используется для проверочных целей, его следует оставить без изменений.