Baru-baru ini saya diberitahu bahwa proses yang saya ikuti (komponen dari Tesis MS) dapat dilihat sebagai terlalu pas. Saya mencari untuk mendapatkan pemahaman yang lebih baik tentang ini dan melihat apakah orang lain setuju.
Tujuan dari makalah ini adalah untuk
Bandingkan kinerja Gradient Boosted Regression Trees terhadap Random Forests pada kumpulan data.
Lihatlah kinerja model akhir yang dipilih (baik GBM atau RF).
Paket gbm
dan randomForest
di R sedang digunakan, bersama dengan
caret
.
Proses yang diikuti adalah sebagai berikut:
- Pra-pemrosesan awal data (misalnya memasukkan nilai yang hilang dari prediktor nominal dengan kategori berbeda yang disebut "Tidak Ada"). Variabel target tidak dilihat sehubungan dengan pra-pemrosesan (yang sangat minim).
- Buat kisi nilai untuk meta-parameter dari setiap algoritma (mis. Jumlah iterasi untuk GBM).
- Buat 25 pemisahan acak dari kumpulan data (pelatihan 65% dan tes 35%).
Ulangi 25 kali berikut ini untuk GBM (Setiap kali menggunakan salah satu kereta acak / split tes. Setiap kali, pelatihan dan set tes "saat ini" berubah tentu saja - ini diulangi validasi silang keluar-grup-keluar):
- Gunakan validasi silang 5 kali lipat untuk menemukan pengaturan parameter "optimal" dari algoritma selama pencarian grid. Tidak ada dari proses sebelumnya yang digunakan sama sekali dalam proses saat ini.
- Setelah ditentukan, paskan model dengan set pelatihan "saat ini" penuh dan prediksi set tes "saat ini". Sisihkan ukuran kinerja proses ini.
Setelah 25 ukuran kinerja (sebenarnya ukuran khusus domain, tetapi anggap sebagai akurasi) diperoleh dengan cara ini, ikuti proses yang sama persis, menggunakan sampel independen yang sama persis dari kereta dan tes, untuk RF (proses yang sama, hanya dengan berbeda pencarian grid tentu saja).
Sekarang, saya memiliki 25 ukuran kinerja dari set tes "saat ini" untuk GBM dan RF. Saya membandingkan mereka menggunakan Tes Peringkat Bertanda Wilcoxon dan juga tes permutasi. Saya menemukan GBM lebih unggul. Saya juga mengklaim bahwa distribusi ukuran kinerja dari 25 langkah ini untuk GBM adalah kinerja yang diharapkan dari classifier GBM akhir.
Apa yang tidak saya lakukan, adalah mengeluarkan set tes acak dari awal dan menyisihkannya untuk dibandingkan dengan model GBM akhir yang dibangun dari semua data pelatihan. Saya berpendapat bahwa apa yang saya lakukan sebenarnya jauh lebih baik karena saya mengulangi split data / model tune / uji proses tahan 25 kali dibandingkan hanya sekali.
Apakah terlalu pas di sini? Karena 25 menjalankan digunakan untuk memilih GBM versus RF apakah itu berarti bahwa ukuran kinerja yang diperoleh dari proses tidak dapat digunakan sebagai estimasi kinerja untuk model lengkap?
EDIT Menanggapi komentar Wayne, berikut adalah apa yang dilakukan selama masing-masing 25 berjalan:
- Data sampel untuk set pelatihan engan (i = 1, .., 25) dipecah menjadi 5 kelompok yang berukuran sama. Sebuah model cocok menggunakan 4 dari 5 kelompok, mengatur parameter GBM (misalnya jumlah iterasi) sama dengan nilai-nilai dalam grid jth (j = 1, .., 18).
- Kinerja pada kelompok ke-5 dihitung menggunakan model ini.
- Langkah 1 dan 2 diulangi 4 kali lebih banyak (k-fold CV lama biasa dengan k = 5). Kinerja rata-rata dari 5 sub-menjalankan dan ini membuat kinerja yang diharapkan dari GBM dengan set nilai parameter tertentu.
- Langkah 1 -3 diulangi untuk 17 "baris" lainnya di grid.
Setelah selesai, nilai-nilai parameter terbaik dari latihan di atas ditentukan dan GBM cocok menggunakan nilai-nilai parameter ini dan set pelatihan engan penuh. Kinerjanya diperkirakan pada set tes ke-i.
Setelah seluruh proses ini dilakukan 25 kali, ada 25 ukuran kinerja yang tersedia untuk GBM. Kemudian mereka dikumpulkan untuk RF dengan cara yang sama persis.
Setelah membandingkan dan memilih GBM, saya melihat 25 pengukuran kinerja dan mengambil mean dan Stnd Error untuk menentukan interval kepercayaan untuk model GBM pada data ini.
Jawaban:
Bayangkan alih-alih hanya memilih GBM vs RF, Anda malah memilih di antara 100 pengklasifikasi GBM yang berbeda (dengan asumsi pelatihan GBM menggunakan beberapa jenis keacakan, dan Anda menetapkan mereka benih acak 1 hingga 100). Maka Anda akan memilih salah satu dari 100 GBM tersebut sebagai GBM terbaik. Tapi hampir pasti bahwa salah satu dari 100 model yang Anda pilih beruntung dapat mengalahkan 99 saudara kandungnya, sehingga perkiraan kinerja Anda akan optimis.
Anda hanya menggunakan dua pelajar, dan mereka tidak dilatih oleh algoritma yang identik, jadi GBM tunggal Anda mungkin tidak memiliki banyak tekanan seleksi (terutama jika secara dramatis mengungguli RF), tetapi perkiraan kesalahan Anda masih akan menjadi sedikit optimis.
sumber
Kedengarannya Anda sudah mencoba menggabungkan dua teknik, yang masing-masingnya sah, tetapi cara Anda melakukannya rasanya Anda akan berakhir dengan data bocor di antara berbagai kasus.
Di level bawah, Anda tampaknya menggunakan CV dengan benar. Yang menyarankan bahwa level teratas juga harus CV, menghasilkan CV bersarang, tetapi level teratas Anda bukan CV.
Pada level atas, sepertinya Anda mungkin ingin melakukan validasi bootstrap, dalam hal ini double-bootstrap akan berfungsi untuk level atas dan bawah, tetapi level atas Anda bukan bootstrap yang tepat.
Anda mungkin ingin melihat artikel stackexchange ini. dan artikel-artikel yang terhubung dengannya, dan mungkin merestrukturisasi level teratas Anda menjadi CV. Juga, perhatikan bahwa tidak lain dari Frank Harrell memposting di utas itu dan menyarankan agar CV diulangi berkali-kali. (Saya terkejut, berpikir satu pengulangan harus melakukannya.)
sumber