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