Введение в многомерные сплайны адаптивной регрессии
Когда связь между набором переменных-предикторов и переменной ответа является линейной, мы часто можем использовать линейную регрессию , которая предполагает, что связь между данной переменной-предиктором и переменной ответа принимает форму:
Y = β 0 + β 1 X + ε
Но на практике связь между переменными на самом деле может быть нелинейной, и попытка использовать линейную регрессию может привести к плохо подходящей модели.
Одним из способов учета нелинейной связи между предиктором и переменной отклика является использование полиномиальной регрессии , которая принимает форму:
Y = β 0 + β 1 X + β 2 X 2 + … + β 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