R / caret: set kereta dan uji vs validasi silang?

9

Ini mungkin pertanyaan yang konyol, tetapi ketika membuat model dengan tanda sisipan dan menggunakan sesuatu seperti LOOCVatau (bahkan lebih tepatnya) LGOCV, apa manfaat membagi data ke dalam kereta dan set tes jika ini pada dasarnya merupakan langkah validasi silang ngomong-ngomong

Saya membaca beberapa pertanyaan terkait dan mereka menyarankan bahwa beberapa metode validasi silang (misalnya apa yang dijelaskan di sini di situs caret ) adalah untuk tujuan pemilihan fitur . Namun dalam kasus saya, saya menggunakan randomForest( method = "rf") dan kernlab( method = svmRadial), yang tidak tercantum dalam grup yang mencoba membersihkan prediktor.

Jadi, pertanyaan saya adalah apakah saya menggunakan sesuatu seperti cross_val <- trainControl(method = "LGOCV", p = 0.8), bukankah itu sama dengan melatih 80% dari data saya, menguji model yang dihasilkan pada 20% sisanya, dan melakukan itu berulang-ulang untuk mendapatkan gambaran seberapa baik model bekerja?

Jika demikian, apakah ada kebutuhan untuk membagi data saya menjadi set kereta / tes?

PS Saya sebagian bertanya ketika saya sedang melakukan model pada prototipe DOE yang dihasilkan secara empiris (pikirkan barang sulit di mana kita men-tweak input dan kemudian menggunakan metode pengujian untuk mengukur berbagai atribut tentang prototipe).

Karena itu, saya tidak memiliki kumpulan data besar dengan banyak tingkat prediktor yang tumpang tindih untuk dimodelkan - kami sering menjalankan satu percobaan pada setiap titik kepentingan DOE karena pembuatan data mahal dalam kasus ini. Dengan demikian, saya ingin menggunakan semua data yang saya dapat untuk model yang akurat, tetapi ingin memeriksa di sini bahwa saya tidak kehilangan sesuatu yang jelas dan membuat model yang buruk dengan tidak memecah hal-hal.


Sunting: Menanggapi pertanyaan @ topepo, saya memodelkan atribut yang diukur secara fisik dari suatu senyawa berdasarkan penyesuaian input kimia formula. Saya tidak bisa membahas aplikasi saya yang sebenarnya, tetapi saya akan membuat contoh berdasarkan pada merumuskan cat lateks interior. Saya menjalankan eksperimen yang dirancang tempat kami memadukan 4-5 bahan kimia, mungkin bermain dengan% padatan, dan sejumlah waktu untuk memanaskan larutan polimer untuk menyesuaikan tingkat polimerisasi.

Kami kemudian dapat mengukur reologi, berat molekul, kekerasan lapisan cat, tahan air, dll.

Kami memiliki ulangan yang layak dari beberapa variabel, tetapi hanya beberapa ulangan yang benar dalam arti bahwa setiap tingkat DOE persis sama. Total kumpulan data ~ 80 pengamatan dan mungkin 4-5 adalah pengulangan yang tepat. Kami telah melakukan 15 tes yang berbeda, dan mungkin 5-6 di antaranya telah dilakukan untuk setiap pengamatan. Beberapa tanggapan hadir untuk 25-50% dari data.

Dari sini, kami ingin memodelkan efek 7 prediktor kami pada properti output dan kemudian mengoptimalkan untuk menargetkan ruang desain baru yang paling mungkin memberikan properti yang diinginkan.

(Oleh karena itu pertanyaan saya DI SINI . Setelah saya memiliki model yang terlatih, akan lebih baik untuk melakukan "membalikkan" dan memasukkan tanggapan yang diinginkan untuk mendapatkan tebakan terbaik pada tingkat input yang mungkin untuk coba berikutnya).

