Как зафиксировать нелинейные отношения с помощью многочленов и сплайнов.

Эта статья основана на главе из замечательной книги Хасти Т., Тибширани Р. и Фридмана Дж. Х. (2009). Элементы статистического обучения: интеллектуальный анализ данных, вывод и прогнозирование. 2-е изд. Нью-Йорк: Спрингер.

Базовое расширение

Популярные линейные модели для классификации и регрессии выражают ожидаемую цель как линейную функцию от характеристик. Это приближение удобно, а иногда и необходимо. Удобно, поскольку линейные модели легко интерпретировать и необходимы, поскольку с ограниченными данными линейные модели могут быть всем, что мы можем приспособить к ним без переобучения. Однако истинная основная функция обычно не будет линейной. Таким образом, учет этой нелинейности в модели может дать больше возможностей для предсказания и объяснения. Класс подходов к моделированию решает эту проблему, дополняя входные функции 𝑋 некоторыми преобразованиями, а затем используя преобразованные элементы в линейных моделях. Такие модели имеют вид

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

Некоторые широко используемые базовые функции:

  • ℎ𝑚 (𝑋) = 𝑋𝑚, что восстанавливает исходную линейную модель;
  • ℎ𝑚 (𝑋) = 𝑋²j или ℎ𝑚 (𝑋) = 𝑋𝑗𝑋𝑘, которые позволяют дополнять входные данные полиномиальными членами для получения разложений Тейлора более высокого порядка;
  • ℎ𝑚 (𝑋) = 𝑙𝑜𝑔 (𝑋𝑗), 𝑠𝑞𝑟𝑡 (𝑋𝑗) и другие, которые допускают другие нелинейные преобразования;
  • ℎ𝑚 (𝑋) = 𝐼 (𝐿𝑚 ‹𝑋𝑘‹ 𝑈𝑚), что является индикатором для региона 𝑋𝑘. Разбивая диапазон на набор неперекрывающихся областей, мы получаем модель с кусочно-линейным вкладом.

Кусочные полиномы

кусочно-полиномиальная функция получается путем деления области определения 𝑋 на смежные интервалы и представления функции отдельным полиномом в каждом интервале. Приведенный ниже довольно длинный фрагмент кода Python соответствует некоторым простым кусочным полиномам для моделирования данных и хорошо их отображает. Обратите внимание, что большая часть кода предназначена для построения графиков.

На верхней левой панели показана кусочно-постоянная функция с тремя базисными функциями:

с узлами 𝜀1 и 𝜀2 равными 1,5 и 4,5 соответственно. Кусочно-постоянная аппроксимация сводится к среднему значению в каждой области.

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

Обратите внимание, что в результате в каждой области 𝑌 моделируется как собственное среднее значение в этой области плюс эффект 𝑋, умноженный на его коэффициент β. Чтобы убедиться в этом, просто подставьте шесть базисных функций ℎ в формулу разложения базиса в начале этой статьи!

Одна из проблем кусочно-линейной модели состоит в том, что она не имеет непрерывности в узлах. Это нежелательно, поскольку мы хотели бы, чтобы модель выдавала уникальный результат Y для каждого входа X. Это не тот случай, когда 𝑓 (X) не является непрерывным, поскольку в узле нет уникального выхода! Поэтому в большинстве случаев предпочтительнее иметь непрерывную модель, такую ​​как та, что показана на нижней левой панели. Это может быть достигнуто путем обеспечения непрерывности в узлах путем включения соответствующих ограничений в базовые функции:

где 𝑡 + обозначает положительную часть. Базовая функция ℎ3 показана в нижней правой панели в качестве примера.

Сплайны регрессии

Кусочные полиномы, даже непрерывные в узлах, не всегда гладкие: они быстро меняют наклон в узлах. Чтобы предотвратить это и повысить их гладкость, достаточно увеличить порядок локального многочлена и потребовать, чтобы первые две производные по обе стороны от узла были одинаковыми. Функция, которая является непрерывной и имеет непрерывную первую и вторую производные, называется кубическим сплайном и может быть представлена ​​следующими базисными функциями:

Приведенный ниже фрагмент кода соответствует кубическому сплайну ранее смоделированным данным.

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

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

Естественный кубический сплайн с 𝐾 узлами представлен 𝐾 базисными функциями следующим образом:

