Como prever novos dados com regressão spline / suave

11

Alguém pode ajudar a dar uma explicação conceitual de como as previsões são feitas para novos dados ao usar suavizações / splines para um modelo preditivo? Por exemplo, dado um modelo criado usando gamboosto mboostpacote em R, com p-splines, como são feitas as previsões para novos dados? O que é usado nos dados de treinamento?

Diga que existe um novo valor da variável independente x e queremos prever y. Uma fórmula para criação de splines é aplicada a esse novo valor de dados usando os nós ou df usados ​​no treinamento do modelo e, em seguida, os coeficientes do modelo treinado são aplicados para gerar a previsão?

Aqui está um exemplo com R, o que é previsto fazer conceitualmente para gerar 899.4139 para os novos dados 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)
B_Miner
fonte
Pergunta: trata-se de interpolação (interior do domínio) ou extrapolação? Eles são tratados de maneira diferente. Eles também são muito dependentes da função "base". Uma função de base radial como seria de se esperar em um GLM terá um comportamento substancialmente diferente, especialmente além das caudas, do que algumas bases polinomiais de ordem mais alta.
EngrStudent
EngrStudent, estou interessado em entender conceitualmente o que acontece nos dois casos. Presumi (talvez incorrectamente) que o processo foi o mesmo em ambos os casos mas que os valores resultantes diferem e diferem pelas funções de base usada (mas que o processo foi o mesmo)
B_Miner
Nas bases polinomiais, há um fenômeno às vezes chamado "efeito Gibbs". Se você ajustar dados que são amostras uniformes de uma distribuição normal padrão a algo como um polinômio de 10ª ordem e, em seguida, observar a qualidade da interpolação, verá que nas extremidades as inclinações são altas e a interpolação é muito ruim. Em bases polinomiais, é habitual usar um extrapolante de ordem inferior ao interpolante. Sem conhecer a "física" que define os fenômenos, os extrapolantes costumam ser lineares. Eu uso o MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Respostas:

10

A maneira como a previsão é calculada é assim:

mean_radiusmboostmboostBj(x);j=1,,24x=

f(x)=j24Bj(x)θj
f(x)θjBj(x)

θ^jBj();j=1,,24xnew

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

mstop1,,mstop

bbs(rnorm(100))$dpp(rep(1,100))$predict,

e vá explorar a partir daí. Por exemplo,

with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), newX)

chamadas

with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), Xfun)

Bj()xnew

fabianos
fonte
isso é ótimo. Gostaria de saber se você se importaria de explicar amplamente o que essas funções fazem? É verdade que o que é necessário para "pontuar" novos dados é o conjunto de coeficientes, localizações dos nós usados ​​no treinamento e a fórmula dos splines? Existem outros dados de treinamento necessários para obter novos dados (como em um modelo KNN)?
B_Miner
11
As informações necessárias dependem do tipo de spline usado. Para splines B, tudo que você precisa saber é a ordem dos splines B (quadráticos / cúbicos / etc.) e a localização dos nós. A "fórmula" para splines B é uma recursão, a recursão de Cox-de Boor . Adicionei meia frase à minha resposta.
Fabians