Comment prédire de nouvelles données avec spline / régression douce

11

Quelqu'un peut-il aider à donner une explication conceptuelle de la façon dont les prédictions sont faites pour les nouvelles données lors de l'utilisation de lissages / splines pour un modèle prédictif? Par exemple, étant donné un modèle créé à l'aide gamboostdu mboostpackage dans R, avec des p-splines, comment sont faites les prédictions pour les nouvelles données? Qu'est-ce qui est utilisé à partir des données d'entraînement?

Supposons qu'il existe une nouvelle valeur de la variable indépendante x et que nous voulons prédire y. Une formule de création de spline est-elle appliquée à cette nouvelle valeur de données en utilisant les nœuds ou df utilisés lors de l'apprentissage du modèle, puis les coefficients du modèle entraîné sont appliqués pour générer la prédiction?

Voici un exemple avec R, que prévoit faire conceptuellement la sortie 899.4139 pour les nouvelles données 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
la source
Question: s'agit-il d'interpolation (intérieure au domaine) ou d'extrapolation? Ils sont traités différemment. Ils sont également très dépendants de la fonction "de base". Une fonction de base radiale comme on pourrait s'y attendre dans un GLM va avoir un comportement sensiblement différent, en particulier au-delà des queues, que certaines bases polynomiales d'ordre supérieur (er).
EngrStudent
EngrStudent, je suis intéressé à comprendre conceptuellement ce qui se passe dans les deux cas. J'ai supposé (peut-être à tort) que le processus était le même dans les deux cas mais que les valeurs résultantes diffèrent et diffèrent par les fonctions de base utilisées (mais que le processus était le même)
B_Miner
Dans les bases polynomiales, il existe un phénomène parfois appelé "effet Gibbs". Si vous ajustez des données qui sont des échantillons uniformes d'une distribution normale standard à quelque chose comme un polynôme du 10e ordre, puis regardez la qualité de l'interpolation, vous verrez qu'à la fin les pentes sont élevées et l'interpolation est très mauvaise. Dans les bases polynomiales, il est habituel d'utiliser un extrapolant d'ordre inférieur à l'interpolant. Sans connaître la "physique" définissant les phénomènes, les extrapolants sont souvent linéaires. J'utilise MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Réponses:

10

La façon dont la prédiction est calculée est la suivante:

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,

et allez explorer à partir de là. Par exemple,

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

appels

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

Bj()Xnew

fabians
la source
c'est bien. Je me demande si cela vous dérangerait d'expliquer largement ce que font ces fonctions? Est-il vrai que ce qui est nécessaire pour «marquer» de nouvelles données est alors l'ensemble des coefficients, les emplacements des nœuds utilisés lors de l'entraînement et la formule des splines? Y a-t-il d'autres données d'entraînement nécessaires pour noter de nouvelles données (comme dans un modèle KNN)?
B_Miner
1
Les informations dont vous avez besoin dépendent du type de base de spline que vous utilisez. Pour les B-splines, tout ce que vous devez savoir est l'ordre des B-splines (quadratique / cubique / etc.) et les emplacements des nœuds. La "formule" pour les B-splines est une récursivité, la récursion de Cox-de Boor . J'ai ajouté une demi-phrase à ma réponse.
fabians