куда

Давайте теперь воспользуемся кубическими и естественными сплайнами для моделирования зависимости между заработной платой и возрастом, которая, как разумно ожидать, будет нелинейной - идеальный вариант использования сплайнов. В этом практическом примере мы будем использовать пакет statsmodels для подгонки сплайнов и patsy для определения формул. Данные адаптированы из «Введение в статистическое обучение» T. Hastie et al.

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

Сглаживание сплайнов

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

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

Первый член в приведенной выше формуле RSS измеряет близость к данным, а второй член штрафует кривизну функции. Компромисс между ними регулируется параметром регуляризации λ:

  • Когда λ = 0, 𝑓 (𝑋) может быть любой произвольно сложной функцией, которая интерполирует данные, что почти наверняка приведет к переобучению;
  • Когда λ = ∞, второй член доминирует и 𝑓 (𝑋) представляет собой простую линейную аппроксимацию, так как никакая кривизна не допускается.

Установка параметра регуляризации где-то посередине между этими двумя крайностями, мы надеемся, приведет к созданию модели, которая хорошо соответствует данным, но не переоснащается.

Давайте подгоним сглаживающий сплайн к данным заработной платы и возраста. Для этого мы будем использовать пакет csaps, который определяет штраф за регуляризацию несколько иначе: он принимает значения от 0 до 1, где 0 - прямая линия, а 1 - интерполяция естественным кубическим сплайном. Пакет также требует, чтобы мы подготовили данные перед подгонкой модели. Он может обрабатывать только одно значение 𝑌 для каждого 𝑋. Следовательно, мы будем группировать по возрасту и совокупной заработной плате с использованием медианы.

Выбор параметра

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

Резюме и заключение

  1. Полиномы и сплайны позволяют моделировать нелинейные отношения, обеспечивая большую предсказательную и объяснительную способность, чем линейные модели. Они достигают этого, добавляя к входным объектам некоторые преобразования, а затем используя преобразованные объекты в линейных моделях.
  2. Кусочные полиномы получаются путем деления области входных функций на непрерывные интервалы и подгонки отдельного полинома в каждый интервал. Их можно заставить быть непрерывными в узлах, но они не всегда гладкие.
  3. Кубические сплайны - это ответ на вопрос гладкости кусочных полиномов. Они обеспечивают гладкость узлов, требуя, чтобы первые две производные с обеих сторон узла были одинаковыми. Однако у них есть свой недостаток: поведение кубических сплайнов имеет тенденцию быть неустойчивым за пределами наблюдаемых значений входных данных.
  4. Естественные сплайны добавляют дополнительные ограничения, а именно то, что функция является линейной за пределами граничных узлов, что делает ее более надежной в этих областях.
  5. Сглаживающие сплайны получаются путем уравновешивания компромисса между близостью модели к данным и сложностью подобранной кривой: параметр регуляризации штрафует слишком сложные функции, которые могут привести к переобучению.
  6. Параметры регрессионного (кубического и естественного) сплайна включают количество и расположение узлов. Для сглаживания сплайнов необходимо выбрать параметр регуляризации. Выбор параметра может быть основан на знании предметной области, перекрестной проверке или свойствах остатков.

Во всех примерах в этой статье использовались одномерные сплайны: входная переменная была только одна. На практике обычно требуется включить в модель несколько предикторов. Не беспокойтесь: все рассмотренные методы естественным образом распространяются на многомерный случай. Например, посмотрите на класс MultivariateCubicSmoothingSpline в пакете csaps.

Последнее замечание читателям, знакомым с языком R: R может предложить больше, чем Python, когда дело касается сплайн-моделирования. Обратите внимание на функцию bs () из пакета splines (который, кстати, является тем, что statsmodels Python имитирует за капотами) и пакет mgcv .

Спасибо за прочтение! Надеюсь, вы узнали что-то полезное, что принесет пользу вашим проектам 🚀

Если вам понравился этот пост, попробуйте одну из других моих статей. Не можете выбрать? Выберите один из них:







Источники

  1. Хасти Т., Тибширани Р. и Фридман Дж. Х. (2009). Элементы статистического обучения: интеллектуальный анализ данных, вывод и прогнозирование. 2-е изд. Нью-Йорк: Спрингер.
  2. Https://pypi.org/project/csaps/