Введение в многомерные сплайны адаптивной регрессии


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

Y = β 0 + β 1 X + ε

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

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

Y = β 0 + β 1 X + β 2 X 2 + … + β h X h + ε

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

Однако у полиномиальной регрессии есть пара недостатков:

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

2. Полиномиальная регрессия накладывает глобальную функцию на весь набор данных, что не всегда является точным.

Альтернативой полиномиальной регрессии являются сплайны многомерной адаптивной регрессии .

Основная мысль

Сплайны многомерной адаптивной регрессии работают следующим образом:

1. Разделите набор данных на k частей.

Сначала мы делим набор данных на k разных частей. Точки, в которых мы делим набор данных, называются узлами .

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

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

2. Сопоставьте функцию регрессии с каждой частью, чтобы сформировать шарнирную функцию.

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

Например, функция шарнира для модели с одним узлом может быть следующей:

  • y = β 0 + β 1 (4,3 – x), если x < 4,3
  • y = β 0 + β 1 (x – 4,3), если x > 4,3

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

Шарнирная функция с двумя узлами может быть следующей:

  • y = β 0 + β 1 (4,3 – x), если x < 4,3
  • y = β 0 + β 1 (x – 4,3), если x > 4,3 и x < 6,7
  • y = β 0 + β 1 (6,7 – x), если x > 6,7

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

3. Выберите k на основе k-кратной перекрестной проверки.

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

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

За и против

Сплайны многомерной адаптивной регрессии имеют следующие плюсы и минусы:

Плюсы :

Минусы:

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

Как подогнать модели MARS в R & Python

В следующих руководствах представлены пошаговые примеры того, как подобрать многомерные сплайны адаптивной регрессии (MARS) как в R, так и в Python:

Сплайны многомерной адаптивной регрессии в R
Сплайны многомерной адаптивной регрессии в Python

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.