Cómo predecir datos nuevos con spline / regresión suave

11

¿Alguien puede ayudar a dar una explicación conceptual de cómo se hacen las predicciones para los nuevos datos cuando se utilizan suavizados / splines para un modelo predictivo? Por ejemplo, dado un modelo creado usando gamboostel mboostpaquete en R, con p-splines, ¿cómo se hacen las predicciones para los nuevos datos? ¿Qué se usa de los datos de entrenamiento?

Supongamos que hay un nuevo valor de la variable independiente x y queremos predecir y. ¿Se aplica una fórmula para la creación de splines a este nuevo valor de datos usando los nudos o df utilizados al entrenar el modelo y luego los coeficientes del modelo entrenado se aplican para generar la predicción?

Aquí hay un ejemplo con R, ¿qué está haciendo predecir conceptualmente para generar 899.4139 para los nuevos datos 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
fuente
Pregunta: ¿se trata de interpolación (interior al dominio) o extrapolación? Se manejan de manera diferente. También dependen mucho de la función "base". Una función de base radial como se esperaría en un GLM va a tener un comportamiento sustancialmente diferente, especialmente más allá de las colas, que algunas bases polinómicas de alto (er) orden.
EngrStudent
EngrStudent, estoy interesado en comprender conceptualmente lo que sucede en ambos casos. Supuse (tal vez incorrectamente) que el proceso fue el mismo en ambos casos, pero que los valores resultantes difieren y difieren según las funciones
básicas
En las bases polinómicas hay un fenómeno a veces llamado "efecto Gibbs". Si ajusta datos que son muestras uniformes de una distribución normal estándar a algo así como un polinomio de décimo orden, y luego observa la calidad de la interpolación, verá que en los extremos las pendientes son altas y la interpolación es muy pobre. En bases polinómicas, se acostumbra usar un extrapolante de orden inferior al interpolante. Sin conocer la "física" que define los fenómenos, los extrapolantes son a menudo lineales. Yo uso MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Respuestas:

10

La forma en que se calcula la predicción es así:

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 ir a explorar desde allí. Por ejemplo,

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

llamadas

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

Bj()xnew

fabians
fuente
esto es genial. Me pregunto si le importaría explicar ampliamente qué hacen estas funciones. ¿Es cierto que lo que se necesita para "puntuar" nuevos datos es el conjunto de coeficientes, las ubicaciones de los nudos utilizados durante el entrenamiento y la fórmula para las splines? ¿Se necesitan otros datos de entrenamiento para calificar nuevos datos (como en un modelo KNN)?
B_Miner
1
La información que necesita depende del tipo de spline que utilice. Para las splines B, todo lo que necesita saber es el orden de las splines B (cuadrático / cúbico / etc.) y las ubicaciones de los nudos. La "fórmula" para B-splines es una recursión, la recursividad de Cox-de Boor . Agregué media frase a mi respuesta.
fabians