Привет всем 👋 когда мы начинаем этап построения модели в жизненном цикле науки о данных, первая модель, которую все пробуют, — это простая линейная регрессия или линейная регрессия. В этом блоге мы узнаем о геометрическом и математическом понимании алгоритма, а также о реализации кода Python.

Введение

Линейная регрессия — это самая простая и понятная регрессионная модель с одной независимой переменной и одной выходной переменной.
Предположим, что у нас есть данные из ячейки размещения в колледже с двумя входными столбцами, cgpa и CTC (в лаках в год). ), мы должны создать модель таким образом, чтобы, если мы даем cgpa студента, модель предсказывала CTC.

Геометрическая интуиция

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

Идея здесь состоит в том, чтобы найти линию, которая лучше всего соответствует этим точкам таким образом, чтобы минимизировать расстояние между точками на линии и фактическими точками данных. Эта линия известна как линия наилучшего соответствия или линия регрессии, и она имеет следующее уравнение:

Y = mX + b

где :

  • Y — зависимая переменная (в нашем случае это CTC)
  • X — независимая переменная (в нашем случае это CGPA)
  • m — это наклон линии, представляющий скорость изменения Y по отношению к X.
  • b — точка пересечения с осью y, которая является значением Y, когда X равно нулю.

Цель линейной регрессии состоит в том, чтобы определить значения m и b, которые минимизируют разницу между фактическими и прогнозируемыми значениями Y. Например, на рисунке ниже, если мы сравним линии l1 и l2, станет очевидным, что линия l1 лучше подходит по сравнению с линией l2.

Мы поймем фактические условия ошибки и формулировку m и b в следующем разделе.

Математическая формулировка

Есть два решения для получения значений m и b для линии регрессии:

  1. Решение закрытой формы
  2. Решение незамкнутой формы

Класс библиотеки scikit-learn LinearRegression использовал решение Closed Form, что на самом деле означает получение значений с точки зрения формулы. Этот метод также называется OLS или обычным методом наименьших квадратов.

В решениях незамкнутой формы в основном обсуждаются аппроксимационные и вычислительные подходы для получения значений m и b, которые мы узнаем, когда будем изучать градиентный спуск, реализованный в классе SGDRegressor в библиотеке scikit-learn.

Опять же, почему у нас есть два метода решения этого уравнения? Ответ заключается в том, что в пространстве с меньшим числом измерений значения m и b легко получить с помощью решения в закрытой форме. Когда у нас есть многомерное пространство, мы используем решение незамкнутой формы, потому что трудно производить вычисления, используя решение закрытой формы.

Настройка математической формулы показана ниже:

Давайте поймем сложность здесь, мы построили график CGPA против CTC. Далее мы проводим линию наилучшего соответствия с минимальными ошибками для всех точек. Ошибка может быть представлена ​​как расстояние между фактическим значением/точкой (X) и прогнозируемым значением.

Предположим, что расстояние до первой, второй и n-й точек равно d1, d2,…,dn от прямой. Чтобы уменьшить влияние отрицательного расстояния, мы возьмем квадрат расстояния, чтобы положительное и отрицательное расстояния не компенсировали друг друга, и, наконец, мы получим наше окончательное уравнение, подставив значение шляпы yi, которое является значением точки xi на линии. Поскольку это функция ошибок, нам нужно минимизировать ее и получить значения m и b.

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

Поскольку наша функция ошибок зависит как от m, так и от b, мы проведем частичное дифференцирование, и это даст нам уравнение для m и b. Вывод показан ниже:

Бамм!! Это было сложно, но мы справились. Sklearn использует те же уравнения для определения значений m и b. Для сравнения мы сначала создадим класс LinearRegression sklearn, затем напишем наш собственный класс LinearRegression на основе приведенных выше уравнений, а затем сравним производительность, чтобы проверить то же самое.

Реализация кода

Как обсуждалось выше, мы будем использовать те же данные о размещении студентов для нашей реализации. Следующий код демонстрирует подход с использованием класса LinearRegression scikit-learn:

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

Как мы видим, мы получаем одно и то же значение для m и b. Весь используемый код и набор данных доступны здесь.

Поздравляем !!! на понимании простой линейной регрессии, геометрических и математических принципах, лежащих в ее основе, и реализации кода с использованием Sklearn и вашего собственного пользовательского класса.

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

Вы можете связаться со мной в LinkedIn, Facebook и Instagram.

До следующего раза, Adios Amigo!!!!

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