Apa aturan .632+ dalam bootstrap?

107

Di sini @gung membuat referensi ke aturan .632+. Pencarian Google cepat tidak menghasilkan jawaban yang mudah dimengerti tentang apa arti aturan ini dan untuk tujuan apa aturan itu digunakan. Apakah seseorang tolong jelaskan aturan .632+?

russellpierce
sumber

Jawaban:

115

Saya akan sampai ke penaksir 0,632, tetapi itu akan menjadi pengembangan yang agak panjang:

Misalkan kita ingin memprediksi dengan menggunakan fungsi , di mana dapat bergantung pada beberapa parameter yang diperkirakan menggunakan data , misalYXff(Y,X)f(X)=Xβ

Perkiraan kesalahan prediksi yang naif adalah mana adalah beberapa fungsi kerugian, misalnya kuadrat kesalahan hilang. Ini sering disebut kesalahan pelatihan. Efron et al. menyebutnya tingkat kesalahan jelas atau tingkat penggantian. Ini tidak terlalu baik karena kami menggunakan data kami agar sesuai dengan . Ini menghasilkan menjadi bias ke bawah. Anda ingin tahu seberapa baik model tidak dalam memprediksi nilai-nilai baru.

err¯=1Ni=1NL(yi,f(xi))
L(xi,yi)ferr¯f

Seringkali kita menggunakan validasi silang sebagai cara sederhana untuk memperkirakan kesalahan prediksi sampel tambahan yang diharapkan (seberapa baik model kita lakukan pada data tidak dalam set pelatihan kita?).

Err=E[L(Y,f(X))]

Cara yang populer untuk melakukan ini adalah dengan melakukan -validasi silang. Pisahkan data Anda ke dalam grup (mis. 10). Untuk setiap kelompok , paskan model Anda pada kelompok tersisa dan ujilah pada kelompok ke- . Kesalahan prediksi ekstra-sampel tervalidasi silang kami hanya rata-rata mana adalah beberapa fungsi indeks yang menunjukkan partisi di mana pengamatan dialokasikan dan adalah nilai prediksi menggunakan data yang tidak ada dalam set .KKkK1k

ErrCV=1Ni=1NL(yi,fκ(i)(xi))
κifκ(i)(xi)xiκ(i)

Estimator ini kira-kira tidak bias untuk kesalahan prediksi sebenarnya ketika dan memiliki varian yang lebih besar dan lebih mahal secara komputasi untuk lebih besar . Jadi sekali lagi kita melihat bias-varians trade-off yang dimainkan.K=NK

Alih-alih validasi silang, kita bisa menggunakan bootstrap untuk memperkirakan kesalahan prediksi sampel tambahan. Resampling bootstrap dapat digunakan untuk memperkirakan distribusi sampling dari berbagai statistik. Jika data pelatihan kami adalah , maka kita dapat mempertimbangkan untuk mengambil sampel bootstrap (dengan penggantian) dari set ini mana setiap adalah satu set sampelSekarang kita dapat menggunakan sampel bootstrap kami untuk memperkirakan kesalahan prediksi sampel ekstra: mana adalah nilai prediksi pada dari model yang cocok denganX=(x1,,xN)BZ1,,ZBZiN

Errboot=1Bb=1B1Ni=1NL(yi,fb(xi))
fb(xi)xib set data bootstrap. Sayangnya, ini bukan penaksir yang sangat baik karena sampel bootstrap yang digunakan untuk menghasilkan mungkin mengandung . Estimator bootstrap cuti-keluar-keluar menawarkan peningkatan dengan meniru cross-validation dan didefinisikan sebagai: mana adalah kumpulan indeks untuk sampel bootstrap yang tidak mengandung observasi , danadalah jumlah sampel tersebut. fb(xi)xi
Errboot(1)=1Ni=1N1|Ci|bCiL(yi,fb(xi))
Cii|Ci|Errboot(1)memecahkan masalah overfitting, tetapi masih bias (yang ini bias ke atas). Bias ini disebabkan oleh pengamatan yang tidak berbeda dalam sampel bootstrap yang dihasilkan dari pengambilan sampel dengan penggantian. Jumlah rata-rata pengamatan yang berbeda dalam setiap sampel adalah sekitar (lihat jawaban ini untuk penjelasan mengapa Mengapa rata-rata setiap sampel bootstrap berisi sekitar dua pertiga pengamatan? ). Untuk mengatasi masalah bias, Efron dan Tibshirani mengusulkan estimator 0,632: mana0.632N
Err.632=0.368err¯+0.632Errboot(1)
err¯=1Ni=1NL(yi,f(xi))
adalah estimasi naif kesalahan prediksi yang sering disebut kesalahan pelatihan. Idenya adalah untuk rata-rata estimasi bias ke bawah dan estimasi bias ke atas.

