Я попытался объяснить линейную регрессию как можно проще на примере.

Регрессия определяется как статистический метод, который пытается определить взаимосвязь между двумя или более коррелированными переменными. Он используется для прогнозирования значения переменной (также называемой зависимой переменной) с учетом значений другой переменной / переменных (также называемых переменными-предикторами).

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

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

Существует 2 типа линейной регрессии в зависимости от количества переменных-предикторов. :

  1. Простая линейная регрессия. Для прогнозирования значений зависимой переменной используется только одна предикторная переменная.

Уравнение линии: y = c + mx ( только одна предикторная переменная x с коэффициентом m)

2. Множественная линейная регрессия. Для прогнозирования значений зависимой переменной используется несколько переменных-предикторов.

Уравнение прямой: y = c + m1x1 + m2x2 + m3x3… + mixi ( много переменных-предикторов x1, x2… xi). (m1, m2… mi - соответствующие коэффициенты )

Best Fit Line:

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

Наши данные содержат набор значений для зависимой переменной (обозначается y) и независимой переменной / s (обозначается X), и наиболее подходящей линией является та, для которой Остаточная сумма квадратов ошибок минимальна. Что такое условия ошибки? Давайте разберемся.

Таким образом, в нашей строке будет значение «y» (мы называем его y_pred) и значение «y», которое уже присутствует в наших данных (мы называем его y_true). Разница между y_true и y_pred дает нам член ошибки (e). С каждым значением X и y будет связана ошибка.

Этот термин ошибки может быть положительным или отрицательным. Итак, мы возьмем квадрат или все члены ошибок и просуммируем их. Это называется Остаточная сумма квадратов ошибок.

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

Допущения линейной регрессии:

Чтобы использовать линейную регрессию для прогнозирования, с ней связаны определенные допущения:

  1. Между X и y существует линейная связь.
  2. Условия ошибок соответствуют нормальному распределению.
  3. Члены ошибки не зависят друг от друга.
  4. Члены ошибки имеют постоянную дисперсию, то есть демонстрируют гомоскедастичность.

Обратите внимание, что здесь нет никаких предположений относительно распределения X и y.

Эти предположения справедливы как для простой линейной регрессии, так и для множественной линейной регрессии. Однако, когда дело доходит до множественной линейной регрессии, есть еще несколько соображений, которые мы обсудим, когда рассмотрим пример.

Давайте лучше поймем всю концепцию линейной регрессии на примере.

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

Сначала импортируем необходимые библиотеки:

Затем мы загружаем фрейм данных как df. Посмотрим, как выглядят наши данные.

Здесь мы видим, что различные столбцы, такие как возраст, пол, bmi, дети, курильщик и регион, образуют наши переменные-предикторы (X), а сборы - это наша зависимая переменная (y).

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

Данные кажутся хорошими, и все значения кажутся подлинными.

