So prognostizieren Sie neue Daten mit Spline / Smooth-Regression

11

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 gamboostdem mboostPaket 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)
B_Miner
quelle
Frage: Geht es um Interpolation (innerhalb der Domäne) oder Extrapolation? Sie werden unterschiedlich behandelt. Sie sind auch sehr abhängig von der "Basis" -Funktion. Eine radiale Basisfunktion, wie sie in einem GLM zu erwarten ist, wird ein wesentlich anderes Verhalten aufweisen, insbesondere außerhalb der Schwänze, als eine Polynombasis hoher (er) Ordnung.
EngrStudent
EngrStudent, ich bin daran interessiert, konzeptionell zu verstehen, was in beiden Fällen passiert. Ich nahm an (möglicherweise falsch), dass der Prozess in beiden Fällen der gleiche war, aber dass sich die resultierenden Werte durch die verwendeten Basisfunktionen unterscheiden (aber dass der Prozess der gleiche war)
B_Miner
In Polynombasen gibt es ein Phänomen, das manchmal als "Gibbs-Effekt" bezeichnet wird. Wenn Sie Daten, die einheitliche Stichproben einer Standardnormalverteilung sind, an ein Polynom 10. Ordnung anpassen und dann die Qualität der Interpolation betrachten, werden Sie feststellen, dass die Steigungen an den Enden hoch und die Interpolation sehr schlecht sind. In Polynombasen ist es üblich, einen Extrapolanten niedrigerer Ordnung als den Interpolanten zu verwenden. Ohne die "Physik" zu kennen, die die Phänomene definiert, sind die Extrapolanten oft linear. Ich benutze MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Antworten:

10

Die Art und Weise, wie die Vorhersage berechnet wird, ist wie folgt:

Von der ursprünglichen Passform haben Sie Knotenpositionen, die über den Bereich mean_radiusIhrer Trainingsdaten verteilt sind. Zusammen mit dem Grad der B-Spline-Basis (standardmäßig kubisch in mboost) definieren diese Knotenpositionen die Form Ihrer B-Spline-Basisfunktionen. Standardmäßig mboostsind 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 RegressionsgewichteBj(x);j=1,,24x=

f(x)=j24Bj(x)θj
f(x)θj assoziiert mit einer Sammlung synthetischer Kovariaten .Bj(x)

Die 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 θ^jx n e w f ( x n e w ) = 24 Σ j B j ( x n e w ) θ j .Bj();j=1,,24xnew

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

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 pmstop1,,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

Fabianer
quelle
das ist toll. Ich frage mich, ob es Ihnen etwas ausmachen würde, allgemein zu erklären, was diese Funktionen bewirken. Stimmt es, dass zum "Bewerten" neuer Daten der Satz von Koeffizienten, Knotenpositionen, die beim Training verwendet werden, und die Formel für die Splines benötigt werden? Werden andere Trainingsdaten benötigt, um neue Daten zu erhalten (wie in einem KNN-Modell)?
B_Miner
1
Welche Informationen Sie benötigen, hängt von der Art der verwendeten Spline-Basis ab. Für B-Splines müssen Sie lediglich die Reihenfolge der B-Splines (quadratisch / kubisch / etc ..) und die Knotenpositionen kennen. Die "Formel" für B-Splines ist eine Rekursion, die Cox-de-Boor-Rekursion . Ich habe meiner Antwort einen halben Satz hinzugefügt.
Fabians