Namun, jika kita memiliki fungsi prediksi yang sangat berlebihan (yaitu ) maka bahkan penaksir .632 akan menjadi bias ke bawah. Estimator .632+ dirancang untuk kompromi yang kurang bias antara dan . dengan mana adalah tingkat kesalahan tidak-informasi, diperkirakan dengan mengevaluasi model prediksi pada semua kemungkinan kombinasi dari target dan prediktor .err¯=0err¯Errboot(1)

Err.632+=(1w)err¯+wErrboot(1)
w=0.63210.368RandR=Errboot(1)err¯γerr¯
γyixi

γ=1N2i=1Nj=1NL(yi,f(xj))
.

Di sini mengukur tingkat overfitting relatif. Jika tidak ada overfitting (R = 0, ketika ) ini sama dengan estimator .632.RErrboot(1)=err¯

bdeonovic
sumber
2
Itu adalah pertanyaan bagus, @rpierce, tetapi mereka agak menjauh dari topik utama utas ini. Akan lebih baik, menurut organisasi CV, untuk memilikinya di utas baru, sehingga lebih mudah bagi orang untuk menemukan & memanfaatkan informasi itu selanjutnya.
gung
1
Pertanyaan 1: stats.stackexchange.com/questions/96764/…
russellpierce
1
@rpierce Saya minta maaf jika saya membuat pertanyaan saya agak sulit untuk diikuti. membandingkan kecocokan model Anda dengan data yang digunakan untuk mencocokkannya. Jadi untuk kerugian kesalahan kuadrat yang hanya menjadierr¯=1Ni=1NL(yi,f(xi))1ni=1n(yiy^i)2
bdeonovic
1
@Rpierce, ya! Saya menjadi sedikit umum karena saya menarik kembali banyak bahan ini dari beberapa catatan kelas.
bdeonovic
53

Anda akan menemukan informasi lebih lanjut di bagian 3 ini 1 kertas. Tetapi untuk meringkas, jika Anda memanggil sampel angka dari diambil secara acak dan dengan penggantian, berisi rata-rata sekitar elemen unik.Sn{1:n}S(1e1)n0.63212056n

Alasannya adalah sebagai berikut. Kami mengisi dengan mengambil sampel kali (secara acak dan dengan penggantian) dari . Pertimbangkan indeks tertentu . S={s1,,sn}i=1,,n{1:n}m{1:n}

Kemudian:

P(si=m)=1/n

dan

P(sim)=11/n

dan ini benar (secara intuitif, karena kami sampel dengan penggantian, probabilitas tidak bergantung pada )1ini

jadi

P(mS)=1P(mS)=1P(i=1nsim)=1i=1nP(sim)=1(11/n)n1e1

Anda juga dapat melakukan simulasi kecil ini untuk memeriksa secara empiris kualitas perkiraan (yang tergantung pada ):n

n <- 100
fx01 <- function(ll,n){
    a1 <- sample(1:n, n, replace=TRUE)
    length(unique(a1))/n
}
b1 <- c(lapply(1:1000,fx01,n=100), recursive=TRUE)
mean(b1)

1. Bradley Efron dan Robert Tibshirani (1997). Peningkatan Validasi Silang: Metode .632+ Bootstrap . Jurnal Asosiasi Statistik Amerika , Vol. 92, No. 438, hlm. 548--560.

