Mengapa ada asimetri antara langkah pelatihan dan langkah evaluasi?


27

Sudah terkenal, terutama dalam pemrosesan bahasa alami, bahwa pembelajaran mesin harus dilanjutkan dalam dua langkah, langkah pelatihan dan langkah evaluasi, dan mereka harus menggunakan data yang berbeda. Kenapa ini? Secara intuitif, proses ini membantu menghindari overfitting data, tetapi saya gagal melihat alasan (informasi-teoretis) inilah masalahnya.

Terkait, saya telah melihat beberapa angka dilemparkan sekitar untuk berapa banyak kumpulan data yang harus digunakan untuk pelatihan dan berapa banyak untuk evaluasi, seperti masing-masing 2/3 dan 1/3. Apakah ada dasar teoretis untuk memilih distribusi tertentu?

Jawaban:


15

Sangat lucu bahwa jawaban yang paling banyak dipilih tidak benar-benar menjawab pertanyaan :) jadi saya pikir akan lebih baik untuk mendukung ini dengan sedikit lebih banyak teori - kebanyakan diambil dari "Penambangan Data: Alat dan Teknik Pembelajaran Mesin Praktis" dan Tom Mitchell "Pembelajaran Mesin" .


Pengantar.

Jadi kami memiliki classifier dan dataset terbatas, dan sejumlah data tertentu harus dimasukkan ke dalam set pelatihan dan sisanya digunakan untuk pengujian (jika perlu, subset ketiga digunakan untuk validasi).

Dilema yang kita hadapi adalah ini: untuk menemukan klasifikasi yang baik, "himpunan bagian pelatihan" harus sebesar mungkin, tetapi untuk mendapatkan perkiraan kesalahan yang baik "himpunan bagian tes" harus sebesar mungkin - tetapi kedua himpunan bagian diambil dari kolam yang sama.

Jelas bahwa set pelatihan harus lebih besar dari set tes - yaitu, split tidak boleh 1: 1 (tujuan utama adalah untuk melatih , bukan untuk menguji ) - tetapi tidak jelas di mana split seharusnya.

Prosedur penahanan.

Prosedur pemisahan "superset" menjadi himpunan bagian disebut metode holdout . Perhatikan bahwa Anda mungkin dengan mudah mendapatkan ketidakberuntungan dan contoh-contoh kelas tertentu bisa hilang (atau terlalu banyak disajikan) di salah satu himpunan bagian, yang dapat diatasi melalui

  • pengambilan sampel acak, yang menjamin bahwa setiap kelas diwakili dengan benar di semua himpunan bagian data - prosedur ini disebut stratifikasi ketidaksepakatan
  • pengambilan sampel acak dengan proses pelatihan-pengujian-validasi berulang di atasnya - yang disebut pengulangan berstrata berulang

Dalam prosedur penahanan tunggal (tidak berulang), Anda dapat mempertimbangkan bertukar peran data pengujian dan pelatihan dan rata-rata dua hasil, tetapi ini hanya masuk akal dengan pemisahan 1: 1 antara pelatihan dan set tes yang tidak dapat diterima (lihat Pendahuluan ). Tapi ini memberikan ide, dan metode yang ditingkatkan (disebut cross-validation digunakan sebagai gantinya) - lihat di bawah!

Validasi silang.

Dalam validasi silang, Anda memutuskan sejumlah lipatan (partisi data). Jika kita menggunakan tiga lipatan, data dipecah menjadi tiga partisi dan

  • kami menggunakan 2/3 untuk pelatihan dan 1/3 untuk pengujian
  • dan ulangi prosedur tiga kali sehingga, pada akhirnya, setiap instance telah digunakan tepat satu kali untuk pengujian.

Ini disebut validasi silang tiga kali lipat , dan jika stratifikasi diadopsi juga (yang sering benar) itu disebut stratifikasi berlipat tiga silang validasi .

Tapi, lihatlah, cara standar bukanlah pemecahan 2/3: 1/3. Mengutip "Penambangan Data: Alat dan Teknik Pembelajaran Mesin Praktis" ,

Cara standar [...] adalah dengan menggunakan validasi silang 10 kali lipat berstrata. Data dibagi secara acak menjadi 10 bagian di mana kelas diwakili dalam kira-kira proporsi yang sama seperti dalam dataset lengkap. Masing-masing bagian diadakan secara bergantian dan skema pembelajaran dilatih untuk sembilan per sepuluh yang tersisa; maka tingkat kesalahannya dihitung pada set holdout. Dengan demikian prosedur pembelajaran dilaksanakan sebanyak 10 kali pada set pelatihan yang berbeda (masing-masing memiliki banyak kesamaan). Akhirnya, 10 estimasi kesalahan dirata-rata untuk menghasilkan estimasi kesalahan keseluruhan.

