Как прогнозировать новые данные с помощью сплайна / плавной регрессии


11

Может ли кто-нибудь помочь дать концептуальное объяснение того, как делаются прогнозы для новых данных при использовании сглаживания / сплайнов для прогнозирующей модели? Например, учитывая модель , созданную с использованием 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)

Вопрос: это про интерполяцию (внутреннюю часть домена) или экстраполяцию? Они обрабатываются по-разному. Они также очень зависят от «базисной» функции. Функция радиального базиса, как и следовало ожидать в GLM, будет иметь существенно другое поведение, особенно вне хвостов, чем некоторый полиномиальный базис высокого (эр) порядка.
EngrStudent

EngrStudent, мне интересно понять концептуально, что происходит в любом случае. Я предположил (возможно, неправильно), что процесс был одинаковым в обоих случаях, но результирующие значения различаются и различаются в зависимости от используемых
базовых

В полиномиальных основаниях есть явление, которое иногда называют «эффектом Гиббса». Если вы подгоните данные, которые являются однородными выборками стандартного нормального распределения, к чему-то вроде полинома 10-го порядка, а затем посмотрите на качество интерполяции, вы увидите, что на концах наклоны высокие, а интерполяция очень плохая. В полиномиальных основаниях обычно используют экстраполант более низкого порядка, чем интерполант. Не зная «физику», определяющую явления, экстраполенты часто бывают линейными. Я использую MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Ответы:


10

Способ вычисления прогноза выглядит следующим образом:

Начиная с первоначальной посадки, у вас есть местоположения узлов, распределенные по диапазону mean_radiusваших тренировочных данных. Вместе со степенью базиса B-сплайна (кубический по умолчанию в mboost) эти местоположения узлов определяют форму ваших функций базиса B-сплайна. По умолчанию mboostиспользуется 20 внутренних узлов, которые определяют 24 кубических базисных сплайн-функции (не спрашивайте ...). Давайте назовем эти базисные функции . Эффект вашей ковариаты `` mean_radius`` представляется просто как Это очень трюк, потому что он уменьшает сложную проблему оценки неопределенная функция к гораздо более простой задаче оценки весов линейной регрессииBj(x);j=1,,24x=

f(x)=j24Bj(x)θj
f(x)θj связанный с коллекцией синтетических ковариат .Bj(x)

Предсказание тогда не так уж сложно: учитывая предполагаемые коэффициенты , нам нужно оценить для данных прогноза . Для этого все, что нам нужно, - это расположение узлов, которые определяют базовые функции для исходных данных. Затем мы получим предсказанные значения как θ^jBj();j=1,,24xnew

f^(xnew)=j24Bj(xnew)θ^j.

Поскольку повышение представляет собой итерационную процедуру, оценочные коэффициенты на итерации остановки фактически являются суммой обновлений коэффициентов на итерациях . Если вы действительно хотите получить контроль над деталями, посмотрите на результаты, которые вы получаете отmstop1,,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


это замечательно. Интересно, не могли бы вы объяснить в общих чертах, что делают эти функции? Правда ли, что для «оценки» новых данных требуется набор коэффициентов, расположение узлов, используемых при обучении, и формула для сплайнов? Нужны ли какие-либо другие обучающие данные для оценки новых данных (как в модели KNN)?
B_Miner

1
Какая информация вам нужна, зависит от типа используемой вами сплайн-базы. Для B-сплайнов все, что вам нужно знать, это порядок B-сплайнов (квадратичный / кубический / и т. Д.) И расположение узлов. «Формула» для B-сплайнов - это рекурсия, рекурсия Кокса-де Бур . Я добавил половину предложения к моему ответу.
Фабианс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.