С двух точек зрения, чтобы лучше понять линейные модели

В этой статье мы обсудим эту точку зрения:

Полиномиальная регрессия — это линейная регрессия.

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

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

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

1. Определения линейной регрессии и полиномиальной регрессии

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

1.1 Определение линейной регрессии

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

Уравнение линейной регрессии может быть выражено как y = w X + b. Поскольку X — это матрица, представляющая несколько переменных, мы можем разработать функцию следующим образом:

у = w1x1 + w2x2 + … + wpxp + b

где:

  • y - зависимая переменная или выход
  • x1, x2, …, xp — независимые переменные или входные
  • b - перехват
  • w1, w2, …, wp — коэффициенты при зависимых переменных

1.2 Определение полиномиальной регрессии

Полиномиальная регрессия моделирует взаимосвязь между независимой переменной x и зависимой переменной y как полином n-й степени. В результате получается кривая, которая лучше всего соответствует точкам данных, а не прямая линия.

Уравнение полиномиальной регрессии можно записать так:

y = b0 + b1x + b2x² + … + bn*x^n

где:

  • снова y - зависимая переменная,
  • х - независимая переменная,
  • b0, b1, b2, …, bn — коэффициенты, а
  • n — степень многочлена.

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

1.3 Один важный аспект: количество функций

Теперь вы заметили разницу в предыдущих определениях? Я искал эти определения в Интернете с помощью различных источников, таких как Википедия и университетские курсы, и эта разница всегда присутствует.

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

На мой взгляд, главная причина в том, что полиномиальная регрессия обычно рассматривается с точки зрения статистиков. Вот почему алгоритм подгонки для полиномиальной регрессии, polyfit, из пакета numpy допускает только одну функцию. А что насчёт scikit, мы увидим позже.

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

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

Если есть p признаков, обобщенное уравнение для полиномиальной регрессии степени n принимает вид (я напишу уравнение в Latex, чтобы вы могли лучше его прочитать):

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

2. Демистификация и визуализация линейности полиномиальной регрессии

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

Поэтому в этом разделе мы будем ссылаться на переменную функции как x.

2.1 Что означает линейность

Является ли полиномиальная регрессия линейной моделью или нет? Ответ кроется в вопросе, к каким признакам, на наш взгляд, относится эта линейность.

  • Полиномиальная регрессия является нелинейной относительно переменной x.
  • Но полиномиальная регрессия является линейной, если мы рассматриваем переменные x, x^2, x^3 и т. д. как переменные признаков. Чтобы упростить абстракцию, мы можем использовать понятия x, x_2, x_3 и т. д. для этих функций. И тогда мы можем подобрать линейную регрессию к этим функциям. Итак, в конце концов, это многомерная линейная регрессия!

Чтобы прояснить это соображение, мы можем рассмотреть полиномиальную регрессию с двумя отдельными шагами:

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

Я нахожу этот способ разбиения сложных моделей на маленькие части очень полезным для их понимания. Вот почему в scikit Learn у нас нет оценщика под названием PolynomialRegression, но он выполняется в два этапа.

  • PolynomialFeatures в модуле предварительной обработки
  • LinearRegression в модуле linear_model… о, подождите, мы должны использовать только эту оценку? Вы узнаете больше в следующих разделах.

Итак, вкратце, есть две точки зрения:

  • Полиномиальная регрессия — это ОДНА модель, и она принимает x в качестве входных данных. Тогда это нелинейная модель для x
  • Полиномиальная регрессия НЕ является отдельной моделью, но она строится путем преобразования x в полиномиальные функции, а затем применяется линейная регрессия.

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

2.2 Визуализация полиномиальной регрессии: от кривых к плоскостям

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

Чтобы визуализировать полиномиальную регрессию, мы добавим только квадратичный член, чтобы получить линейную регрессию с двумя непрерывными переменными (x, x²), поэтому мы увидим трехмерный график. Мы не сможем визуализировать больше переменных, но вы можете представить.

Давайте рассмотрим этот простой пример набора точек данных (x, y), который соответствует уравнению y = 2 + x — 0,5 * x². Обычно мы создаем следующий график для представления x и y:

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

Теперь давайте представим, что мы сначала наносим на график некоторые значения x и x²:

Затем мы создаем трехмерный график, добавляя значения y для каждого (x, x²). Модель линейной регрессии, использующая x и x² в качестве входных данных, представляет собой плоскость, которую также можно представить на трехмерном графике, как показано ниже.

И мы можем сделать гифку из нескольких изображений, изменив угол обзора. Если вы хотите получить код для создания этой гифки, среди прочих полезных кодов, пожалуйста, поддержите меня на Ko-fi по следующей ссылке: https://ko-fi.com/s/4cc6555852.

3. Перспектива машинного обучения для полиномиальной регрессии

3.1 Практическое применение полиномиальной регрессии

Коллеги, специалисты по данным, будьте честны, вы действительно строите полиномиальную регрессию для реальных приложений? Когда вы действительно сталкиваетесь с полиномиальной регрессией? Попытайтесь вспомнить… да, правильно, когда учитель пытается объяснить переобучение для задач регрессии. Вот пример ниже.

С точки зрения статистики, с numpy мы уже сказали, что разрешена только одна функция. Поэтому нереально использовать этот полифит для создания реальных моделей.

3.2 Перспектива машинного обучения с масштабированием и регуляризацией

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

Во-первых, для общего создания полиномиальной регрессии мы уже упоминали, что это делается в два этапа: PolynomialFeatures с предварительной обработкой и LinearRegression с соответствующей частью модели.

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

Я написал статью, чтобы рассказать об этом: Полиномиальная регрессия с обучением Scikit: What You Should Know.

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

  • Полиномиальные функции: мы можем настраивать функции и даже вручную добавлять некоторые взаимодействия между определенными переменными. Затем мы можем масштабировать функции или использовать другие методы, такие как QuantileTransformer или KBinsDiscretizer.
  • Модели: затем для части модели мы также можем выбрать такую ​​модель, как Ridge, Lasso или даже SVR, вместо линейной регрессии.

Вот пример, иллюстрирующий влияние гиперпараметра альфа на модель с гребневой регрессией.

Теперь вы можете быть счастливы, что только что научились создавать новые и более эффективные модели. Но они все еще не практичны в использовании. Может быть, кто-то из вас увидит, что это то, что мы уже делаем, но с другим подходом… да, ядра!

3.3 Поли ядра и многое другое

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

Одна из причин заключается в том, что при создании полиномиальных функций количество функций может быть огромным. Подгонка линейной регрессии может занять много времени. Вот почему SVR или SVM вступают в игру, поскольку функция потери шарнира позволяет «отбрасывать» многие точки данных, сохраняя только указанные «опорные векторы».

Да, идея функции ядра часто ассоциируется с SVM или SVR, но мы не должны забывать, что это отдельная теория, и именно поэтому у нас есть еще KernelRidge в scikitlearn. И теоретически у нас также может быть KernelLasso или KernelElasticNet. KernelLogisticRegression — еще один пример задач классификации.

Заключение

В заключение мы изучили модель полиномиальной регрессии и ее связь с линейной регрессией. Хотя со статистической точки зрения это обычно считается ОДНОЙ моделью для одного признака, его можно рассматривать как форму линейной регрессии, которой предшествует часть разработки признаков, которая состоит, а именно, в создании полиномиальных признаков, но они должны быть масштабированы. Кроме того, мы также можем применять другие модели, такие как гребень, лассо или SVM, к этим полиномиальным функциям, что улучшит их производительность.

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