Kenapa 10? Karena ".. Tes ekstensif pada sejumlah dataset, dengan teknik pembelajaran yang berbeda, telah menunjukkan bahwa 10 adalah jumlah lipatan yang tepat untuk mendapatkan estimasi kesalahan terbaik, dan ada juga beberapa bukti teoritis yang mendukung ini .." Saya belum dapat menemukan tes dan bukti teoretis mana yang dimaksudkan, tetapi yang ini tampaknya merupakan awal yang baik untuk menggali lebih banyak - jika Anda mau.

Mereka pada dasarnya hanya mengatakan

Meskipun argumen ini sama sekali tidak konklusif, dan perdebatan terus mengamuk dalam pembelajaran mesin dan data mining circle tentang apa skema terbaik untuk evaluasi, validasi silang 10 kali lipat telah menjadi metode standar dalam istilah praktis. [...] Selain itu, tidak ada keajaiban tentang angka pasti 10: 5 kali lipat atau 20 kali lipat cross-validasi hampir sama baiknya.

Bootstrap, dan - akhirnya! - jawaban untuk pertanyaan awal.

Tapi kami belum sampai pada jawaban, mengapa 2/3: 1/3 sering direkomendasikan. Menurut saya itu diwarisi dari metode bootstrap .

Ini didasarkan pada pengambilan sampel dengan penggantian. Sebelumnya, kami menempatkan sampel dari "grand set" persis ke salah satu himpunan bagian. Bootstraping berbeda dan sampel dapat dengan mudah muncul di kedua pelatihan dan set tes.

Mari kita lihat satu skenario tertentu di mana kita mengambil dataset D1 dari n instance dan sampelnya n kali dengan penggantian, untuk mendapatkan dataset D2 lain dari n instance.

Sekarang perhatikan dengan sempit.

Karena beberapa elemen dalam D2 akan (hampir pasti) diulang, harus ada beberapa instance dalam dataset asli yang belum dipilih: kita akan menggunakan ini sebagai instance uji.

Apa kemungkinan bahwa contoh tertentu tidak diambil untuk D2 ? Probabilitas dijemput pada setiap take adalah 1 / n jadi sebaliknya adalah (1 - 1 / n) .

Ketika kita mengalikan probabilitas ini bersama-sama, itu adalah (1 - 1 / n) ^ n yaitu e ^ -1 yaitu sekitar 0,3. Ini berarti set tes kami sekitar 1/3 dan set pelatihan sekitar 2/3.

Saya kira ini adalah alasan mengapa disarankan untuk menggunakan 1/3: 2/3 split: rasio ini diambil dari metode estimasi bootstrap.

Membungkusnya.

Saya ingin mengakhiri dengan kutipan dari buku data mining (yang saya tidak bisa membuktikan tetapi menganggap benar) di mana mereka umumnya merekomendasikan untuk lebih memilih 10 kali lipat cross-validasi:

Prosedur bootstrap mungkin merupakan cara terbaik untuk memperkirakan kesalahan untuk dataset yang sangat kecil. Namun, seperti validasi silang satu-keluar, ini memiliki kelemahan yang dapat diilustrasikan dengan mempertimbangkan situasi khusus, buatan [...] dataset acak lengkap dengan dua kelas. Tingkat kesalahan sebenarnya adalah 50% untuk setiap aturan prediksi. Tetapi skema yang hafal set pelatihan akan memberikan skor penggantian sempurna 100% sehingga contoh turunan = 0, dan bootstrap 0,632 akan mencampur ini dengan bobot 0,368 hingga memberikan tingkat kesalahan keseluruhan hanya 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), yang optimistis menyesatkan.


13

Pertimbangkan satu set rekaman terbatas. Jika Anda menggunakan semua catatan sebagai set pelatihan, Anda bisa dengan sempurna memasukkan semua poin dengan polinomial berikut:

y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m

Sekarang jika Anda memiliki beberapa catatan baru, tidak digunakan dalam set pelatihan dan nilai-nilai vektor input X berbeda dari vektor X apa pun, digunakan dalam set pelatihan, apa yang dapat Anda ceritakan tentang akurasi prediksi y?

