Kann jemand helfen, eine konzeptionelle Erklärung dafür zu geben, wie Vorhersagen für neue Daten getroffen werden, wenn Glättungen / Splines für ein Vorhersagemodell verwendet werden? Wie werden beispielsweise bei einem Modell, das mit gamboost
dem mboost
Paket in R mit p-Splines erstellt wurde, Vorhersagen für neue Daten getroffen? Was wird aus den Trainingsdaten verwendet?
Angenommen, es gibt einen neuen Wert für die unabhängige Variable x, und wir möchten y vorhersagen. Wird eine Formel für die Spline-Erstellung auf diesen neuen Datenwert unter Verwendung der beim Training des Modells verwendeten Knoten oder df angewendet, und dann werden die Koeffizienten aus dem trainierten Modell angewendet, um die Vorhersage auszugeben?
Hier ist ein Beispiel mit R: Was wird konzeptionell vorausgesagt, um 899.4139 für die neuen Daten mean_radius = 15.99 auszugeben?
#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)
Antworten:
Die Art und Weise, wie die Vorhersage berechnet wird, ist wie folgt:
Von der ursprünglichen Passform haben Sie Knotenpositionen, die über den BereichBj(x);j=1,…,24 x=
mean_radius
Ihrer Trainingsdaten verteilt sind. Zusammen mit dem Grad der B-Spline-Basis (standardmäßig kubisch inmboost
) definieren diese Knotenpositionen die Form Ihrer B-Spline-Basisfunktionen. Standardmäßigmboost
sind 20 Innenknoten vorhanden, die 24 kubische B-Spline-Basisfunktionen definieren (fragen Sie nicht ...). Nennen wir diese Basisfunktionen . Der Effekt Ihrer Kovariate `` mean_radius`` wird einfach als Dies ist ein sehr Trick, da er das schwierige Problem der Schätzung des verringert nicht spezifizierte Funktion für das viel einfachere Problem der Schätzung linearer RegressionsgewichteDie Vorhersage ist dann nicht so kompliziert: Angesichts der geschätzten Koeffizienten müssen wir für die Vorhersagedaten . Dazu benötigen wir lediglich die Knotenpositionen, die die Basisfunktionen für die Originaldaten definieren. Wir erhalten dann die vorhergesagten Werte alsθ^j x n e w f ( x n e w ) = 24 Σ j B j ( x n e w ) θ j .Bj(⋅);j=1,…,24 xnew
Da das Boosten eine iterative Prozedur ist, sind die geschätzten Koeffizienten bei der Stoppiteration tatsächlich die Summe der Koeffizientenaktualisierungen in den Iterationen . Wenn Sie die Details wirklich in den Griff bekommen möchten, schauen Sie sich die Ausgabe an, die Sie erhalten 1 , … , m s t o pmstop 1,…,mstop
bbs(rnorm(100))$dpp(rep(1,100))$predict
,und von dort aus erkunden. Zum Beispiel,
with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), newX)
Anrufe
with(environment(bbs(rnorm(100))$dpp(rep(1,100))$predict), Xfun)
um das auf auszuwerten .x n e wBj(⋅) xnew
quelle