Я выполнил исследовательский анализ данных (EDA) по этим данным. В этом процессе я добавил еще два категориальных столбца, а именно Age_group и BMI_group (группировка основана на стандартах ВОЗ - https://www.euro.who.int/en/health-topics/disease-prevention/nutrition/a- здоровый образ жизни / индекс массы тела bmi .)

Вот важные выводы, которые я сделал:

  1. Курильщики, как правило, имеют высокий ИММ.
  2. Мужчины старше 60 лет, как правило, имеют высокий ИММ.
  3. У полных и полных людей ИММ выше.
  4. В юго-западном регионе больше людей с высокими значениями BMI.
  5. Как правило, ожирение и, следовательно, ИМТ увеличиваются с возрастом.

Перейдем к регрессионному анализу.

Давайте посмотрим, как коррелируются переменные наших данных df, используя тепловую карту.

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

Мы кодируем следующие категориальные переменные: «пол», «BMI_group», «Age_group», «курильщик», «регион».

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

Мы разделяем фрейм данных df на df_train (который содержит 70% данных) и df_test (который содержит 30% данных) с помощью метода train_test_split из библиотеки sklearn.

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

Стандартизация данных, при которой мы стандартизируем данные вокруг среднего значения = 0 и стандартного отклонения = 1.

MinMaxScaling, при котором все данные преобразуются таким образом, что все значения попадают в интервал min. 0 и макс. 1

Здесь мы используем MinMaxScaling, используя MinMaxScaler из библиотеки sklearn.

Обратите внимание, что мы выполняем масштабирование только для обучающих данных.

Построение модели:

Теперь давайте посмотрим, как наши переменные-предикторы коррелируют с зависимой переменной, используя тепловую карту.

Мы видим, что переменная «курильщик» имеет наибольшую корреляцию с переменной «плата», 0,78. Затем идут «возраст», «bmi» и т. Д.

Простая линейная регрессия. Как мы уже знаем, простая линейная регрессия имеет одну переменную-предиктор, которая используется для прогнозирования значения зависимой переменной. Итак, мы строим модель простой линейной регрессии, используя переменную «курильщик».

Здесь мы используем библиотеку statsmodels.api для построения модели.

Теперь давайте разберемся с некоторыми основами статистики.

R - в квадрате (R2) - это статистическая мера, которая представляет собой долю дисперсии для зависимой переменной, которая объясняется независимой переменной / s в регрессионной модели. Он увеличивается по мере увеличения количества переменных.

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

p-значение указывает на значимость независимой переменной. Чем меньше значение, тем выше значимость этой переменной.

F-статистика и Вероятность (F-статистика) указывают на полное соответствие модели. Значение F-статистики должно быть высоким, а значение Prob (F-statistic_) в идеале должно быть близко к нулю. Это означает, что модель хорошо подходит.

Если мы можем увидеть приведенную выше статистику, значение R-квадрата составляет 0,61, что означает, что 61% дисперсии для зависимой переменной объясняется независимой переменной. p-значения для константы и курильщика равны 0. F-статистика, оба значения идеальны. Итак, это хорошая модель с модельным уравнением:

расходы = 0,1180 + 0,3822 * (курильщик)

Теперь давайте посмотрим, подтверждает ли эта модель предположения линейной регрессии.

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

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

Итак, теперь давайте добавим переменную «возраст», которая является следующей в строке, коррелирующей с нашей целевой переменной «начисления», после переменной «курильщик» с корреляцией 0,31.

Мы видим, что R-квадрат увеличился, как и скорректированный R-квадрат. «Возраст» имеет значение p 0, а F-статистика модели показывает хорошие значения.

Это означает, что «возраст» является важной переменной для нашей модели.

Теперь давайте добавим еще одну переменную «bmi».

Мы видим, что R-квадрат увеличился, как и скорректированный R-квадрат. «Bmi» снова имеет значение p 0, и F-статистика модели показывает хорошие значения.

Это означает, что «bmi» - важная переменная для нашей модели.

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

Сложность модели: когда вы увеличиваете количество переменных в своей модели, ваш R-квадрат останется таким же или увеличится. Но что, если добавленная переменная несущественна. Кроме того, добавление ненужных переменных делает модель громоздкой и сложной. Также может случиться так, что ваша модель настолько хорошо запоминает данные поезда, что является совершенно точной с данными поезда, но дает неточные результаты с данными теста. Это называется переобучением. Чтобы решить эту проблему, мы используем скорректированную меру R-квадрат, которая штрафует за добавление незначительных переменных. Это означает, что скорректированное значение R-квадрата уменьшается, когда мы добавляем в модель любую незначительную переменную.

Мультиколлинеарность. Если одна или несколько переменных коррелируют друг с другом, это явление называется мультиколлинеарностью. Это влияет на вывод и интерпретацию части модели (статистика). Коэффициенты могут иметь разные значения и знаки. Однако мультиколлинеарность не влияет на общие прогнозы и соответствие модели. Таким образом, хотя наша модель может хорошо работать с определенной степенью мультиколлинеарности, нам нужно обращаться к мультиколлинеарности везде, где это необходимо. VIF (коэффициент инфляции дисперсии) - хороший способ решить проблему мультиколлинеарности.

VIF = 1 / (1 - R-квадрат)

VIF ›10 является высоким и неприемлемым.

VIF ›5 требует проверки.

ВИФ ‹5 приемлемо.

Как правило, мы можем отбросить переменные, которые сильно коррелируют с другими.

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

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

Для этого мы используем variance_inflation_factor из библиотеки sklearn.

Кажется, что все ценности соответствуют критериям приемлемости.

Теперь давайте добавим еще одну переменную children.

Мы видим, что значение R-квадрата увеличилось до 0,736, а скорректированное значение R-квадрата увеличилось до 0,735. P-значения переменных-предикторов показывают, что они пока значимы. Значения F-статистики также приемлемы. Пока что у нашей модели все хорошо. Давайте проверим VIF.

Пока что значения VIF также находятся в приемлемом диапазоне.

Что будет, если мы добавим еще одну переменную? Добавим переменную "пол".

Теперь мы видим, что p-значение переменной «пол» высокое. Также немного уменьшилось скорректированное значение R-квадрата. Таким образом, переменная «пол» не имеет значения.

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

Итак, наша окончательная модель состоит из следующих переменных-предикторов и их коэффициентов:

Итак, наша модель готова. Теперь давайте проверим прогнозы на тестовых данных.

Мы находим y_pred, а затем вычисляем условия ошибки (y_test-y_pred) и наносим на график условия ошибки.

Итак, мы, наконец, приходим к выводу, что предположения линейной регрессии подтверждены.

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

Я попытался объяснить концепции как можно проще, чтобы каждый, кто читает эту статью, понимал, как работает линейная регрессия.

Спасибо.

Вы можете связаться со мной в LinkedIn: https://www.linkedin.com/in/pathakpuja/

Посетите мой профиль GitHub, чтобы найти коды Python: https://github.com/pujappathak

Не стесняйтесь комментировать и оставлять отзывы, если вам нравятся мои статьи.