РАСШИРЕНИЕ ЛИНЕЙНЫХ МОДЕЛЕЙ

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

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

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

Концепция сглаживания сплайнов

Вместо того, чтобы запрашивать последовательность предварительно выбранных узлов, сглаживающие сплайны принимают каждое уникальное значение X как узел. Ждать! Означает ли это, что он добавляет не более N (N = количество наблюдений) дополнительной степени свободы к исходной модели? Это переоснащение?

Без паники. Чтобы решить проблему переобучения, сглаживающие сплайны вносят штраф в свою функцию потерь. Штрафной срок способствует более плавной линии и штрафует за отклонение.

В частности, функция потерь сглаживающих сплайнов равна сумме остаточной суммы квадратов (RSS) и члена сглаживания,

где g - модельная функция, λ - неотрицательный параметр настройки, а g ′ ′ ² - квадрат вторых производных.

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

Как мы знаем, первая производная в точке A измеряет наклон функции в точке A. А вторая производная в A измеряет изменение наклона в A. Затем мы снова смотрим на уравнение функции потерь, мы можем легко понять, что более волнистая кривая приведет к большему члену сглаживания. Поскольку мы стремимся минимизировать всю функцию потерь, мы предпочитаем меньший член сглаживания, который соответствует более гладкой линии. Довольно просто, не правда ли?

Эта идея сглаживания сплайнов вам что-нибудь напоминает? Да, я уверен, что вы помните регрессию Ridge или LASSO, в которой в функция потерь для сжатия коэффициентов линейной модели. Подобно регрессии Ridge или LASSO, функция потерь сглаживающих сплайнов имеет как «Bias "и" Отклонение ". RSS измеряет смещение модели, а член сглаживания измеряет дисперсию модели.

Видеть? Компромисс смещения и дисперсии применяется везде в статистических моделях. Все, что мы хотим, - это найти баланс между ними, который лучше всего «описывает» реальные данные.

Настройка параметров в сглаживающих сплайнах

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

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

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

Более простой способ визуализировать большое λ по сравнению с маленьким λ,

Красная пунктирная кривая соответствует большему значению λ, а синяя / черная кривые - меньшему значению λs. Вы можете увидеть разницу в шероховатости кривых.

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

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

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

Однако LOOCV - это самый простой метод настройки параметров сглаживания в сглаживающих сплайнах. Причина в том, что сумму RSS LOOCV можно рассчитать, используя только одно исходное соответствие всем данным. Этот трюк применим не ко всем моделям. Если вас интересует теоретическая часть того, почему это так, вы можете обратиться к классической книге ESL II Trevor Hastie, Robert Tibshirani , и Джером Фридман.

Реализация сглаживающих сплайнов

Хорошо, зная основные концепции сглаживания сплайнов, позвольте мне показать реализации в R.

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

В R мы будем использовать пример набора данных Wage в пакете ISLR . Пакет R для сглаживания сплайнов - это сплайны. Мы будем использовать функцию smooth.spline (),

library(splines)
library(ISLR)
attach(Wage)
spl_mod <- smooth.spline(age, wage, cv= TRUE) 

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

Вот и все.

Я надеюсь, что эта короткая статья поможет вам лучше понять сплайны при моделировании нелинейных данных. Если вам интересны мои статьи о данных и моделировании, подпишитесь на мою учетную запись Medium. Спасибо!

Использованная литература:



Джеймс, Гарет и др. Введение в статистическое обучение. Vol. 112. Нью-Йорк: Спрингер, 2013.