Saya sarankan Anda untuk melihat contoh di mana Anda memiliki 1 atau 2-dimensi vektor input X (untuk memvisualisasikan polinomial overfitting) dan memeriksa seberapa besar kesalahan prediksi untuk beberapa pasangan (X, y) yang nilai X hanyalah sebuah sedikit berbeda dari nilai-nilai dari set pelatihan.

Saya tidak tahu apakah penjelasan ini cukup teoretis, tetapi mudah-mudahan ini membantu. Saya mencoba menjelaskan masalah pada model regresi karena saya menganggapnya lebih mudah dimengerti daripada yang lain (SVM, Neural Networks ...).

Saat Anda membuat model, Anda harus membagi data menjadi set pelatihan dan set uji setidaknya (beberapa membagi data menjadi set pelatihan, evaluasi, dan validasi silang). Biasanya 70% data digunakan untuk set pelatihan dan 30% untuk evaluasi dan kemudian, ketika Anda membangun model, Anda harus memeriksa kesalahan pelatihan dan kesalahan tes. Jika kedua kesalahan besar, itu berarti model Anda terlalu sederhana (model memiliki bias tinggi). Di sisi lain jika kesalahan pelatihan Anda sangat kecil tetapi ada perbedaan besar antara pelatihan dan kesalahan pengujian, itu berarti model Anda terlalu kompleks (model memiliki varian tinggi).

Cara terbaik untuk memilih kompromi yang tepat adalah merencanakan pelatihan dan menguji kesalahan untuk berbagai model kompleksitas dan kemudian memilih yang mana kesalahan pengujiannya minimal (lihat gambar di bawah). masukkan deskripsi gambar di sini


5
Ini adalah jawaban yang sangat bagus untuk caranya - bukan karena alasannya. Tapi mungkin itu hanya pertanyaan yang salah - yang benar-benar kita pedulikan adalah apa yang bekerja secara empiris, bukan teori.
Tamzin Blake

@Thom: Jadi sebenarnya pertanyaan Anda adalah paragraf kedua dan bukan akhir dari yang pertama ("gagal melihat mengapa") karena apa yang secara empiris berhasil adalah Anda menjadi terlalu pas: model Anda melakukan pekerjaan yang sangat baik dalam menangani kebiasaan kecil dalam diri Anda data pelatihan yang tidak ada dalam kasus umum.
Menang

1
@winwaed Pertanyaannya adalah "Mengapa ada ...?", "Mengapa ini?", dan "Apakah ada ...?", Semua jelas ditandai dengan tanda tanya. Saya akrab dengan fenomena itu, dan saya menemukannya intuitif, dan saya akrab dengan contoh-contoh empiris, tetapi saya tidak tahu mengapa itu terjadi, dan sepertinya teori informasi harus memiliki jawaban untuk saya. Komentar di atas hanyalah refleksi bahwa mungkin pertanyaan "mengapa" tidak begitu relevan setelah Anda secara teratur memverifikasi keteraturan yang dapat Anda manfaatkan.
Tamzin Blake

7

Ini adalah masalah generalisasi — yaitu, seberapa baik hipotesis kami akan mengklasifikasikan dengan benar contoh-contoh masa depan yang bukan bagian dari rangkaian pelatihan. Silakan lihat contoh fantastis ini, apa yang terjadi seandainya model Anda hanya cocok dengan data yang Anda miliki dan bukan yang baru: hukum Titius-Bode


Contoh yang baik - sangat mirip dengan hipotesis ilmiah. Kita masih berbicara tentang model apakah itu model statistik ML atau model alam semesta.
Menang

1

Sejauh ini @andreiser memberikan jawaban yang brilian untuk bagian kedua dari pertanyaan OP mengenai pelatihan / pengujian data split, dan @niko menjelaskan cara menghindari overfitting, tetapi tidak ada yang sampai pada pertanyaan: Mengapa menggunakan data yang berbeda untuk pelatihan dan evaluasi membantu kita menghindari overfitting.


Data kami dibagi menjadi:

  1. Contoh pelatihan
  2. Contoh validasi
  3. Uji contoh (evaluasi)

M

M1,...,Mn

Penting untuk menyadari apa perbedaan peran dari contoh Validasi dan Uji.

  1. Instans pelatihan - digunakan untuk menyesuaikan model.
  2. Instance validasi - digunakan untuk memilih model
  3. Contoh uji (evaluasi) - digunakan untuk mengukur akurasi model pada data baru

Lihat halaman 222 dari Elemen Pembelajaran Statistik: Penambangan Data, Inferensi, dan Prediksi untuk detail lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.