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


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

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