Тема  линейной регресии рассмотрена множество раз в различных источниках, но,  как говорится, "нет такой избитой темы, которую нельзя ударить еще раз". В данной статье рассмотрим указанную тему, используя как  математические выкладки, так и код python, пытаясь соблюсти баланс на  грани простоты и должном уровне для понимания математических основ. Линейная регрессия представляется из себя регриссионную модель  зависимости одной (объясняемой, зависимой) переменной от другой или  нескольких других переменных (фактров, регрессоров, независимых  переменных) с линейной функцией зависимости. Рассмотрим модель линейной  регрессии, при которой зависимая переменная зависит лишь от одного  фактора, тогда функция, описывающуя зависимость y от x будет иметь следующий вид:   и задача сводится к нахождению весовых коэффициентов w0 и w1,  таких что такая прямая максимально "хорошо" будет описывать исходные  данные. Для этого зададим функцию ошибки, минимизация которой обеспечит  подбор весов w0 и w1, используя метод наименьших квадратов:  или подставив уравнение модели Минимизируем функцию ошибки MSE найдя частные производные по w0 и w1 И приравняв их к нулю получим систему уравнений, решение которой обеспечит минимизацию функции потерь MSE. Раскроем сумму и с учетом того, что -2/n не может равняться нулю, приравняем к нулю вторые множители Выразим w0 из первого уравнения Подставив во второе уравнение решим относительно w1 И выразив w1 последнего уравнения получим Задача решена, однако представленный способ слабо распространим на большое количество фичей, уже при появлении второго признака вывод становится достаточно громоздким, не говоря уже о большем количестве признаков.Справиться с этой задачей нам поможет матричный способ представления функции потерь и ее минимизация путем дифференцирования и нахождения экстремума в матричном виде. Предположим, что дана следующая таблица с данными f1 f2 f3 y x11 x12 x13 y1 ... ... ... ... x1n x2n x3n yn Для вычисления интерсепта (коэффициента w0) необходимо к таблице добавить столбец слева с фактором f0 все значения которого равны 1 (единичный вектор-столбец). И тогда столбцы f0-f3 (по количеству столбцов не ограничены, можно считать fn) можно выделить в матрицу X, целевую переменную в матрицу-столбец y, а искомые коэффициенты можно представить в виде вектора w. Тогда функцию потерь можно представить в следующем виде Представим в виде скалярного произведения < > и вычислим производную используя дифференциал используя правило  приведем формулу к следующему виду Поскольку дифференциал разницы равен разнице дифференциалов, дифференциал константы (y) равен нулю и константу (в данном случае матрицу X) можно вынести за знак дифференциала, получим Используя свойство скалярного произведения перенесем матрицу X справа налево незабыв транспонировать ее Собственно, то что слева и есть дифференциал, найдем экстремум приравняв его к нулю и решив по параметрам w раскроем скобки и перенесем значения без w вправо Домножим слева обе стороны равенства на обратную матрицу произведения транспонированной матрицы X на X для выражения вектора w, тогда получим Аналитическое решение получено, переходим к реализации на python. Надеюсь эта статья помогла заглянуть под капот одного из базовых методов машинного обучения - линейной регрессии и станет первой ступенью в этот увлекательный мир: математика машинного обучения.  Data Science