Может ли кто-нибудь помочь дать концептуальное объяснение того, как делаются прогнозы для новых данных при использовании сглаживания / сплайнов для прогнозирующей модели? Например, учитывая модель , созданную с использованием gamboost
в mboost
пакете в R, с р-сплайнами, как предсказания новых данных сделали? Что используется из данных обучения?
Скажем, есть новое значение независимой переменной x, и мы хотим предсказать y. Применяется ли формула для создания сплайнов к этому новому значению данных с использованием узлов или df, используемых при обучении модели, а затем применяются коэффициенты из обученной модели для вывода прогноза?
Вот пример с R, что прогнозирует делать концептуально для вывода 899.4139 для новых данных mean_radius = 15.99?
#take the data wpbc as example
library(mboost)
data(wpbc)
modNew<-gamboost(mean_area~mean_radius, data = wpbc, baselearner = "bbs", dfbase = 4, family=Gaussian(),control = boost_control(mstop = 5))
test<-data.frame(mean_radius=15.99)
predict(modNew,test)
Ответы:
Способ вычисления прогноза выглядит следующим образом:
Начиная с первоначальной посадки, у вас есть местоположения узлов, распределенные по диапазонуBj(x);j=1,…,24 x=
mean_radius
ваших тренировочных данных. Вместе со степенью базиса B-сплайна (кубический по умолчанию вmboost
) эти местоположения узлов определяют форму ваших функций базиса B-сплайна. По умолчаниюmboost
используется 20 внутренних узлов, которые определяют 24 кубических базисных сплайн-функции (не спрашивайте ...). Давайте назовем эти базисные функции . Эффект вашей ковариаты `` mean_radius`` представляется просто как Это очень трюк, потому что он уменьшает сложную проблему оценки неопределенная функция к гораздо более простой задаче оценки весов линейной регрессииПредсказание тогда не так уж сложно: учитывая предполагаемые коэффициенты , нам нужно оценить для данных прогноза . Для этого все, что нам нужно, - это расположение узлов, которые определяют базовые функции для исходных данных. Затем мы получим предсказанные значения какθ^j Bj(⋅);j=1,…,24 xnew
Поскольку повышение представляет собой итерационную процедуру, оценочные коэффициенты на итерации остановки фактически являются суммой обновлений коэффициентов на итерациях . Если вы действительно хотите получить контроль над деталями, посмотрите на результаты, которые вы получаете отmstop 1,…,mstop
bbs(rnorm(100))$dpp(rep(1,100))$predict
,и иди исследовать оттуда. Например,
with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), newX)
звонки
with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), Xfun)
оценить на .Bj(⋅) xnew
источник