pengguna603
sumber
3
di sini adalah dokumen untuk Anda dalam referensi - stat.washington.edu/courses/stat527/s14/readings/…
1
(+1) Sangat bagus. Saya hanya akan membuat notasi sedikit lebih standar. Data: . Variabel acak IID dengan . Hasil: . (x1,,xn)S1,,SnP(Si=k)=1nI{1,,n}(k)P(i=1n{Si=k})=1P(i=1n{Sik})=1i=1nP{Sik}=1(11/n)n11/e63.21%
Zen
4
@rpierce: Benar. Bit "jelas" yang jawabannya saat ini gagal disebutkan adalah . 1e10.63212056
Ilmari Karonen
1
Jawaban ini juga bagus, pada kenyataannya, jawaban yang diterima ditambah jawaban ini sebenarnya memberikan jawaban lengkap untuk pertanyaan saya - tetapi di antara keduanya saya merasa seperti jawaban Benjamin lebih dekat dengan apa yang saya cari dalam jawaban. Yang sedang berkata - Saya sangat berharap itu mungkin untuk menerima keduanya.
russellpierce
1
@rpierce: Mengutip Celine Dion, " Dongeng setua waktu / lagu setua sajak / Kecantikan dan binatang." : P
Nick Stauner
8

Dalam pengalaman saya, terutama berdasarkan simulasi, varian bootstrap 0.632 dan 0.632+ dibutuhkan hanya karena masalah berat yang disebabkan oleh penggunaan aturan penilaian akurasi yang tidak tepat, yaitu proporsi "diklasifikasikan" dengan benar. Saat Anda menggunakan aturan penilaian yang tepat (misalnya skor penyimpangan atau Brier) atau semi-layak (misalnya, -index = AUROC), bootstrap optimisme Efron-Gong standar berfungsi dengan baik.c

Frank Harrell
sumber
3
Saya rasa saya tidak mengerti sebagian besar hal yang Anda katakan di sini, Frank. Apakah Anda bersedia mengklarifikasi? Sepertinya Anda memiliki sesuatu yang unik dan penting untuk disumbangkan.
russellpierce
Senang memperluas jika Anda dapat menyatakan pertanyaan tertentu.
Frank Harrell
1
Aturan penilaian ini adalah ... menilai kualitas hasil bootstrap? Bisakah Anda memberikan tautan yang menggambarkan proporsi "diklasifikasikan" dengan aturan penilaian yang benar, saya mengalami kesulitan membayangkan jenis binatang apa yang mungkin. Dari hasil teratas untuk "Optimisme Efron-Gong" di Google, sebagian besar tampaknya adalah tulisan Anda ... bagaimana bedanya dengan jika saya mengatakan "bootstrap" tanpa kualifikasi? Artikel Effron dan Gong mana yang harus saya perhatikan? Tampaknya ada beberapa.
russellpierce
3
Lihat makalah asli tentang 0,632 yang menggunakan dan mendefinisikan proporsi yang diklasifikasikan dengan benar (Efron & Tibshirani JASA 92: 548; 1997). Bootstrap optimisme adalah varian dari bootstrap untuk memperkirakan bias. Hal ini dijelaskan dalam Gong: JASA 85:20; 1990.
Frank Harrell
2

Jawaban itu sangat bermanfaat. Saya tidak dapat menemukan cara untuk mendemonstrasikannya dengan matematika jadi saya menulis beberapa kode Python yang bekerja dengan sangat baik:

    from numpy import mean
    from numpy.random import choice

    N = 3000

    variables = range(N)

    num_loop = 1000
    # Proportion of remaining variables
    p_var = []

    for i in range(num_loop):
        set_var = set(choice(variables, N))
        p=len(set_var)/float(N)
        if i%50==0:
            print "value for ", i, " iteration ", "p = ",p
        p_var.append(p)

    print "Estimator of the proportion of remaining variables, ", mean(p_var)
Anil Narassiguin
sumber