Hendy
sumber
Perangkat validasi dan perangkat uji adalah dua hal yang berbeda! Lihat stats.stackexchange.com/questions/19048/… dan en.wikipedia.org/wiki/Test_set
sashkello
@sashkello Terima kasih untuk itu. Ini mungkin dapat ditutup sebagai duplikat, dan entah bagaimana saya melewatkan pertanyaan itu sepenuhnya. Satu bit yang hilang adalah: Jika saya berlatih dengan data_set1, apa yang saya anggap sebagai langkah yang dilakukan oleh LGOCVvalidasi silang? Dari pembacaan saya, saya mengasumsikan 1) caretberalih melalui parameter tuning data_set1dan kemudian 2) menahan param tersebut tetap dan 3) menciptakan "sub model" menggunakan params dari # 1 untuk setiap p = 0.8sampel data_set1dan menguji prediksi pada 0,2 yang tersisa untuk mengukur akurasi. . Apakah itu ringkasan yang masuk akal?
Hendy
Satu bit lain yang hilang: apakah tidak meninggalkan set untuk pengujian membantu akurasi model sama sekali? Kedengarannya seperti itu hanya memberikan set yang tidak bias untuk pengujian di masa depan. Jika data terbatas dan tidak ada banyak poin desain yang tumpang tindih, bukankah saya lebih baik berlatih dengan set lengkap dan mengandalkan validasi silang untuk perkiraan akurasi?
Hendy
Dengan strategi pencarian yang lebih baik, ini sangat membantu: stats.stackexchange.com/questions/9357/… . Terutama ini "Saya akan berpikir bahwa satu faktor pembatas di sini adalah berapa banyak data yang Anda miliki. Sebagian besar waktu, kami bahkan tidak ingin membagi data menjadi partisi tetap sama sekali, maka CV." Saya pikir ini sesuai dengan pertanyaan saya (yang mungkin spesifik untuk sifat terbatas data saya (hanya 80 pengamatan). Sepertinya suara untuk tidak membagi dalam kasus ini?
Hendy

Jawaban:

7

Pikiran umum saya:

Jadi ketika Anda mengevaluasi model yang berbeda, Anda mungkin ingin menyetelnya, coba berbagai jenis pra-pemrosesan dll hingga Anda menemukan apa yang menurut Anda adalah model yang baik. Resampling dapat membantu memandu Anda ke arah yang benar selama proses itu.

Namun, masih ada kemungkinan over-fitting dan peluang terjadinya ini sangat dipengaruhi oleh seberapa banyak data (dan prediktor) yang Anda miliki. Jika Anda memiliki sedikit data, ada beberapa cara untuk memikirkan hal ini:

  • Gunakan semua data untuk pelatihan karena setiap titik data menambah secara signifikan seberapa baik model tersebut.
  • Sisihkan set tes kecil sebagai pemeriksaan akhir untuk kesalahan kotor karena pemasangan berlebihan. Peluang over-fitting dengan ukuran sampel kecil tidak kecil dan semakin besar dengan jumlah sampel.

Saya jatuh ke kamp kedua tetapi yang pertama tidak salah sama sekali.

Jika Anda memiliki banyak data maka itu tidak terlalu menjadi masalah (kecuali jika Anda memiliki laju kejadian yang kecil).

Untukmu:

Anda memiliki DOE. Jenis desain akan membantu menjawab pertanyaan. Apakah Anda mencoba menginterpolasi antara titik desain atau memprediksi titik desain yang belum diuji sejauh ini?

Anda punya satu ulangan. Saya jatuh seperti hutan acak yang memukul paku dengan palu godam dan mungkin mengakibatkan over-fitting. Saya akan mencoba sesuatu yang lebih halus seperti jaringan saraf SVM atau (terkesiap).

Maks

topepo
sumber
Saya menambahkan pembaruan untuk Anda di atas. Saya memiliki kurva yang cukup bagus (saya kira itu subjektif) dengan method = "svmRadial". Saya berharap untuk mengevaluasi beberapa orang lain, termasuk method = neuralnet, meskipun dalam upaya terakhir saya menemukan jaringan saraf sangat sensitif terhadap `set.seed (). Singkatnya, kami mencoba untuk 1) lebih memahami hubungan antara input / beberapa respons dan 2) membuat tebakan terbaik di ruang desain yang paling mungkin untuk menghasilkan properti yang diinginkan sehingga kami dapat menjalankan DOE baru yang lebih terfokus vs yang lebih khas pendekatan ekspansif / shotgun dalam hal input level min / maks untuk dicoba.
Hendy