Apakah selalu ide yang baik untuk berlatih dengan dataset lengkap setelah cross-validation ? Kata lain, itu ok untuk melatih dengan semua sampel dalam dataset saya dan tidak bisa memeriksa apakah ini pas tertentu overfits ?
Beberapa latar belakang masalah:
Katakanlah saya memiliki keluarga model parametrized oleh . Katakan juga bahwa saya memiliki satu set titik data dan bahwa saya melakukan pemilihan model dengan k-fold cross-validation untuk memilih model yang paling menggeneralisasi data. N
Untuk pemilihan model, saya dapat melakukan pencarian (mis. Pencarian grid) pada dengan, misalnya, menjalankan k-fold cross-validation untuk setiap kandidat. Di setiap lipatan dalam validasi silang, saya berakhir dengan model terpelajar . βα
Inti dari cross-validation adalah bahwa untuk setiap lipatan ini saya dapat memeriksa apakah model yang dipelajari memiliki overfit, dengan mengujinya pada "data yang tidak terlihat". Bergantung pada hasilnya, saya dapat memilih model dipelajari untuk parameter yang digeneralisasi terbaik selama validasi silang dalam pencarian kisi.→ α terbaik
Sekarang, mengatakan bahwa setelah pemilihan model , saya ingin menggunakan semua yang poin dalam dataset saya dan mudah-mudahan belajar model yang lebih baik. Untuk ini saya bisa menggunakan parameter sesuai dengan model yang saya pilih selama pemilihan model, dan kemudian setelah pelatihan tentang dataset lengkap, saya akan mendapatkan model yang baru dipelajari . Masalahnya adalah, jika saya menggunakan semua poin dalam dataset saya untuk pelatihan, saya tidak dapat memeriksa apakah model yang baru dipelajari ini cocok dengan data yang tidak terlihat. Apa cara yang tepat untuk memikirkan masalah ini?→ α b e s t β f u l l β f u l l
sumber
Jawaban:
Cara berpikir validasi silang adalah dengan memperkirakan kinerja yang diperoleh dengan menggunakan metode untuk membangun model, bukan untuk memperkirakan kinerja model.
Jika Anda menggunakan validasi silang untuk memperkirakan hiperparameter model (the s) dan kemudian menggunakan parameter-hip tersebut agar sesuai dengan model ke seluruh dataset, maka itu sah-sah saja, asalkan Anda mengenali bahwa estimasi validasi silang kinerja cenderung (mungkin secara substansial) bias optimis. Ini karena bagian dari model (parameter-hiper) telah dipilih untuk meminimalkan kinerja validasi silang, jadi jika statistik validasi silang memiliki varian tidak nol (dan itu akan) ada kemungkinan over-fitting kriteria pemilihan model.α
Jika Anda ingin memilih parameter-hiper dan memperkirakan kinerja model yang dihasilkan maka Anda perlu melakukan validasi silang bersarang, di mana validasi silang luar digunakan untuk menilai kinerja model, dan di setiap lipatan silang validasi digunakan untuk menentukan parameter-hiper secara terpisah di setiap lipatan. Anda membangun model akhir dengan menggunakan cross-validation pada seluruh set untuk memilih parameter-hiper dan kemudian membangun classifier pada seluruh dataset menggunakan parameter-hiper yang dioptimalkan.
Ini tentu saja mahal secara komputasi, tetapi layak karena bias yang diperkenalkan oleh estimasi kinerja yang tidak tepat bisa besar. Lihat kertas saya
GC Cawley dan NLC Talbot, Over-fitting dalam pemilihan model dan bias seleksi selanjutnya dalam evaluasi kinerja, Journal of Machine Learning Research, 2010. Penelitian, vol. 11, hlm. 2079-2107, Juli 2010. ( www , pdf )
Namun, masih dimungkinkan untuk memiliki kecocokan yang berlebihan dalam pemilihan model (validasi silang bersarang hanya memungkinkan Anda untuk mengujinya). Metode yang menurut saya bermanfaat adalah menambahkan istilah regularisasi ke kesalahan validasi silang yang menghukum nilai-nilai parameter-hip yang cenderung menghasilkan model yang terlalu rumit, lihat
GC Cawley dan NLC Talbot, Mencegah over-fitting dalam pemilihan model melalui regularisasi Bayesian dari hyper-parameter, Journal of Machine Learning Research, volume 8, halaman 841-861, April 2007. ( www , pdf )
Jadi jawaban untuk pertanyaan Anda adalah (i) ya, Anda harus menggunakan dataset lengkap untuk menghasilkan model akhir Anda karena semakin banyak data yang Anda gunakan, semakin besar kemungkinannya untuk digeneralisasikan dengan baik, tetapi (ii) pastikan Anda mendapatkan estimasi kinerja yang tidak bias melalui melakukan validasi silang bersarang dan berpotensi mempertimbangkan untuk menghukum statistik cross-validasi untuk lebih menghindari pemasangan yang berlebihan dalam pemilihan model.
sumber
Hanya untuk menambah jawaban oleh @ mark999,
caret
paket Max Kuhn (Pelatihan Klasifikasi dan Regresi) adalah sumber paling komprehensif dalam R untuk pemilihan model berdasarkan validasi silang bootstrap atau N-lipat CV dan beberapa skema lainnya juga.Bukan untuk mengabaikan kehebatan
rms
paket, tetapicaret
memungkinkan Anda menyesuaikan hampir setiap metode pembelajaran yang tersedia di R, sedangkanvalidate
hanya bekerja denganrms
metode (saya pikir).The
caret
paket infrastruktur tunggal untuk pra proses data, fit dan mengevaluasi model apapun populer, karena itu adalah mudah digunakan untuk semua metode dan menyediakan penilaian grafis dari banyak ukuran kinerja (sesuatu yang di sebelah masalah overfit mungkin mempengaruhi pemilihan model jauh sebagai baik) lebih dari kisi-kisi Anda dan variabel penting.Lihat sketsa paket untuk memulai (sangat mudah digunakan) Pemilihan Variabel
Preprocessing Data
dengan caret
Model Building dengan caret
Variable Pentingnya
Anda juga dapat melihat situs web tanda sisipan untuk informasi lebih lanjut tentang paket, dan contoh implementasi spesifik:
Situs tanda sisipan resmi
sumber
train
), ada cara caret untuk berlatih dengan dataset lengkap?Saya percaya bahwa Frank Harrell akan merekomendasikan validasi bootstrap daripada validasi silang. Validasi bootstrap akan memungkinkan Anda untuk memvalidasi model yang dipasang pada set data lengkap, dan lebih stabil daripada validasi silang. Anda dapat melakukannya di R menggunakan paket
validate
Harrellrms
.Lihat buku "Strategi Pemodelan Regresi" oleh Harrell dan / atau "Pengantar Bootstrap" oleh Efron dan Tibshirani untuk informasi lebih lanjut.
sumber
Saya pikir Anda memiliki banyak pertanyaan berbeda di sini:
Masalahnya adalah, Anda dapat menggunakan (satu) langkah validasi hanya untuk satu hal: baik untuk optimasi parameter, (x) atau untuk memperkirakan kinerja generalisasi.
Jadi, jika Anda melakukan optimasi parameter dengan validasi silang (atau jenis lain dari penentuan parameter yang digerakkan oleh data), Anda perlu sampel uji yang independen dari sampel pelatihan dan optimisasi tersebut. Dikran menyebutnya validasi silang bersarang, nama lain validasi silang ganda. Atau, tentu saja, satu set tes independen.
Menggunakan salah satu model validasi silang biasanya lebih buruk daripada pelatihan pada set lengkap (setidaknya jika kinerja kurva belajar Anda = f (nsamples) masih meningkat. Dalam praktiknya, itu adalah: jika tidak, Anda mungkin akan telah menetapkan mengesampingkan set tes independen.)
Jika Anda mengamati variasi besar antara model validasi silang (dengan parameter yang sama), maka model Anda tidak stabil. Dalam hal itu, menggabungkan model dapat membantu dan benar-benar lebih baik daripada menggunakan satu model yang dilatih pada seluruh data.
Pembaruan: Agregasi ini adalah ide di balik pengantongan yang diterapkan pada resampling tanpa penggantian (validasi silang) alih-alih penggantian ulang dengan penggantian (validasi bootstrap / out-of-bootstrap).
Berikut makalah di mana kami menggunakan teknik ini:
Beleites, C. & Salzer, R .: Menilai dan meningkatkan stabilitas model-model kemometrik dalam situasi ukuran sampel kecil, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6
Dengan menjadi sangat konservatif dengan derajat kebebasan yang diperbolehkan untuk model "terbaik", yaitu dengan memperhitungkan ketidakpastian (acak) pada hasil validasi silang optimasi. Jika df benar-benar sesuai untuk model validasi silang, kemungkinan bagus bahwa mereka tidak terlalu banyak untuk set pelatihan yang lebih besar . Masalahnya adalah bahwa optimasi parameter sebenarnya adalah pengujian berganda. Anda harus menjaga terhadap set parameter yang tidak sengaja terlihat bagus.
sumber
...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...
Bisakah Anda menjelaskan ini lebih banyak? mis. jika saya menjalankan regresi logistik dalam pengaturan lintas 10-k yang divalidasi dan berakhir dengan 10 set koefisien, apakah Anda merekomendasikan untuk menggabungkan perkiraan koefisien untuk membentuk model akhir? Jika demikian, bagaimana ini bisa dilakukan, hanya dengan mengambil sarana?If the d.f. are actually appropriate for the cross validation models
. Dalam pemahaman saya Anda berpendapat bahwa set kereta / validasi tidak terlalu besar bila dibandingkan dengan set data lengkap, apakah saya benar?Apa yang Anda lakukan bukanlah validasi silang, melainkan semacam optimisasi stokastik.
Gagasan CV adalah untuk mensimulasikan kinerja pada data yang tidak terlihat dengan melakukan beberapa putaran membangun model pada subset objek dan menguji pada yang tersisa. Hasil yang agak rata-rata dari semua putaran adalah perkiraan kinerja model yang dilatih di seluruh set .
Dalam kasus pemilihan model Anda, Anda harus melakukan CV penuh untuk setiap set parameter, dan dengan demikian mendapatkan perkiraan kinerja on-full-set untuk setiap setup, jadi sepertinya hal yang Anda inginkan.
Namun, perhatikan bahwa sama sekali tidak dijamin bahwa model dengan akurasi perkiraan terbaik akan menjadi yang terbaik pada kenyataannya - Anda dapat memvalidasi silang prosedur pemilihan seluruh model untuk melihat bahwa ada beberapa rentang dalam ruang parameter yang perbedaannya dalam akurasi model tidak signifikan.
sumber