Регрессионный анализ 📈
Почти любая задача машинного обучения, где нужно предсказать число — цену квартиры по её площади, время доставки по расстоянию, выручку по рекламному бюджету, — в конечном счёте сводится к одному и тому же вопросу: как провести через облако точек наблюдений такую линию (или гиперплоскость, если признаков много), которая описывает зависимость лучше всех остальных возможных линий? Ответ на этот вопрос даёт регрессионный анализ, и его простейшая версия — линейная регрессия — по праву считается самой базовой моделью машинного обучения. С неё начинается почти каждый курс ML, и не случайно: линейная регрессия — это модель, у которой оптимальные параметры находятся не приближённо, не итеративно, а точно, аналитической формулой в одну строчку матричной алгебры.
Именно эта точность и делает линейную регрессию таким удобным учебным полигоном для понимания того, что вообще происходит внутри обучения модели. У любой модели машинного обучения есть параметры (веса), есть функция потерь, измеряющая, насколько плохо модель с текущими параметрами описывает данные, и есть процедура минимизации этой функции потерь по параметрам. В глубоком обучении эта минимизация делается численно, итеративно, шаг за шагом, через градиентный спуск — потому что аналитического решения для сложных нейросетей не существует. А в линейной регрессии минимизация функции потерь (суммы квадратов остатков) имеет точное аналитическое решение — систему так называемых нормальных уравнений. Вывод этого решения через частные производные, которым посвящена значительная часть этого урока, — это, по сути, единственный шаг того самого градиентного спуска, доведённый до предела: вместо того чтобы много раз чуть-чуть подправлять веса в сторону антиградиента, здесь сразу находится точка, где градиент функции потерь равен нулю.
Метод, который позволяет находить эти оптимальные коэффициенты, называется методом наименьших квадратов (МНК, международная аббревиатура — OLS) — это один из самых часто цитируемых терминов в анализе данных, и ты встретишь его в документации sklearn.linear_model.LinearRegression, в статистических пакетах statsmodels, в описании практически любой регрессионной модели. Понимание того, откуда берётся формула МНК и что она на самом деле минимизирует, снимает завесу таинственности с огромного пласта прикладной статистики и машинного обучения — от простейшей линии тренда в Excel до входного слоя градиентного бустинга, где каждое отдельное дерево иногда строит именно кусочно-постоянную регрессию.
В этом уроке ты пройдёшь полный путь: от интуитивного представления о «наилучшей прямой» через строгий вывод формул коэффициентов $b_0$ и $b_1$, до метрики качества модели $R^2$ и предпосылок, при нарушении которых классическая линейная регрессия перестаёт быть надёжной. Отдельно ты увидишь, как простая регрессия с одним признаком естественно обобщается на множественную регрессию с произвольным числом признаков — ровно так, как устроена LinearRegression в реальных ML-пайплайнах, где признаков обычно не один, а десятки или сотни.
История
Формальные основы метода наименьших квадратов заложил французский математик Адриен Мари Лежандр, опубликовавший его в 1805 году в приложении к работе о вычислении орбит комет. Задача была практической и остросовременной: астрономы располагали набором зашумлённых наблюдений положения небесного тела и хотели вывести уравнение его орбиты, которое наилучшим образом согласовывалось бы со всеми измерениями сразу, а не проходило точно через какие-то отдельные, возможно, неточные точки. Лежандр предложил идею, которая сегодня кажется очевидной, но в начале XIX века была настоящим прорывом: минимизировать сумму квадратов расхождений между наблюдениями и моделью, а не сумму абсолютных величин расхождений или какой-то другой критерий. Квадрат оказался удобен математически (в отличие от модуля, квадратичная функция всюду гладкая и дифференцируемая) и содержательно — большие ошибки штрафуются гораздо сильнее маленьких.
Почти сразу же разгорелся один из самых известных приоритетных споров в истории науки. Немецкий математик Карл Фридрих Гаусс заявил, что использовал тот же метод ещё в 1795 году, за десять лет до публикации Лежандра, просто не публиковал его — Гаусс применял МНК для предсказания положения карликовой планеты Церера, которую незадолго до этого открыли, а затем временно потеряли из виду за Солнцем. Гаусс сумел точно предсказать, где Церера появится вновь, именно с помощью метода наименьших квадратов, и это предсказание блестяще подтвердилось на практике, что сделало Гаусса знаменитым задолго до того, как он опубликовал математическое обоснование метода в 1809 году. Историки науки спорят об этом приоритете до сих пор, но именно Гаусс дал методу строгое вероятностное обоснование: он показал, что оценки МНК совпадают с оценками максимального правдоподобия, если ошибки измерений подчиняются нормальному распределению, — фундаментальная связь, которая до сих пор лежит в основе статистической теории линейной регрессии.
Само слово «регрессия» пришло из совсем другой области и было введено значительно позже — английским учёным Фрэнсисом Гальтоном в 1880-х годах. Гальтон изучал наследование роста и заметил любопытный эффект: дети очень высоких родителей в среднем были ниже своих родителей, а дети очень низких родителей — в среднем выше, то есть рост потомства как бы «сползал», регрессировал к среднему значению по популяции. Он назвал это явление «регрессией к посредственности», и хотя сегодня этот конкретный биологический эффект называют регрессией к среднему, сам термин «регрессия» прижился для обозначения всего класса методов, описывающих зависимость одной переменной от другой через уравнение прямой или кривой. Развитие этой идеи Гальтона его учеником Карлом Пирсоном — тем самым, с чьим критерием хи-квадрат ты познакомился в прошлом уроке, — привело к современному аппарату корреляционного и регрессионного анализа, объединяющему геометрическую идею Лежандра и Гаусса с вероятностной интерпретацией Гальтона и Пирсона.
Простая линейная регрессия: постановка задачи
Интуиция: наилучшая прямая через облако точек
Представь график рассеяния (scatter plot): по горизонтальной оси отложен признак $x$ (например, площадь квартиры в квадратных метрах), по вертикальной — целевая переменная $y$ (например, цена квартиры). Точки на этом графике не лежат на одной прямой — реальные данные всегда зашумлены: на цену влияют ещё десятки факторов помимо площади, плюс есть элемент случайности в том, как именно договорились продавец с покупателем. Но общая тенденция видна невооружённым глазом: чем больше площадь, тем в среднем выше цена. Простая линейная регрессия формализует эту тенденцию одной прямой линией, которая проходит через облако точек так, чтобы в среднем отклонения точек от линии были как можно меньше.
Слово «простая» в термине «простая линейная регрессия» указывает не на лёгкость метода, а на то, что используется ровно один признак-предиктор $x$ для предсказания одной целевой переменной $y$ (в отличие от множественной регрессии с несколькими признаками, о которой пойдёт речь дальше в этом уроке). Модель предполагает, что истинная зависимость в генеральной совокупности линейна, но каждое конкретное наблюдение отклоняется от этой идеальной линии на случайную величину — ошибку (или возмущение) $\varepsilon$, которая вбирает в себя все неучтённые факторы и просто случайный шум.
Формула (модель простой линейной регрессии): Для каждого наблюдения $i=1,\dots,n$ предполагается
$$y_i = b_0 + b_1 x_i + \varepsilon_i,$$где $b_0$ — свободный член (пересечение с осью $y$, значение $y$ при $x=0$), $b_1$ — коэффициент наклона (на сколько единиц в среднем меняется $y$ при увеличении $x$ на одну единицу), а $\varepsilon_i$ — случайная ошибка $i$-го наблюдения, отражающая все факторы, не учтённые моделью. Коэффициенты $b_0$ и $b_1$ неизвестны и оцениваются по выборочным данным $(x_1,y_1),\dots,(x_n,y_n)$.
Важно с самого начала различать два слоя этой конструкции. Есть теоретическая, «истинная» прямая $b_0 + b_1 x$, которую мы никогда не наблюдаем напрямую, — она существует в генеральной совокупности. И есть оценка этой прямой, построенная по конкретной выборке, — её принято обозначать $\hat y = \hat b_0 + \hat b_1 x$, где «шляпки» над буквами означают «это оценка, посчитанная по данным, а не истинное значение». Для каждого наблюдения $i$ разность между реальным значением $y_i$ и предсказанным по модели значением $\hat y_i$ называется остатком (residual): $e_i = y_i - \hat y_i$. Остаток — это эмпирический, наблюдаемый аналог теоретической ошибки $\varepsilon_i$: ошибка существует в теоретической модели генеральной совокупности, а остаток — это то, что реально можно посчитать по конкретной подогнанной прямой и конкретным данным.
Примеры с разбором
Пример 1 (лёгкий). Дана подогнанная модель простой линейной регрессии $\hat y = 5 + 2x$, где $x$ — число часов подготовки к экзамену, $y$ — балл за экзамен из 100. Найди предсказанный балл для студента, готовившегося $10$ часов, и интерпретируй смысл коэффициентов $b_0=5$ и $b_1=2$.
Подставляем $x=10$ в уравнение: $\hat y = 5 + 2\cdot10 = 25$. Модель предсказывает балл $25$ из $100$ при десяти часах подготовки. Коэффициент $b_0=5$ — это предсказанный балл при $x=0$, то есть без всякой подготовки (формальная экстраполяция модели, не обязательно содержательно осмысленная, если ноль часов подготовки не встречался в исходных данных). Коэффициент $b_1=2$ означает: каждый дополнительный час подготовки в среднем добавляет $2$ балла к результату экзамена, при прочих равных условиях.
Пример 2 (средний). По выборке из пяти студентов получены остатки модели: $e_1=3$, $e_2=-2$, $e_3=1$, $e_4=-4$, $e_5=2$. Посчитай сумму остатков и объясни, почему для корректно подогнанной методом наименьших квадратов простой линейной регрессии эта сумма всегда должна быть равна (или очень близка к) нулю.
Сумма остатков: $3+(-2)+1+(-4)+2 = 0$. Это не случайное совпадение, а фундаментальное свойство МНК-оценок: одно из двух нормальных уравнений, которые будут выведены в следующем разделе, требует, чтобы сумма остатков равнялась нулю по построению. Содержательно это означает, что линия регрессии МНК всегда проходит через «центр масс» облака точек — точку со средними значениями $(\bar x, \bar y)$ — и положительные отклонения точек выше линии в сумме в точности компенсируются отрицательными отклонениями точек ниже линии.
Пример 3 (сложный). Модель $\hat y = 12 + 0{,}8x$ построена для предсказания расхода топлива $y$ (литры на 100 км) по средней скорости движения $x$ (км/ч) на выборке городских поездок. Для конкретной поездки при скорости $x=40$ км/ч реальный расход составил $y=46$ литров на 100 км. Найди остаток этого наблюдения и определи, переоценивает или недооценивает модель реальный расход топлива в этой точке.
Сначала находим предсказанное моделью значение: $\hat y = 12+0{,}8\cdot40 = 12+32 = 44$. Остаток: $e = y-\hat y = 46-44 = 2$. Положительный остаток означает, что реальное наблюдаемое значение оказалось больше предсказанного моделью — модель в этой точке недооценила реальный расход топлива на $2$ литра на 100 км. Если бы остаток был отрицательным, это означало бы обратное — модель переоценила бы фактическое значение. Содержательно такой положительный остаток при относительно невысокой скорости может говорить о дополнительном факторе, не учтённом в модели, — например, о частых остановках на светофорах в этой конкретной поездке, повышающих расход топлива независимо от средней скорости.
Почему это важно. Формализация «прямой через облако точек» через модель $y=b_0+b_1x+\varepsilon$ — это не просто удобная запись, а концептуальный мост между описательной статистикой (просто нарисовать линию тренда) и статистическим выводом (оценить, насколько эта линия достоверна, построить доверительные интервалы для коэффициентов, проверить гипотезы о их значимости). В машинном обучении именно эта модель — с явным выделением предсказанного значения $\hat y$ и остатка $e$ — лежит в основе того, как работает model.predict() в любой регрессионной библиотеке: обученная модель хранит коэффициенты $\hat b_0, \hat b_1$, и предсказание для нового объекта — это просто подстановка его признака в формулу прямой.
Метод наименьших квадратов: вывод формул коэффициентов
Интуиция: минимизация суммы квадратов отклонений
Через любые две точки на плоскости можно провести бесконечно много «почти подходящих» прямых, но нужна одна конкретная, «наилучшая». Что значит «наилучшая»? Естественная идея — минимизировать в каком-то смысле суммарное расхождение между реальными точками $y_i$ и значениями на прямой $\hat y_i = b_0+b_1x_i$. Простое суммирование расхождений $y_i-\hat y_i$ не годится (положительные и отрицательные отклонения взаимно уничтожаются, и прямая, у которой половина точек далеко выше, а половина далеко ниже, формально даст такую же нулевую сумму, как идеальная прямая через все точки). Можно было бы суммировать модули отклонений, но эта функция негладкая (у модуля есть излом в нуле) и математически неудобная для точного аналитического решения. Метод наименьших квадратов выбирает третий вариант — минимизировать сумму квадратов отклонений, что и гладко, и штрафует большие ошибки заметно сильнее маленьких.
Задача сводится к поиску таких значений $b_0$ и $b_1$, при которых функция потерь — сумма квадратов остатков (обозначается SSR, иногда встречается обозначение RSS) — достигает минимума. Это в точности та же самая логика, что используется при обучении любой модели машинного обучения: определяется функция потерь, и параметры модели подбираются так, чтобы её минимизировать. Разница лишь в том, что здесь минимизация делается не градиентным спуском, а напрямую — через классический аппарат математического анализа: находится точка, где обе частные производные функции потерь по $b_0$ и по $b_1$ одновременно равны нулю (необходимое условие минимума гладкой функции, а выпуклость суммы квадратов гарантирует, что найденная точка — действительно глобальный минимум, а не просто седловая точка или локальный минимум).
Формула (функция потерь МНК):
$$S(b_0,b_1) = \sum_{i=1}^{n} \bigl(y_i - b_0 - b_1 x_i\bigr)^2 = \sum_{i=1}^n e_i^2.$$Задача метода наименьших квадратов — найти $\hat b_0, \hat b_1$, минимизирующие $S(b_0,b_1)$.
Проведём вывод формул полностью, шаг за шагом — это ключевой момент урока, потому что именно здесь видно, как «слепой» перебор превращается в точную формулу.
Шаг 1. Частная производная по $b_0$. Дифференцируем $S(b_0,b_1)$ по $b_0$, используя правило дифференцирования сложной функции (цепное правило):
$$\frac{\partial S}{\partial b_0} = \sum_{i=1}^n 2\bigl(y_i-b_0-b_1x_i\bigr)\cdot(-1) = -2\sum_{i=1}^n\bigl(y_i-b_0-b_1x_i\bigr).$$Приравниваем к нулю и делим обе части на $-2$:
$$\sum_{i=1}^n\bigl(y_i-b_0-b_1x_i\bigr)=0 \quad\Longrightarrow\quad \sum y_i - nb_0 - b_1\sum x_i = 0.$$Это первое нормальное уравнение. Оно в точности объясняет свойство из примера 2 предыдущего раздела: сумма остатков $\sum(y_i-b_0-b_1x_i) = \sum e_i$ по построению МНК-решения равна нулю.
Шаг 2. Частная производная по $b_1$. Дифференцируем $S(b_0,b_1)$ по $b_1$:
$$\frac{\partial S}{\partial b_1} = \sum_{i=1}^n 2\bigl(y_i-b_0-b_1x_i\bigr)\cdot(-x_i) = -2\sum_{i=1}^n x_i\bigl(y_i-b_0-b_1x_i\bigr).$$Приравниваем к нулю и делим на $-2$:
$$\sum_{i=1}^n x_i\bigl(y_i-b_0-b_1x_i\bigr) = 0 \quad\Longrightarrow\quad \sum x_iy_i - b_0\sum x_i - b_1\sum x_i^2 = 0.$$Это второе нормальное уравнение.
Шаг 3. Решаем систему двух линейных уравнений относительно $b_0$ и $b_1$. Из первого уравнения выражаем $b_0$, разделив всё на $n$:
$$b_0 = \bar y - b_1 \bar x, \qquad \text{где } \bar x = \frac{1}{n}\sum x_i,\ \ \bar y = \frac{1}{n}\sum y_i.$$Подставляем это выражение для $b_0$ во второе уравнение и после алгебраических преобразований (раскрытия скобок и группировки слагаемых с $b_1$) получаем:
$$b_1 = \frac{\sum_{i=1}^n (x_i-\bar x)(y_i-\bar y)}{\sum_{i=1}^n (x_i-\bar x)^2} = \frac{\sum x_iy_i - n\bar x\bar y}{\sum x_i^2 - n\bar x^2}.$$Формула (МНК-оценки коэффициентов простой линейной регрессии):
$$\hat b_1 = \frac{\sum_{i=1}^n (x_i-\bar x)(y_i-\bar y)}{\sum_{i=1}^n (x_i-\bar x)^2}, \qquad \hat b_0 = \bar y - \hat b_1\bar x.$$Числитель формулы для $\hat b_1$ — это (с точностью до делителя $n-1$) выборочная ковариация между $x$ и $y$, знаменатель — выборочная дисперсия $x$ (с той же оговоркой про делитель). Поэтому наклон регрессии можно записать компактно как $\hat b_1 = \dfrac{\text{cov}(x,y)}{\text{var}(x)}$.
Обрати внимание на глубокий смысл этой связки. Формула $\hat b_1 = \mathrm{cov}(x,y)/\mathrm{var}(x)$ прямо показывает: чем сильнее $x$ и $y$ изменяются согласованно (большая ковариация) и чем меньше сам $x$ разбросан (маленькая дисперсия $x$), тем круче будет наклон подогнанной прямой. А формула $\hat b_0 = \bar y - \hat b_1\bar x$ — это переписанное первое нормальное уравнение, которое геометрически означает, что прямая регрессии МНК всегда проходит через точку $(\bar x,\bar y)$, центр масс данных, — именно поэтому смещать линию регрессии, сохраняя её наклон, «просто так» нельзя: единожды зафиксировав наклон $\hat b_1$, положение линии по вертикали жёстко определяется требованием прохождения через $(\bar x,\bar y)$.
Примеры с разбором
Пример 1 (лёгкий). По четырём наблюдениям $x: 1,2,3,4$ и $y: 3,5,7,9$ найди МНК-оценки $\hat b_0$ и $\hat b_1$.
Считаем средние: $\bar x = (1+2+3+4)/4=2{,}5$, $\bar y=(3+5+7+9)/4=6$. Считаем отклонения от средних и их произведения:
$$(x_i-\bar x): -1{,}5;\ -0{,}5;\ 0{,}5;\ 1{,}5, \qquad (y_i-\bar y): -3;\ -1;\ 1;\ 3.$$Числитель $\hat b_1$: $\sum(x_i-\bar x)(y_i-\bar y) = (-1{,}5)(-3)+(-0{,}5)(-1)+(0{,}5)(1)+(1{,}5)(3) = 4{,}5+0{,}5+0{,}5+4{,}5=10$. Знаменатель: $\sum(x_i-\bar x)^2 = 2{,}25+0{,}25+0{,}25+2{,}25=5$. Отсюда $\hat b_1 = 10/5=2$, $\hat b_0 = 6-2\cdot2{,}5 = 6-5=1$. Итоговая модель: $\hat y = 1+2x$ — и действительно, при подстановке видно, что данные лежат точно на этой прямой ($x=1\Rightarrow y=3$, $x=2\Rightarrow y=5$ и так далее), то есть в этом искусственном примере зависимость строго линейна без всякого шума.
Пример 2 (средний). По выборке из шести наблюдений известны суммарные статистики: $n=6$, $\sum x_i=30$, $\sum y_i=210$, $\sum x_iy_i=1200$, $\sum x_i^2=170$. Найди МНК-оценки $\hat b_0,\hat b_1$, используя формулу через суммы (без вычитания средних по отдельным точкам).
Считаем средние: $\bar x=30/6=5$, $\bar y=210/6=35$. Используем эквивалентную формулу $\hat b_1 = \dfrac{\sum x_iy_i - n\bar x\bar y}{\sum x_i^2-n\bar x^2}$. Числитель: $1200 - 6\cdot5\cdot35 = 1200-1050=150$. Знаменатель: $170-6\cdot25=170-150=20$. Отсюда $\hat b_1 = 150/20=7{,}5$, $\hat b_0 = 35-7{,}5\cdot5=35-37{,}5=-2{,}5$. Итоговая модель: $\hat y=-2{,}5+7{,}5x$. Обрати внимание, что этот способ расчёта через суммы $\sum x_iy_i$ и $\sum x_i^2$ — это ровно то, как коэффициенты МНК вычисляются внутри библиотек на практике: одним проходом по данным собираются необходимые суммы, а не хранятся все попарные отклонения от среднего.
Пример 3 (сложный). Для выборки из пяти наблюдений $x: 2,4,6,8,10$ и $y: 15,20,26,29,35$ найди уравнение регрессии, предскажи значение $y$ при $x=7$ и найди остаток для наблюдения с $x=6$.
Считаем средние: $\bar x=(2+4+6+8+10)/5=6$, $\bar y=(15+20+26+29+35)/5=25$. Отклонения $x_i-\bar x$: $-4,-2,0,2,4$; отклонения $y_i-\bar y$: $-10,-5,1,4,10$. Произведения: $(-4)(-10)=40$, $(-2)(-5)=10$, $(0)(1)=0$, $(2)(4)=8$, $(4)(10)=40$; сумма $=40+10+0+8+40=98$. Квадраты отклонений $x$: $16,4,0,4,16$; сумма $=40$. Отсюда $\hat b_1=98/40=2{,}45$, $\hat b_0=25-2{,}45\cdot6=25-14{,}7=10{,}3$. Модель: $\hat y=10{,}3+2{,}45x$.
Предсказание при $x=7$: $\hat y = 10{,}3+2{,}45\cdot7=10{,}3+17{,}15=27{,}45$. Для наблюдения с $x=6$ предсказанное значение: $\hat y=10{,}3+2{,}45\cdot6=10{,}3+14{,}7=25$, а реальное значение $y=26$, поэтому остаток $e=26-25=1$ — модель немного недооценивает это конкретное наблюдение, хотя в целом хорошо описывает общий тренд роста $y$ с ростом $x$.
Почему это важно. Этот вывод формул — не абстрактное упражнение по матанализу, а прямая иллюстрация того, как устроена оптимизация в машинном обучении в целом. Функция потерь (сумма квадратов остатков) выпукла по параметрам, поэтому у неё есть единственный глобальный минимум, и условие «градиент равен нулю» полностью его характеризует. В более сложных моделях (логистическая регрессия, нейронные сети) аналогичная логика лежит в основе метода, только там аналитически решить систему уравнений, получающихся из приравнивания градиента к нулю, обычно не удаётся — и тогда на сцену выходит итеративный градиентный спуск, находящий приближённое решение той же самой задачи минимизации, для которой линейная регрессия даёт решение точно, за один шаг.
Коэффициент детерминации R²: насколько хороша модель
Интуиция: доля объяснённой дисперсии
Коэффициенты $\hat b_0$ и $\hat b_1$ можно посчитать для абсолютно любых данных — даже для полностью случайного, никак не связанного облака точек МНК подберёт какую-то прямую. Вопрос в том, насколько хорошо эта прямая на самом деле описывает данные: плотно ли точки прилегают к линии или разбросаны вокруг неё почти хаотично. Для ответа на этот вопрос используется коэффициент детерминации, обозначаемый $R^2$ («эр в квадрате»).
Идея коэффициента детерминации строится на разложении общей изменчивости (дисперсии) целевой переменной $y$ на две части: ту часть, которую объясняет модель (изменчивость предсказанных значений $\hat y_i$ вокруг общего среднего $\bar y$), и ту часть, которая остаётся необъяснённой (изменчивость остатков, то есть того, что модель не смогла уловить). Если модель объясняет всю изменчивость данных, остатков вообще нет, и $R^2=1$. Если модель не объясняет вообще ничего сверх того, что можно было бы сказать, просто взяв среднее значение $\bar y$ в качестве предсказания для любого $x$, то $R^2=0$.
Формула: Определим три суммы квадратов:
$$SST = \sum_{i=1}^n (y_i-\bar y)^2 \quad \text{(общая сумма квадратов)},$$$$SSR_{\text{объясн}} = \sum_{i=1}^n (\hat y_i-\bar y)^2 \quad \text{(объяснённая сумма квадратов)},$$
$$SSE = \sum_{i=1}^n (y_i-\hat y_i)^2 = \sum_{i=1}^n e_i^2 \quad \text{(остаточная сумма квадратов)}.$$
Для простой линейной регрессии, подогнанной МНК, выполняется точное тождество $SST = SSR_{\text{объясн}} + SSE$, и коэффициент детерминации определяется как
$$R^2 = \frac{SSR_{\text{объясн}}}{SST} = 1 - \frac{SSE}{SST}.$$$R^2$ показывает, какая доля общей дисперсии $y$ объясняется моделью, и принимает значения от $0$ до $1$ (для простой линейной регрессии; для множественной регрессии без свободного члена или при особых условиях теоретически возможны и отклонения от этого диапазона, но на практике для стандартной модели с константой $R^2\in[0,1]$).
Разложение $SST=SSR_{\text{объясн}}+SSE$ — не произвольное утверждение, а прямое следствие того, что остатки МНК-модели с константой в среднем равны нулю и не коррелируют с предсказанными значениями; это ровно то же самое свойство ортогональности, которое было получено из первого нормального уравнения. Полезно также знать вторую формулу для второй же интерпретации: для простой линейной регрессии с одним признаком коэффициент детерминации в точности равен квадрату выборочного коэффициента корреляции Пирсона между $x$ и $y$: $R^2 = r_{xy}^2$. Это красивый и практически полезный факт — он напрямую связывает регрессионный анализ с корреляционным, которые исторически развивались параллельно у Гальтона и Пирсона.
Примеры с разбором
Пример 1 (лёгкий). Для набора данных $SST=200$, $SSE=40$. Найди $R^2$ и содержательно интерпретируй результат.
$$R^2 = 1-\frac{SSE}{SST}=1-\frac{40}{200}=1-0{,}2=0{,}8.$$Модель объясняет $80\%$ дисперсии целевой переменной, оставшиеся $20\%$ изменчивости $y$ остаются необъяснёнными признаком $x$ и относятся на счёт случайной ошибки или неучтённых факторов. Значение $R^2=0{,}8$ в большинстве прикладных областей (кроме, например, точных физических измерений) считается довольно высоким показателем качества подгонки модели.
Пример 2 (средний). Для десяти наблюдений посчитаны предсказанные значения модели и остатки; при этом известно $\sum(y_i-\bar y)^2=450$ и $\sum(\hat y_i - y_i)^2=90$. Дополнительно известен выборочный коэффициент корреляции между $x$ и $y$, равный $r_{xy}=0{,}894$. Проверь согласованность двух способов вычисления $R^2$ — через суммы квадратов и через квадрат корреляции.
Через суммы квадратов: $SST=450$, $SSE=90$ (обрати внимание, что $\sum(\hat y_i-y_i)^2 = \sum(y_i-\hat y_i)^2$, знак внутри скобки под квадратом не важен). $R^2 = 1-90/450=1-0{,}2=0{,}8$. Через корреляцию: $R^2=r_{xy}^2 = 0{,}894^2\approx0{,}799\approx0{,}8$. Небольшое расхождение в третьем знаке объясняется округлением значения $r_{xy}$ до трёх знаков после запятой в условии — при точном расчёте оба способа дают строго одинаковый результат, что подтверждает тождество $R^2=r_{xy}^2$ для простой линейной регрессии.
Пример 3 (сложный). Две модели предсказывают цену квартиры: модель A использует только площадь и даёт $R^2_A=0{,}62$, модель Б добавляет к площади ещё и этаж, давая $R^2_Б=0{,}64$. Аналитик заключает: «добавление этажа как признака значимо улучшило модель». Оцени эту логику и определи, какая дополнительная информация нужна, чтобы делать такой вывод корректно.
Сам по себе рост $R^2$ с $0{,}62$ до $0{,}64$ не может служить достаточным основанием для вывода о значимом улучшении модели — есть важная асимметрия: при переходе от простой к множественной регрессии (добавлении любого нового признака, даже совершенно бесполезного и не связанного с целевой переменной по существу) обычная величина $R^2$ математически не может уменьшиться, она может только вырасти или остаться на том же уровне, поскольку МНК всегда находит по крайней мере такое же по качеству решение, просто занулив коэффициент при новом бесполезном признаке, если он действительно бесполезен, — а на практике из-за случайного шума в конечной выборке коэффициент почти никогда не будет ровно нулём, и $R^2$ чуть-чуть, но подрастёт. Поэтому для корректного сравнения моделей с разным числом признаков применяется скорректированный коэффициент детерминации (adjusted $R^2$), который штрафует за добавление каждого нового признака и может, в отличие от обычного $R^2$, и уменьшиться при добавлении бесполезного признака. Кроме того, стоило бы проверить статистическую значимость самого коэффициента при этаже (через $t$-статистику или доверительный интервал) — небольшой прирост $R^2$ на $0{,}02$ вполне может оказаться статистически незначимым при данном объёме выборки.
Почему это важно. $R^2$ — одна из самых часто используемых метрик качества регрессионных моделей в машинном обучении, встроенная как метод .score() практически в каждой библиотеке (например, в sklearn.linear_model.LinearRegression.score()). Но важно понимать её ограничения: высокий $R^2$ не означает, что модель предсказывает точно в абсолютных единицах (нужно смотреть на масштаб остатков, например через RMSE или MAE), не означает причинно-следственную связь между $x$ и $y$, и, как показал пример 3, не подходит для «слепого» сравнения моделей с разным числом признаков без поправки на сложность модели. Специалист по данным, ориентирующийся только на $R^2$ как на единственную метрику, рискует переобучить модель, бесконтрольно добавляя признаки ради роста этого показателя, — именно для защиты от такой ловушки существуют скорректированный $R^2$, кросс-валидация и разделение данных на обучающую и тестовую выборки.
Предпосылки классической линейной регрессии
Интуиция: когда МНК-оценкам можно доверять
Формулы $\hat b_0$ и $\hat b_1$, выведенные выше, можно вычислить для абсолютно любого набора точек — это чисто алгебраическая процедура минимизации суммы квадратов, не требующая никаких допущений о природе данных. Но чтобы интерпретировать эти оценки статистически (строить доверительные интервалы для коэффициентов, проверять гипотезы об их значимости через $t$-критерий, доверять $p$-value) и чтобы быть уверенным, что найденные МНК-оценки действительно являются наилучшими из всех возможных линейных несмещённых оценок, классическая линейная регрессия опирается на набор предпосылок. В англоязычной литературе эти предпосылки часто сокращают до одной запоминающейся аббревиатуры LINE, за каждой буквой которой стоит своё условие — линейность, независимость остатков, нормальность, равенство дисперсий; порядок изложения и точный список формулировок при этом может немного варьироваться от источника к источнику.
Предпосылки классической линейной регрессии (кратко):
- Линейность. Истинная зависимость между $x$ и $y$ (в терминах математического ожидания) действительно линейна: $\mathbb{E}[y\mid x] = b_0+b_1x$.
- Независимость остатков. Ошибки $\varepsilon_i$ для разных наблюдений не коррелируют между собой — значение ошибки одного наблюдения не даёт информации о значении ошибки другого. Особенно важно проверять это условие для данных, упорядоченных во времени (временны́е ряды), где нарушение называется автокорреляцией.
- Гомоскедастичность. Дисперсия ошибок постоянна для всех значений $x$: $\mathbb{D}[\varepsilon_i] = \sigma^2$ не зависит от $i$ или от $x_i$. Нарушение этого условия (гетероскедастичность) означает, что разброс ошибок систематически меняется — например, растёт вместе с ростом $x$.
- Нормальность остатков. Ошибки $\varepsilon_i$ распределены нормально: $\varepsilon_i \sim N(0,\sigma^2)$. Это условие нужно в первую очередь для точности доверительных интервалов и статистических тестов при малых выборках; для самих точечных МНК-оценок коэффициентов оно не требуется.
Стоит отдельно подчеркнуть иерархию важности этих условий. Теорема Гаусса — Маркова гарантирует, что при выполнении первых трёх условий (линейность, независимость и гомоскедастичность, плюс отсутствие систематической ошибки, $\mathbb{E}[\varepsilon_i]=0$) МНК-оценки являются наилучшими линейными несмещёнными оценками (это и есть знаменитая аббревиатура BLUE) — то есть среди всех линейных несмещённых способов оценить коэффициенты именно МНК-оценки обладают наименьшей дисперсией. Условие нормальности остатков для этого результата не требуется вовсе; оно нужно отдельно и только для того, чтобы точно (а не приближённо, асимптотически) обосновать распределения статистик, используемых при проверке гипотез о значимости коэффициентов, и для построения точных доверительных интервалов при небольших выборках.
Примеры с разбором
Пример 1 (лёгкий, гомоскедастичность). На графике остатков модели (по горизонтали — предсказанные значения $\hat y$, по вертикали — остатки $e$) разброс точек равномерный горизонтальный «коридор» одинаковой ширины на всём диапазоне значений $\hat y$. На графике другой модели разброс остатков образует характерную воронку — узкий при малых $\hat y$ и заметно расширяющийся при больших $\hat y$. Определи, какая из двух моделей удовлетворяет условию гомоскедастичности.
Первая модель, с равномерным «коридором» остатков одинаковой ширины на всём диапазоне предсказанных значений, соответствует условию гомоскедастичности — дисперсия ошибок не меняется с ростом $\hat y$. Вторая модель, с расширяющейся «воронкой», демонстрирует классический признак гетероскедастичности: дисперсия ошибок растёт вместе с уровнем предсказанного значения. Такая картина типична, например, для данных о расходах или доходах: абсолютный разброс трат при больших доходах обычно намного больше, чем при малых, просто в силу масштаба величин.
Пример 2 (средний, независимость остатков). Модель предсказывает ежедневную температуру воздуха по номеру дня в году. При анализе остатков обнаружено, что если остаток сегодняшнего дня положителен (реальная температура выше предсказанной), то с высокой вероятностью остаток и завтрашнего дня тоже окажется положительным — соседние по времени остатки систематически похожи друг на друга. Определи, какая предпосылка нарушена, и предложи содержательное объяснение этому эффекту.
Нарушена предпосылка независимости остатков — налицо автокорреляция остатков первого порядка (соседние по времени наблюдения коррелируют между собой). Содержательное объяснение вполне естественно для погодных данных: если сегодня установилась более тёплая, чем обычно для этого дня года, погода (например, из-за устойчивого циклона), то с высокой вероятностью и завтра будет теплее обычного — погодные аномалии обычно длятся несколько дней подряд, а не проявляются в виде независимого шума на каждый отдельный день. Практическое следствие нарушения независимости: стандартные ошибки коэффициентов, посчитанные в предположении независимости, окажутся заниженными, что сделает доверительные интервалы искусственно узкими и статистические тесты — ненадёжно оптимистичными.
Пример 3 (сложный, комплексная диагностика). Аналитик построил модель простой линейной регрессии зарплаты сотрудников по стажу работы и получил высокий $R^2=0{,}71$. При этом график остатков показывает явную параболическую дугу (остатки сначала отрицательны при малом стаже, становятся положительными в середине диапазона стажа и снова отрицательны при большом стаже). Определи, какая предпосылка нарушена в первую очередь, и объясни, почему высокий $R^2$ сам по себе не гарантирует корректности модели.
Систематическая параболическая форма остатков — это классический признак нарушения предпосылки линейности: истинная зависимость зарплаты от стажа, судя по всему, нелинейна (например, зарплата растёт быстро на первых годах карьеры, выходит на плато в середине карьеры и может даже немного снижаться ближе к пенсионному возрасту из-за специфики отдельных профессий или структуры компании) — простая прямая линия систематически недооценивает зарплату в середине диапазона стажа и переоценивает по краям, либо наоборот, в зависимости от направления дуги. Высокий $R^2=0{,}71$ здесь вводит в заблуждение: коэффициент детерминации измеряет общую долю объяснённой дисперсии, но нечувствителен к систематической, закономерной структуре в остатках — модель может объяснять значительную долю разброса данных и одновременно совершать систематическую, предсказуемую ошибку определённого вида на разных участках диапазона $x$. Именно поэтому визуальный анализ графика остатков — обязательный шаг проверки качества регрессии, а не просто формальность: он выявляет ровно те систематические проблемы, которые единственное число $R^2$ скрывает. Практический выход здесь — добавить в модель квадратичный член стажа (полиномиальная регрессия) или рассмотреть другую функциональную форму зависимости.
Почему это важно. Предпосылки классической линейной регрессии — это не бюрократический список условий для галочки, а прямое указание на то, где и как модель может подвести на практике. Нарушение гомоскедастичности и независимости остатков не портит сами точечные предсказания модели (МНК-оценки коэффициентов остаются несмещёнными даже при их нарушении), но делает ненадёжными стандартные ошибки, доверительные интервалы и p-value для коэффициентов — а значит, ненадёжны все выводы о статистической значимости признаков. Нарушение линейности — более серьёзная проблема, напрямую бьющая по качеству самих предсказаний. В прикладном машинном обучении эти же идеи живут под другими именами: график остатков как инструмент диагностики модели используется независимо от того, линейная это регрессия, градиентный бустинг или нейронная сеть, а понимание условий гомоскедастичности напрямую связано с выбором функции потерь и способов взвешивания наблюдений при обучении.
Множественная линейная регрессия: обобщение на несколько признаков
Интуиция: от прямой к гиперплоскости
В реальных задачах целевая переменная почти никогда не зависит только от одного признака. Цена квартиры зависит не только от площади, но и от района, этажа, года постройки, наличия ремонта. Множественная линейная регрессия — прямое обобщение простой регрессии на случай нескольких признаков-предикторов $x_1, x_2, \dots, x_p$. Геометрически вместо прямой на плоскости теперь ищется гиперплоскость в $(p+1)$-мерном пространстве (признаки плюс целевая переменная), но идея минимизации суммы квадратов остатков остаётся абсолютно той же самой.
Формула (модель множественной линейной регрессии):
$$y_i = b_0 + b_1x_{i1} + b_2x_{i2} + \dots + b_px_{ip} + \varepsilon_i, \qquad i=1,\dots,n.$$Коэффициент $b_j$ теперь интерпретируется как ожидаемое изменение $y$ при увеличении признака $x_j$ на одну единицу при фиксированных значениях всех остальных признаков — это принципиальное отличие от простой регрессии, где такой оговорки про «остальные признаки» просто не существует, поскольку признак всего один.
Выводить формулы коэффициентов множественной регрессии тем же способом «руками», как для простой регрессии, было бы крайне громоздко — пришлось бы дифференцировать сумму квадратов по каждому из $p+1$ коэффициентов и решать систему из $p+1$ линейных уравнений. К счастью, вся эта система компактно и элегантно записывается и решается в матричной форме. Обозначим через $\mathbf{X}$ матрицу признаков размера $n\times(p+1)$, у которой первый столбец состоит из единиц (для свободного члена $b_0$), а остальные столбцы — значения признаков $x_1,\dots,x_p$ для каждого наблюдения; через $\mathbf{y}$ — вектор-столбец из $n$ значений целевой переменной; через $\mathbf{b}$ — вектор-столбец из $p+1$ искомых коэффициентов.
Формула (МНК в матричной форме): Функция потерь записывается как
$$S(\mathbf{b}) = (\mathbf{y}-\mathbf{X}\mathbf{b})^{\mathsf T}(\mathbf{y}-\mathbf{X}\mathbf{b}),$$и её минимизация по вектору $\mathbf{b}$ (приравнивание градиента к нулевому вектору, что является прямым многомерным обобщением взятия двух частных производных из вывода для простой регрессии) даёт систему нормальных уравнений в матричном виде и её решение:
$$\mathbf{X}^{\mathsf T}\mathbf{X}\,\hat{\mathbf{b}} = \mathbf{X}^{\mathsf T}\mathbf{y} \quad\Longrightarrow\quad \hat{\mathbf{b}} = (\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}.$$
Эта формула требует, чтобы матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ была обратима — это и есть матричный аналог условия «$x$ не константа» из простой регрессии (там знаменатель формулы $\hat b_1$ не должен был обращаться в нуль). Матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ становится необратимой или почти необратимой, когда признаки сильно линейно зависимы друг от друга — эта проблема называется мультиколлинеарностью и является одной из главных практических сложностей множественной регрессии: если, скажем, площадь квартиры в квадратных метрах и площадь в квадратных футах присутствуют в модели одновременно как два «разных» признака, они несут абсолютно одинаковую информацию, и матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ окажется вырожденной.
Примеры с разбором
Пример 1 (лёгкий). Модель множественной регрессии цены квартиры (в тысячах рублей) имеет вид $\hat y = 500 + 80x_1 + 15x_2$, где $x_1$ — площадь в квадратных метрах, $x_2$ — этаж. Найди предсказанную цену для квартиры площадью $60$ м² на пятом этаже и интерпретируй коэффициент при $x_2$.
Подставляем значения: $\hat y = 500+80\cdot60+15\cdot5 = 500+4800+75=5375$ тысяч рублей. Коэффициент при этаже $b_2=15$ означает: при фиксированной площади квартиры каждый дополнительный этаж в среднем добавляет к цене $15$ тысяч рублей — важно подчеркнуть оговорку «при фиксированной площади», потому что именно она отличает интерпретацию коэффициента множественной регрессии от простой: этот эффект этажа очищен от влияния площади, которая тоже входит в модель.
Пример 2 (средний). Для матрицы признаков с двумя столбцами (константа и один признак $x$) матричная формула $\hat{\mathbf{b}}=(\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}$ должна свестись к уже известным формулам простой регрессии. Проверь это на маленьком числовом примере: $x: 1,2,3$; $y: 4,6,8$.
Матрица признаков $\mathbf{X} = \begin{pmatrix}1&1\\1&2\\1&3\end{pmatrix}$, вектор $\mathbf{y}=\begin{pmatrix}4\\6\\8\end{pmatrix}$. Считаем $\mathbf{X}^{\mathsf T}\mathbf{X} = \begin{pmatrix}3&6\\6&14\end{pmatrix}$ (сумма единиц, сумма $x_i$, сумма $x_i$, сумма $x_i^2$), и $\mathbf{X}^{\mathsf T}\mathbf{y}=\begin{pmatrix}18\\40\end{pmatrix}$ (сумма $y_i=4+6+8=18$, сумма $x_iy_i=1\cdot4+2\cdot6+3\cdot8=4+12+24=40$). Определитель матрицы $3\cdot14-6\cdot6=42-36=6$, обратная матрица $\dfrac{1}{6}\begin{pmatrix}14&-6\\-6&3\end{pmatrix}$. Умножаем на $\mathbf{X}^{\mathsf T}\mathbf{y}$: $\hat b_0 = \dfrac{14\cdot18-6\cdot40}{6}=\dfrac{252-240}{6}=\dfrac{12}{6}=2$, $\hat b_1=\dfrac{-6\cdot18+3\cdot40}{6}=\dfrac{-108+120}{6}=\dfrac{12}{6}=2$.
Проверим тот же результат по формулам простой регрессии: $\bar x=2$, $\bar y=6$, $\sum(x_i-\bar x)(y_i-\bar y) = (-1)(-2)+0\cdot0+1\cdot2=2+0+2=4$, $\sum(x_i-\bar x)^2=1+0+1=2$, отсюда $\hat b_1=4/2=2$, $\hat b_0=6-2\cdot2=2$. Оба способа полностью согласуются: $\hat b_0=2$, $\hat b_1=2$, модель $\hat y=2+2x$ — что и подтверждает: матричная формула МНК для случая одного признака в точности сводится к уже знакомым формулам простой линейной регрессии, просто записанным в более общем виде, годном для любого числа признаков.
Пример 3 (сложный). В модели множественной регрессии зарплаты по стажу работы ($x_1$, в годах) и стажу работы, выраженному в месяцах ($x_2=12x_1$), аналитик пытается обучить модель $\hat y=b_0+b_1x_1+b_2x_2$. Объясни, почему матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ в этом случае необратима, и к какой практической проблеме это приводит при попытке применить формулу $\hat{\mathbf{b}}=(\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}$.
Признак $x_2$ представляет собой точное линейное преобразование признака $x_1$ ($x_2=12x_1$), то есть столбцы матрицы $\mathbf{X}$, соответствующие $x_1$ и $x_2$, линейно зависимы (один — это просто другой, умноженный на константу $12$). Это классический, самый крайний случай мультиколлинеарности — совершенная (точная) мультиколлинеарность. Матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ в такой ситуации вырождена (её определитель равен нулю), обратной матрицы не существует, и формула $\hat{\mathbf{b}}=(\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}$ буквально не может быть вычислена — на практике программная реализация либо выдаст ошибку, либо (при использовании псевдообратной матрицы вместо истинно обратной) вернёт какое-то одно из бесконечного множества формально одинаково хороших по сумме квадратов решений, но коэффициенты $b_1$ и $b_2$ по отдельности при этом окажутся статистически неинтерпретируемыми и нестабильными — незначительное изменение данных может кардинально изменить, как «общий эффект стажа» распределится между $b_1$ и $b_2$. Практический вывод: перед обучением множественной регрессии нужно проверять признаки на линейную зависимость (или сильную корреляцию друг с другом) и исключать избыточные дублирующие признаки — в данном случае очевидное решение — оставить только один из двух вариантов измерения стажа, а не оба одновременно.
Почему это важно. Матричная форма МНК — это ровно то, что происходит «под капотом» вызова sklearn.linear_model.LinearRegression().fit(X, y): библиотека строит матрицу признаков $\mathbf{X}$ (с добавленным столбцом единиц или отдельно обрабатываемым свободным членом), решает систему нормальных уравнений (обычно не напрямую через обращение матрицы, а более численно устойчивыми методами вроде QR- или сингулярного разложения, чтобы избежать проблем с точностью вычислений при почти вырожденной $\mathbf{X}^{\mathsf T}\mathbf{X}$) и возвращает найденный вектор коэффициентов. Понимание этой матричной формы объясняет сразу несколько практических вещей: почему мультиколлинеарность — реальная и частая проблема в датасетах с большим числом сильно коррелирующих между собой признаков, почему регуляризация (гребневая регрессия, Ridge, добавляющая к $\mathbf{X}^{\mathsf T}\mathbf{X}$ небольшую диагональную добавку) помогает справляться с почти вырожденными матрицами, и почему сама линейная регрессия — редкий пример модели машинного обучения, обучение которой можно полностью описать одной строчкой матричной алгебры, без единой итерации градиентного спуска.
Практика: 30 заданий
Базовые (задания 1–10)
Задание 1. По четырём наблюдениям $x: 2,4,6,8$ и $y: 5,9,13,17$ найди МНК-оценки $\hat b_0$ и $\hat b_1$.
Задание 2. Модель $\hat y = 20+3x$ описывает зависимость расходов на рекламу (в тысячах рублей, $x$) и выручки (в тысячах рублей, $y$). Интерпретируй коэффициенты $b_0=20$ и $b_1=3$.
Задание 3. Для семи наблюдений остатки модели равны $2,-1,-3,4,0,-1,-1$. Найди сумму остатков и объясни результат.
Задание 4. Модель $\hat y=10+1{,}5x$ применена к наблюдению $x=8$, для которого реальное значение $y=25$. Найди предсказанное значение и остаток.
Задание 5. Для данных $SST=500$, $SSE=125$ найди коэффициент детерминации $R^2$.
Задание 6. Выборочный коэффициент корреляции между признаком и целевой переменной в простой линейной регрессии равен $r_{xy}=-0{,}6$. Найди $R^2$ и объясни, почему знак корреляции не влияет на значение $R^2$.
Задание 7. Перечисли четыре основные предпосылки классической линейной регрессии и кратко опиши, что означает каждая.
Задание 8. Модель множественной регрессии $\hat y=100+5x_1-2x_2$ применена к объекту с $x_1=20$, $x_2=10$. Найди предсказание $\hat y$.
Задание 9. Объясни, почему при добавлении в модель нового признака обычный коэффициент детерминации $R^2$ не может уменьшиться, даже если новый признак содержательно бесполезен.
Задание 10. Объясни своими словами, в чём разница между теоретической ошибкой $\varepsilon_i$ и остатком $e_i$ в модели линейной регрессии.
Средние (задания 11–20)
Задание 11. По суммарным статистикам $n=8$, $\sum x_i=40$, $\sum y_i=120$, $\sum x_iy_i=680$, $\sum x_i^2=240$ найди МНК-оценки $\hat b_0$ и $\hat b_1$.
Задание 12. Для модели $\hat y=8+1{,}2x$, построенной по пяти наблюдениям с $\bar x=10$, найди $\bar y$, используя свойство, что линия регрессии МНК проходит через точку $(\bar x,\bar y)$.
Задание 13. Выведи формулу $\hat b_0=\bar y-\hat b_1\bar x$ из первого нормального уравнения $\sum y_i - nb_0 - b_1\sum x_i=0$.
Задание 14. Для данных $SST=800$ известно, что модель объясняет $R^2=0{,}65$ дисперсии. Найди $SSE$ и объяснённую сумму квадратов $SSR_{\text{объясн}}$.
Задание 15. На графике остатков модели, предсказывающей время выполнения задачи по числу строк кода, разброс остатков явно расширяется с ростом предсказанного времени выполнения. Определи, какая предпосылка нарушена, и предложи практический способ борьбы с этой проблемой.
Задание 16. Модель множественной регрессии $\hat y=50+4x_1+2{,}5x_2-1{,}8x_3$ применена к объекту с $x_1=10$, $x_2=6$, $x_3=5$. Найди $\hat y$.
Задание 17. Для матрицы признаков $\mathbf{X}=\begin{pmatrix}1&2\\1&3\\1&5\end{pmatrix}$ и вектора $\mathbf{y}=\begin{pmatrix}4\\7\\11\end{pmatrix}$ найди $\mathbf{X}^{\mathsf T}\mathbf{X}$ и $\mathbf{X}^{\mathsf T}\mathbf{y}$.
Задание 18. Продолжая задание 17, реши систему нормальных уравнений $\mathbf{X}^{\mathsf T}\mathbf{X}\hat{\mathbf{b}}=\mathbf{X}^{\mathsf T}\mathbf{y}$ и найди $\hat b_0,\hat b_1$.
Задание 19. Два признака в модели множественной регрессии — «возраст в годах» и «возраст в днях» — присутствуют одновременно. Объясни, к какой проблеме это приведёт при попытке найти МНК-оценки, и предложи решение.
Задание 20. Для простой линейной регрессии по восьми наблюдениям посчитан коэффициент детерминации $R^2=0{,}49$. Найди соответствующий по модулю выборочный коэффициент корреляции $|r_{xy}|$, зная только $R^2$ (без указания знака).
Продвинутые (задания 21–30)
Задание 21. По данным $x: 1,3,5,7,9$ и $y: 3,8,12,17,22$ найди $\hat b_0$, $\hat b_1$ и коэффициент детерминации $R^2$.
Задание 22. Модель предсказывает время доставки (в минутах) по расстоянию (в км): $\hat y=8+3{,}5x$. Для трёх реальных поездок известны расстояние и реальное время: $(2,15)$, $(5,25)$, $(10,42)$. Найди остатки всех трёх наблюдений и определи, для какого из них модель ошиблась сильнее всего.
Задание 23. Докажи алгебраически (через прямое дифференцирование), что вторая частная производная функции потерь $S(b_0,b_1)$ по $b_0$ положительна, что подтверждает наличие именно минимума, а не максимума в найденной стационарной точке.
Задание 24. Для двух конкурирующих моделей регрессии цены дома: модель A с одним признаком (площадь) даёт $SSE_A=1200$, модель Б с двумя признаками (площадь и число комнат) даёт $SSE_Б=1050$ при одинаковом $SST=3000$ и $n=50$ наблюдениях. Посчитай обычный $R^2$ для обеих моделей и обсуди, достаточно ли этого сравнения, чтобы выбрать модель Б.
Задание 25. По графику остатков модели, предсказывающей объём продаж по месяцам, видно, что остатки чередуются регулярным волнообразным образом (положительный, отрицательный, положительный, отрицательный) с периодом примерно в двенадцать наблюдений. Определи природу этого паттерна и предложи, как улучшить модель.
Задание 26. Для простой линейной регрессии выведи формулу $R^2=r_{xy}^2$, используя определения $R^2=SSR_{\text{объясн}}/SST$ и формулу $\hat b_1=\mathrm{cov}(x,y)/\mathrm{var}(x)$ в качестве отправной точки (допускается вывод в общих чертах, без исчерпывающей формальной строгости).
Задание 27. Модель множественной регрессии зарплаты (в тысячах рублей) построена по стажу ($x_1$, годы) и уровню образования, закодированному как порядковый числовой признак ($x_2$: 1 — среднее, 2 — бакалавриат, 3 — магистратура): $\hat y=40+3x_1+12x_2$. Оцени содержательную корректность такого способа кодирования признака образования и предложи более корректную альтернативу.
Задание 28. Для матрицы признаков $\mathbf{X}=\begin{pmatrix}1&1&2\\1&2&4\\1&3&5\\1&4&9\end{pmatrix}$ (константа, $x_1$, $x_2$) определи на глаз, есть ли риск сильной мультиколлинеарности между $x_1$ и $x_2$, и обоснуй ответ, не вычисляя обратную матрицу целиком.
Задание 29. Модель простой линейной регрессии обучена на данных о ценах домов, где встречается один явный выброс — дом с аномально высокой ценой из-за уникального исторического статуса, не объяснимого никакими признаками модели. Объясни, почему метод наименьших квадратов особенно чувствителен именно к таким выбросам, и что произойдёт с коэффициентом $\hat b_1$, если выброс имеет экстремальное значение $x$.
Задание 30. Перед обучением модели предсказания оттока клиентов аналитик рассматривает включение признаков «месячный доход клиента» и «месячный расход клиента», где известно, что средний остаток от дохода после расходов ($x_3=x_1-x_2$) также добавлен в модель как третий признак. Объясни, к какой проблеме это приведёт, и предложи, как правильно сформировать набор признаков.
Частые ошибки
❌ Ошибка: Интерпретировать высокий коэффициент детерминации $R^2$ как автоматическое подтверждение причинно-следственной связи между $x$ и $y$.
✅ Правильно: Рассматривать $R^2$ исключительно как меру статистического соответствия модели данным; причинность требует дополнительного содержательного обоснования, контроля за посторонними факторами или экспериментального дизайна, а не просто высокого значения $R^2$.
💡 Почему: Две переменные могут быть сильно статистически связаны (высокий $R^2$) без прямой причинной связи между ними — например, из-за общей скрытой причины или простого совпадения (классический пример — ложные корреляции между несвязанными временными рядами).
❌ Ошибка: Сравнивать модели с разным числом признаков напрямую по обычному $R^2$, выбирая модель с бо́льшим числом признаков просто потому, что её $R^2$ выше.
✅ Правильно: Использовать скорректированный $R^2$, кросс-валидацию или отдельную тестовую выборку для честного сравнения моделей разной сложности.
💡 Почему: Обычный $R^2$ математически не может уменьшиться при добавлении любого нового признака, даже полностью бесполезного, — рост $R^2$ сам по себе не доказывает, что новый признак содержательно улучшает модель.
❌ Ошибка: Обучать модель множественной регрессии, включив в неё несколько признаков, являющихся линейными комбинациями друг друга (точная или почти точная мультиколлинеарность).
✅ Правильно: Проверять корреляцию между признаками (или вычислять фактор инфляции дисперсии, VIF) перед обучением и исключать избыточные, дублирующие по смыслу признаки.
💡 Почему: При сильной мультиколлинеарности матрица $\mathbf{X}^{\mathsf T}\mathbf{X}$ становится вырожденной или почти вырожденной, что делает коэффициенты модели нестабильными, трудноинтерпретируемыми и крайне чувствительными к малейшим изменениям выборки.
❌ Ошибка: Использовать простую линейную регрессию для данных с явно нелинейной (например, параболической или экспоненциальной) зависимостью, ориентируясь только на достаточно высокое значение $R^2$.
✅ Правильно: Всегда визуально проверять график остатков на систематические, неслучайные закономерности перед тем, как считать модель окончательно пригодной.
💡 Почему: $R^2$ измеряет только общую долю объяснённой дисперсии и нечувствителен к систематической форме отклонений — модель может показывать неплохой $R^2$ и при этом совершать предсказуемые, закономерные ошибки на разных участках диапазона признака.
❌ Ошибка: Считать, что нарушение предпосылки нормальности остатков делает МНК-оценки коэффициентов смещёнными или непригодными для точечных предсказаний.
✅ Правильно: Помнить, что теорема Гаусса — Маркова гарантирует несмещённость и эффективность МНК-оценок без требования нормальности остатков; нормальность нужна отдельно для точности доверительных интервалов и тестов значимости.
💡 Почему: Смешение условий, необходимых для разных свойств оценок, приводит к неправильным выводам о том, когда вообще можно доверять линейной регрессии, а когда — только точечным предсказаниям, но не статистическим выводам о коэффициентах.
❌ Ошибка: Применять модель линейной регрессии для экстраполяции далеко за пределы диапазона значений $x$, наблюдавшихся в обучающей выборке.
✅ Правильно: Использовать модель для предсказаний строго в пределах (или незначительно за пределами) диапазона исходных данных, явно оговаривая риски экстраполяции при выходе за этот диапазон.
💡 Почему: Линейная зависимость, хорошо описывающая данные в наблюдавшемся диапазоне, не обязана сохраняться за его пределами — реальные процессы часто выходят на плато, меняют направление или ведут себя нелинейно там, где данных для проверки просто не было.
Главное запомнить
✅ Простая линейная регрессия описывает зависимость $y_i=b_0+b_1x_i+\varepsilon_i$; коэффициенты оцениваются методом наименьших квадратов, минимизирующим сумму квадратов остатков $\sum(y_i-b_0-b_1x_i)^2$
✅ Формулы МНК выводятся приравниванием к нулю частных производных функции потерь по $b_0$ и $b_1$: $\hat b_1=\dfrac{\sum(x_i-\bar x)(y_i-\bar y)}{\sum(x_i-\bar x)^2}$, $\hat b_0=\bar y-\hat b_1\bar x$
✅ Этот вывод — частный случай общей логики обучения ML-моделей через минимизацию функции потерь; для линейной регрессии решение находится аналитически за один шаг, а не итеративным градиентным спуском
✅ Линия регрессии МНК всегда проходит через точку $(\bar x,\bar y)$, а сумма остатков всегда равна нулю — прямые следствия нормальных уравнений
✅ Коэффициент детерминации $R^2=1-SSE/SST$ показывает долю объяснённой моделью дисперсии; для простой линейной регрессии $R^2=r_{xy}^2$, где $r_{xy}$ — коэффициент корреляции Пирсона
✅ $R^2$ никогда не уменьшается при добавлении новых признаков — для честного сравнения моделей разной сложности используют скорректированный $R^2$
✅ Предпосылки классической линейной регрессии: линейность, независимость остатков, гомоскедастичность (постоянство дисперсии ошибок), нормальность остатков; теорема Гаусса — Маркова требует только первые три (плюс несмещённость) для оптимальности МНК-оценок
✅ Множественная линейная регрессия обобщает простую на несколько признаков: $y_i=b_0+b_1x_{i1}+\dots+b_px_{ip}+\varepsilon_i$, а решение находится матричной формулой $\hat{\mathbf{b}}=(\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}$
✅ Мультиколлинеарность (линейная зависимость между признаками) делает матрицу $\mathbf{X}^{\mathsf T}\mathbf{X}$ вырожденной или почти вырожденной, коэффициенты становятся нестабильными и плохо интерпретируемыми
✅ График остатков — обязательный инструмент диагностики модели: он выявляет нелинейность, гетероскедастичность и автокорреляцию, скрытые за одним числом $R^2$
Связь с другими темами курса
🔙 Откуда пришли: Из урока 248 — критерий хи-квадрат для проверки связи между категориальными признаками; регрессионный анализ решает родственную, но более общую задачу — построение количественной модели зависимости, а не только обнаружение факта связи; используются также идеи проверки статистических гипотез из урока 247 (значимость коэффициентов регрессии проверяется через $t$-критерий по той же общей логике)
🔜 Куда идём:
- Дисперсионный анализ (ANOVA, урок 250) — родственный по духу метод, сравнивающий средние значения числового признака между несколькими группами; ANOVA и линейная регрессия математически тесно связаны и представляют собой частные случаи одной и той же общей линейной модели
- Логистическая регрессия и другие обобщённые линейные модели — прямое развитие идей этого урока на случай категориальной, а не непрерывной целевой переменной
- Регуляризация (Ridge, Lasso) — модификации МНК, специально созданные для борьбы с мультиколлинеарностью и переобучением, добавляющие штраф к функции потерь поверх суммы квадратов остатков
🎯 В машинном обучении: Линейная регрессия — стандартная базовая модель sklearn.linear_model.LinearRegression, почти всегда используемая как первый бенчмарк перед переходом к более сложным моделям; вывод формул МНК через минимизацию суммы квадратов — концептуальная основа функции потерь MSE (среднеквадратичной ошибки), применяемой далеко за пределами линейных моделей, вплоть до последнего слоя многих нейронных сетей в задачах регрессии; матричная форма нормальных уравнений напрямую связана с численными методами (QR-разложение, SVD), используемыми внутри промышленных реализаций регрессии для повышения устойчивости расчётов.
Интересные факты
📌 Спор о приоритете открытия метода наименьших квадратов между Лежандром и Гауссом продолжается в историко-математической литературе до сих пор: Гаусс утверждал, что использовал метод ещё в 1795 году, но опубликовал его лишь в 1809-м, через четыре года после публикации Лежандра в 1805 году, — из-за чего именно Лежандр формально считается первооткрывателем по дате публикации, хотя вероятность независимого одновременного открытия обоими учёными многие историки считают вполне правдоподобной.
📌 Термин «регрессия» возник из наблюдения Фрэнсиса Гальтона за наследованием роста: он заметил, что дети очень высоких родителей в среднем оказываются ниже родителей, а дети очень низких родителей — в среднем выше, то есть значения как бы «регрессируют», стягиваются к среднему по популяции. Это явление — статистический артефакт, возникающий при любой неидеальной (меньше единицы по модулю) корреляции между двумя измерениями одной и той же в принципе величины, и сегодня отдельно изучается под именем «регрессия к среднему» далеко за пределами изначального биологического контекста Гальтона — например, в спортивной статистике (спортсмен, показавший экстремально высокий результат в один сезон, в среднем показывает более скромный результат в следующем).
📌 Теорема Гаусса — Маркова, гарантирующая, что МНК-оценки являются наилучшими линейными несмещёнными оценками (BLUE), была окончательно строго сформулирована и доказана в современном виде значительно позже самого метода — в начале XX века, хотя основы заложил ещё сам Гаусс. Название теоремы отдаёт должное как Гауссу, так и русскому математику Андрею Маркову, чьи работы по теории вероятностей внесли вклад в строгое доказательство этого результата.
📌 Матричная запись нормальных уравнений $\hat{\mathbf{b}}=(\mathbf{X}^{\mathsf T}\mathbf{X})^{-1}\mathbf{X}^{\mathsf T}\mathbf{y}$ выглядит красиво на бумаге, но в реальных промышленных библиотеках (включая scikit-learn) редко вычисляется буквально через явное обращение матрицы — прямое обращение $\mathbf{X}^{\mathsf T}\mathbf{X}$ численно неустойчиво при почти вырожденной матрице (сильной мультиколлинеарности), поэтому на практике используются более надёжные численные методы, такие как QR-разложение или разложение по сингулярным значениям (SVD), дающие тот же самый математический результат, но с существенно меньшей чувствительностью к ошибкам округления при вычислениях с плавающей точкой.
Лайфхаки
💡 Перед обучением множественной регрессии быстро проверь пары признаков на сильную взаимную корреляцию (например, через корреляционную матрицу df.corr() в pandas) — пары с корреляцией выше примерно $0{,}8$–$0{,}9$ по модулю являются кандидатами на мультиколлинеарность, и один из таких признаков обычно разумно исключить ещё до обучения модели.
💡 Не оценивай качество модели по одному только $R^2$ — всегда дополнительно смотри на график остатков (по горизонтали предсказанные значения, по вертикали остатки): случайное, бесструктурное «облако» вокруг нулевой линии — хороший знак, любая видимая закономерность (дуга, воронка, волна) — сигнал, что модель что-то систематически упускает.
💡 Если добавление нового признака заметно повышает $R^2$, но лишь незначительно повышает скорректированный $R^2$, скорее всего этот признак вносит немного полезной информации сверх уже имеющихся признаков — не спеши включать его в финальную модель без дополнительной проверки его статистической значимости.
💡 При интерпретации коэффициентов множественной регрессии всегда явно проговаривай оговорку «при фиксированных значениях остальных признаков» — это принципиально отличает коэффициент множественной регрессии от коэффициента простой регрессии с тем же самым признаком, и значения этих коэффициентов для одного и того же признака в разных моделях могут заметно различаться.
💡 Держи в голове формулу $R^2=r_{xy}^2$ как быстрый способ прикинуть качество будущей простой регрессии ещё до её обучения: если корреляция между признаком и целевой переменной невелика (скажем, $|r_{xy}|<0{,}3$), заранее ожидай, что и линейная регрессионная модель на этом одном признаке даст скромный $R^2$ — не выше $0{,}09$.
💡 Прежде чем доверять доверительным интервалам и p-value коэффициентов линейной регрессии, обязательно проверь предпосылки (график остатков против предсказанных значений на гомоскедастичность, гистограмму или Q-Q-график остатков на нормальность) — точечные предсказания модели могут оставаться разумными даже при нарушении этих условий, а вот статистические выводы о значимости признаков — нет.
Линейная регрессия — модель, с которой стоит начинать любое серьёзное знакомство с машинным обучением, и вовсе не потому, что она проста в применении (хотя это тоже правда), а потому, что на ней особенно наглядно видно, как вообще устроено обучение модели: есть функция потерь, есть минимизация этой функции по параметрам, и есть результат — набор коэффициентов, дающих наилучшее (в смысле выбранного критерия) описание данных. Пройдя весь путь от геометрической интуиции «наилучшей прямой» через полный вывод формул МНК до матричной записи множественной регрессии, ты теперь понимаешь не просто как вызвать LinearRegression().fit(), а что именно происходит внутри этого вызова и почему. Это понимание не устареет: даже самые сложные современные модели машинного обучения в конечном счёте решают ту же самую задачу — минимизацию функции потерь по параметрам, — просто для более сложных, нелинейных функций и с использованием итеративных, а не точных аналитических методов. В следующем уроке эта линия продолжится дисперсионным анализом — ещё одним представителем большого семейства линейных моделей, объединяющим идеи регрессии и сравнения средних значений между группами.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку