Teknik umum setelah pelatihan, memvalidasi dan menguji model Machine Learning preferensi adalah dengan menggunakan dataset lengkap, termasuk subset pengujian, untuk melatih model akhir untuk menyebarkannya , misalnya produk.
Pertanyaan saya adalah: Apakah selalu yang terbaik untuk dilakukan? Bagaimana jika kinerja benar-benar memburuk?
Sebagai contoh, mari kita asumsikan suatu kasus di mana model skor sekitar 65% dalam mengklasifikasikan subset pengujian. Ini bisa berarti bahwa salah satu model dilatih kurang atau ATAU bahwa subset pengujian terdiri dari outlier. Dalam kasus terakhir, melatih model akhir dengan mereka akan menurunkan kinerjanya dan Anda baru tahu setelah menggunakannya.
Mengucapkan ulang pertanyaan awal saya:
Jika Anda memiliki demonstrasi satu kali model , seperti menempatkannya pada elektronik tertanam di atas kapal percobaan roket mahal, akankah Anda mempercayai model yang telah dilatih ulang dengan subset tes pada langkah terakhir tanpa harus mengulangi diuji pada kinerja barunya?
Pertanyaan menarik. Saya pribadi belum melihat bahwa untuk produk masuk ke produksi, tetapi memahami logika.
Secara teoritis, semakin banyak data model yang Anda gunakan, semakin baik generalisasi. Jadi jika Anda melatih model pada set lengkap data yang Anda miliki, itu harus menggeneralisasi lebih baik daripada model yang hanya melihat misalnya set kereta / val (misalnya ~ 90%) dari set data lengkap.
Masalah dengan ini (dan alasan kami membagi data menjadi set kereta / val / tes di tempat pertama!) Adalah bahwa kami ingin dapat membuat klaim statistik tentang keakuratan data yang tidak terlihat. Segera setelah kami melatih kembali model pada semua data, tidak mungkin lagi membuat klaim seperti itu.
[Sunting]
Berikut adalah pertanyaan terkait tentang Cross-Validated , di mana jawaban yang diterima membuat poin yang sama dengan saya dan menyebutkan cara lain dalam melakukan sesuatu.
Kami mengulangi:
Akhirnya, jika Anda berhasil mendapatkan skor yang bagus pada set tes, Anda dapat mengklaimnya secara umum. Jadi pertanyaan, apakah pelatihan ulang pada dataset lengkap akan meningkatkan kinerja data yang tidak terlihat di masa mendatang bukanlah sesuatu yang dapat Anda uji. Bukti empiris tentang kinerja yang lebih baik di set masalah terkait lainnya akan menjadi satu-satunya sumber atau panduan pada saat Anda harus membuat keputusan.
Pemeriksaan kewarasan akan menguji kembali model yang dilatih ulang akhir pada set tes asli; berharap bahwa skornya lebih tinggi daripada yang pernah terjadi ketika model hanya melihat set kereta / val, karena sebenarnya telah melihat set tes selama pelatihan. Ini tidak akan membuat saya merasa 100% yakin bahwa model akhir ini lebih unggul dalam semua kasus di masa depan, tetapi setidaknya itu sama baiknya dengan data yang diberikan.
Mungkin ada argumen yang lebih keras untuk tidak melakukan apa yang Anda katakan (mungkin secara motovated secara akademis), namun hal itu tampaknya menarik untuk aplikasi praktis!
sumber
Poin yang perlu ditekankan tentang pembelajaran mesin statistik adalah bahwa tidak ada jaminan . Saat Anda memperkirakan kinerja menggunakan set yang tertunda, itu hanya perkiraan . Perkiraan bisa salah.
Ini membutuhkan waktu untuk membiasakan diri, tetapi Anda harus merasa nyaman dengannya. Ketika Anda mengatakan "Bagaimana jika kinerja benar-benar memburuk?", Jawabannya yakin, itu bisa terjadi. Kinerja aktual bisa lebih buruk dari yang Anda perkirakan / prediksi. Bisa juga lebih baik. Keduanya mungkin. Itu tidak bisa dihindari. Ada beberapa ketidakpastian yang melekat dan tidak dapat direduksi.
Ketika Anda mengevaluasi kinerja menggunakan set uji yang diadakan, Anda menggunakan data dari masa lalu untuk mencoba memprediksi kinerja masa depan. Seperti yang mereka katakan, kinerja masa lalu bukan jaminan hasil di masa depan . Ini adalah fakta kehidupan yang harus kita terima.
Anda tidak bisa membiarkan ini melumpuhkan Anda. Fakta bahwa itu mungkin untuk melakukan lebih buruk dari yang Anda prediksi bukanlah alasan untuk menghindari penyebaran model produksi yang dilatih pada data. Secara khusus, itu juga mungkin dilakukan dengan buruk jika Anda tidak melakukannya. Ada kemungkinan bahwa model yang dilatih pada semua data (kereta + validasi + tes) akan lebih buruk daripada model yang dilatih hanya pada bagian validasi kereta +. Mungkin juga akan lebih baik. Jadi, daripada mencari jaminan, kita harus bertanya pada diri sendiri: Apa yang memberi kita peluang sukses yang terbaik? Apa yang paling mungkin paling efektif?
Dan dalam hal ini, ketika Anda ingin menggunakan untuk produksi, yang terbaik yang dapat Anda lakukan adalah menggunakan semua data yang tersedia untuk Anda. Dalam hal kinerja yang diharapkan, menggunakan semua data tidak lebih buruk daripada menggunakan beberapa data, dan berpotensi lebih baik. Jadi, Anda sebaiknya menggunakan semua data yang tersedia untuk melatih model ketika Anda membangun model produksi. Hal-hal masih bisa berjalan buruk - itu selalu mungkin untuk beruntung, setiap kali Anda menggunakan metode statistik - tetapi ini memberi Anda kesempatan terbaik untuk hal-hal berjalan dengan baik.
Secara khusus, praktik standar adalah sebagai berikut:
Simpan beberapa data Anda ke dalam set tes yang diulurkan. Tidak ada aturan yang keras dan cepat tentang fraksi apa yang akan digunakan, tetapi misalnya, Anda mungkin memesan 20% untuk set tes dan mempertahankan 80% sisanya untuk pelatihan & validasi. Biasanya, semua pemisahan harus dilakukan secara acak.
Selanjutnya, gunakan data pelatihan & validasi untuk mencoba beberapa arsitektur dan hiperparameter, bereksperimen untuk menemukan model terbaik yang Anda bisa. Ambil 80% yang ditahan untuk pelatihan dan validasi, dan pisahkan menjadi set pelatihan dan set validasi, dan latih model menggunakan set pelatihan dan kemudian ukur akurasinya pada set validasi. Jika Anda menggunakan validasi silang, Anda akan melakukan split ini berkali-kali dan rata-rata hasilnya pada set validasi; jika tidak, Anda akan melakukan satu split (misalnya, 70% / 30% dari 80%, atau sesuatu seperti itu) dan mengevaluasi kinerja pada set validasi. Jika Anda memiliki banyak hiperparameter untuk dicoba, lakukan ini satu kali untuk setiap pengaturan calon hiperparameter. Jika Anda memiliki banyak arsitektur untuk dicoba, lakukan ini untuk setiap kandidat arsitektur. Anda dapat mengulangi ini, menggunakan apa yang Anda
Setelah Anda bahagia, Anda membekukan pilihan arsitektur, hiperparameter, dll. Sekarang eksperimen Anda selesai. Setelah Anda mencapai titik ini, Anda tidak akan pernah bisa mencoba opsi lain lagi (tanpa mendapatkan set tes baru) - jadi jangan tekan titik ini sampai Anda yakin Anda siap.
Ketika Anda siap, maka Anda melatih model pada set pelatihan + validasi penuh (yang 80%) menggunakan arsitektur dan hyperparameter yang Anda pilih sebelumnya. Kemudian, ukur keakuratannya pada set tes yang diulurkan. Itulah perkiraan / prediksi Anda untuk seberapa akurat pendekatan pemodelan ini. Anda mendapatkan nomor tunggal di sini. Angka itu adalah apa adanya: jika Anda tidak menyukainya, Anda tidak dapat kembali ke langkah 1 dan 2 dan melakukan lebih banyak eksperimen; itu tidak valid.
Akhirnya, untuk penggunaan produksi, Anda dapat melatih model pada seluruh kumpulan data, pelatihan + validasi + pengujian, dan menggunakannya untuk penggunaan produksi. Perhatikan bahwa Anda tidak pernah mengukur akurasi model produksi ini, karena Anda tidak memiliki data yang tersisa untuk melakukan itu; Anda sudah menggunakan semua data. Jika Anda menginginkan perkiraan seberapa baik kinerjanya, Anda berhak menggunakan perkiraan akurasi dari langkah 4 sebagai prediksi Anda tentang seberapa baik kinerjanya dalam produksi, karena itulah prediksi terbaik yang tersedia untuk kinerja masa depannya. Seperti biasa, tidak ada jaminan - itu hanya perkiraan terbaik, mengingat informasi yang tersedia bagi kami. Mungkin saja hal itu bisa lebih buruk dari yang Anda prediksi, atau lebih baik dari yang Anda prediksi - itu selalu benar.
sumber
Salah satu alasan memiliki set data adalah untuk menghindari overfitting. Jika Anda menggunakan validasi silang, Anda pada dasarnya mengizinkan seluruh dataset untuk bertindak sebagai set pelatihan, tetapi pelatihan ulang tidak akan membiarkan Anda memvalidasi apakah ada tanda overfitting. Saya kira cara baik itu (validasi silang atau uji ulang dengan seluruh kumpulan data) tidak boleh secara dramatis mengubah hasil Anda (dari tebakan saya yang tidak berpendidikan), tetapi Anda tidak akan dapat melakukan penyetelan hyperparameter atau memvalidasi kinerja model Anda karena Anda tidak melakukannya. memiliki set tes. Apakah akhirnya menjadi lebih baik, sulit untuk mengatakan, tapi saya kira satu-satunya cara untuk mengetahui adalah melakukan A / B dari dua model atas data nyata dari waktu ke waktu.
sumber