Cara memprediksi data baru dengan regresi spline / smooth

11

Adakah yang bisa membantu memberikan penjelasan konseptual tentang bagaimana prediksi dibuat untuk data baru saat menggunakan smooths / splines untuk model prediksi? Misalnya, mengingat model yang dibuat menggunakan gamboostdalam mboostpaket di R, dengan p-splines, bagaimana prediksi untuk data baru dibuat? Apa yang digunakan dari data pelatihan?

Katakanlah ada nilai baru dari variabel independen x dan kami ingin memprediksi y. Apakah rumus untuk pembuatan spline diterapkan pada nilai data baru ini menggunakan knot atau df yang digunakan ketika melatih model dan kemudian koefisien dari model yang terlatih diterapkan untuk menghasilkan prediksi?

Berikut ini adalah contoh dengan R, apa yang diprediksi dilakukan secara konseptual ke output 899,4139 untuk data baru 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
sumber
Pertanyaan: apakah ini tentang interpolasi (interior ke domain) atau ekstrapolasi? Mereka ditangani secara berbeda. Mereka juga sangat tergantung pada fungsi "dasar". Fungsi basis radial seperti yang diharapkan dalam GLM akan memiliki perilaku yang sangat berbeda, terutama di luar ekor, daripada beberapa basis polinomial orde tinggi.
EngrStudent
EngrStudent, saya tertarik untuk memahami secara konseptual apa yang terjadi dalam kedua kasus tersebut. Saya berasumsi (mungkin salah) bahwa prosesnya sama dalam kedua kasus tetapi nilai-nilai yang dihasilkan berbeda dan berbeda dengan fungsi dasar yang digunakan (tapi prosesnya sama)
B_Miner
Dalam basis polinomial ada fenomena yang kadang-kadang disebut "efek Gibbs". Jika Anda memasukkan data yang merupakan sampel seragam dari distribusi normal standar ke sesuatu seperti polinomial orde 10, dan kemudian melihat kualitas interpolasi, Anda akan melihat bahwa pada ujungnya lerengnya tinggi dan interpolasinya sangat buruk. Dalam basis polinomial, biasanya digunakan ekstrapulan dengan tatanan lebih rendah daripada interpolant. Tanpa mengetahui "fisika" yang mendefinisikan fenomena tersebut, ekstrapolannya seringkali linier. Saya menggunakan MatLab: mathworks.com/help/matlab/ref/interp1.html .
EngrStudent

Jawaban:

10

Cara prediksi dihitung seperti ini:

Dari fit asli, Anda memiliki lokasi simpul yang tersebar melalui rentang mean_radiusdalam data pelatihan Anda. Bersama dengan derajat basis B-spline (kubik secara default di mboost), lokasi simpul ini menentukan bentuk fungsi basis B-spline Anda. Default in mboostadalah memiliki 20 knot interior, yang mendefinisikan 24 fungsi basis B-spline kubik (jangan tanya ...). Mari panggil fungsi-fungsi dasar ini . Efek dari kovariat Anda `` mean_radius`` diwakili hanya sebagai Ini adalah trik yang sangat rapi, karena mengurangi masalah sulit dalam memperkirakan fungsi tidak spesifik untuk masalah yang lebih sederhana dalam memperkirakan bobot regresi linierBj(x);j=1,,24x=

f(x)=j24Bj(x)θj
f(x)θj terkait dengan koleksi kovariat sintetik .Bj(x)

Prediksi tidak begitu rumit: Dengan perkiraan koefisien , kita perlu mengevaluasi untuk data prediksi . Untuk itu, yang kita butuhkan hanyalah lokasi simpul yang mendefinisikan fungsi dasar untuk data asli. Kami kemudian mendapatkan nilai prediksi sebagai θ^jBj();j=1,,24xnew

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

Karena boosting adalah prosedur berulang, koefisien yang diperkirakan pada berhenti iterasi sebenarnya adalah jumlah dari pembaruan koefisien dalam iterasi . Jika Anda benar-benar ingin menguasai detailnya, lihat output yang Anda dapatkanmstop1,,mstop

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

dan pergi menjelajah dari sana. Sebagai contoh,

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

panggilan

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

untuk mengevaluasi pada .Bj()xnew

orang fabian
sumber
ini bagus. Saya ingin tahu apakah Anda keberatan menjelaskan secara luas apa fungsi ini lakukan? Benarkah yang diperlukan untuk "menilai" data baru adalah seperangkat koefisien, lokasi simpul yang digunakan saat pelatihan dan formula untuk splines? Apakah ada data pelatihan lain yang diperlukan untuk mencetak data baru (seperti dalam model KNN)?
B_Miner
1
Info mana yang Anda butuhkan tergantung pada jenis dasar spline yang Anda gunakan. Untuk B-splines, yang perlu Anda ketahui adalah urutan B-splines (kuadrat / kubik / dll.) Dan lokasi simpul. "Formula" untuk B-splines adalah rekursi, rekursi Cox-de Boor . Saya telah menambahkan setengah kalimat pada jawaban saya.
Fabians