Mengapa hanya tiga partisi? (pelatihan, validasi, tes)

61

Saat Anda mencoba menyesuaikan model dengan set data besar, saran umum adalah untuk membagi data menjadi tiga bagian: pelatihan, validasi, dan set data uji.

Ini karena model biasanya memiliki tiga "level" parameter: "parameter" pertama adalah kelas model (misalnya SVM, jaringan saraf, hutan acak), set parameter kedua adalah parameter "regularisasi" atau "hyperparameters" ( misalnya koefisien penalti laso, pilihan kernel, struktur jaringan saraf) dan set ketiga adalah apa yang biasanya dianggap sebagai "parameter" (misalnya koefisien untuk kovariat.)

Diberikan kelas model dan pilihan hiperparameter, seseorang memilih parameter dengan memilih parameter yang meminimalkan kesalahan pada set pelatihan. Diberikan kelas model, satu menyetel hyperparameters dengan meminimalkan kesalahan pada set validasi. Seseorang memilih kelas model berdasarkan kinerja pada set tes.

Tetapi mengapa tidak lebih banyak partisi? Seringkali seseorang dapat membagi hyperparameter menjadi dua kelompok, dan menggunakan "validasi 1" agar sesuai dengan yang pertama dan "validasi 2" agar sesuai dengan yang kedua. Atau seseorang bahkan bisa memperlakukan ukuran data pelatihan / validasi data sebagai hyperparameter yang akan disetel.

Apakah ini sudah menjadi praktik yang umum di beberapa aplikasi? Apakah ada pekerjaan teoretis tentang pembagian data yang optimal?

charles.y.zheng
sumber

Jawaban:

79

Pertama, saya pikir Anda salah tentang apa yang dilakukan tiga partisi. Anda tidak membuat pilihan berdasarkan data tes. Algoritme Anda menyesuaikan parameternya berdasarkan data pelatihan. Anda kemudian menjalankannya pada data validasi untuk membandingkan algoritme Anda (dan parameter terlatihnya) dan memutuskan seorang pemenang. Anda kemudian menjalankan pemenang pada data pengujian Anda untuk memberi Anda perkiraan seberapa baik itu akan dilakukan di dunia nyata.

Anda tidak memvalidasi data pelatihan karena itu akan sesuai dengan model Anda. Anda tidak berhenti pada skor pemenang langkah validasi karena Anda telah berulang kali menyesuaikan hal-hal untuk mendapatkan pemenang dalam langkah validasi, dan karenanya Anda memerlukan tes independen (yang belum Anda sesuaikan secara spesifik) untuk memberi Anda gagasan tentang seberapa baik Anda akan melakukannya di luar arena saat ini.

Kedua, 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, karenanya CV.

Wayne
sumber
2
Masalah konseptual yang saya miliki adalah bahwa jika Anda membandingkan model yang cukup, Anda secara efektif menyesuaikan data validasi ketika Anda "memutuskan pemenang" menggunakan data validasi. Oleh karena itu masih dapat menjadi titik dalam mempartisi data validasi.
charles.y.zheng
Saya berpikir bahwa lapisan validasi pelatihan dan lapisan pengujian validasi melayani tujuan yang berbeda dalam beberapa hal, dan bahwa Anda akhirnya harus membandingkan model pada set validasi umum jika Anda akan mendeklarasikan pemenang. Jadi saya tidak yakin bahwa lapisan tambahan membantu. (Meskipun pengetahuan saya tidak cukup dalam untuk benar-benar tahu.) Hal terdekat yang dapat saya pikirkan dari saran Anda adalah bagaimana kompetisi Netflix dijalankan. Saya percaya mereka menggunakan set tes parsial untuk menjaga tim dari mendaki gradien set tes, tapi saya pikir itu berbeda.
Wayne
2
@ user10882, komentar Anda tidak benar, begitu pula Firebugs. Parameter model (1) (bobot, ambang batas) dan (2) yang disebut parameter "hiper" (jumlah lapisan tersembunyi, jumlah pohon keputusan), mungkin memiliki interpretasi dan nuansa yang sangat berbeda, tetapi semuanya hanyalah parameter yang membedakan antara berbagai model . Gunakan data pelatihan untuk mengoptimalkan semuanya, gunakan data validasi untuk menghindari pemasangan berlebihan dan gunakan validasi silang untuk memastikan hasil Anda stabil. Data uji hanya berfungsi untuk menentukan kinerja yang diharapkan dari model Anda, jangan menggunakannya untuk menerima / menolaknya.
Ytsen de Boer
1
@RubenvanBergen: Saya mengerti apa yang Anda katakan dan itu baik dan berguna untuk menunjukkannya ke user10882. Tetapi saya masih berpendapat bahwa ini pada akhirnya adalah masalah teknis. Katakanlah Anda menggunakan algoritma gradient descent yang menggunakan data pelatihan untuk menyimpulkan arah langkah (termasuk derajat polinomial ) bersama-sama dengan prosedur validasi yang menambahkan kehilangan validasi ke hilangnya pelatihan di setiap langkah dari algoritma gradient descent (mirip dengan awal henti). Sekarang perbedaan antara "normal" atau "hiper" tidak relevan lagi: itu tergantung pada prosedur. n
Ytsen de Boer
1
@YtsendeBoer: Cukup adil - jika Anda menggunakan sth seperti berhenti awal berbasis validasi maka saya setuju batas menjadi kabur, setidaknya dalam hal prosedur optimasi. Menurut saya ini tidak sepenuhnya menggabungkan konsep "hyperparameter" dengan yang biasa sekalipun. Masih ada banyak situasi di mana mereka diperlakukan secara berbeda, dan saya juga memikirkan mereka secara berbeda dalam hal peran mereka dalam mendefinisikan model. Bagaimanapun, saya berharap diskusi ini bermanfaat bagi orang lain untuk menggambarkan perbedaan (kesamaan) antara kedua konsep ini =).
Ruben van Bergen
0

Ini adalah pertanyaan yang menarik, dan saya merasa terbantu dengan jawaban dari @Wayne.

Dari pemahaman saya, membagi dataset menjadi partisi yang berbeda tergantung pada tujuan penulis, dan persyaratan model dalam aplikasi dunia nyata.

Biasanya kami memiliki dua lembar data: pelatihan dan pengujian. Pelatihan yang digunakan untuk menemukan parameter model, atau agar sesuai dengan model. Pengujian satu digunakan untuk mengevaluasi kinerja model dalam data yang tidak terlihat (atau data dunia nyata).

Jika kita hanya melakukan satu langkah dalam pelatihan, jelas bahwa ada proses pelatihan dan pengujian (atau validasi).

Namun, dengan cara ini, ini dapat meningkatkan masalah pemasangan berlebihan ketika model dilatih dengan satu dataset, sekali pakai. Ini dapat menyebabkan ketidakstabilan model dalam masalah dunia nyata. Salah satu cara untuk mengatasi masalah ini adalah dengan cross-validate (CV) model dalam dataset pelatihan. Itu artinya, kami membagi pelatihan datset menjadi lipatan yang berbeda, menyimpan satu lipatan untuk menguji model yang dilatih dengan lipatan lainnya. Pemenang sekarang adalah yang memberikan kerugian minimum (berdasarkan fungsi objektif kami sendiri) dalam keseluruhan proses CV. Dengan melakukan cara ini, kami dapat memastikan bahwa kami meminimalkan kemungkinan over fitting dalam proses pelatihan, dan memilih pemenang yang tepat. Set tes lagi digunakan untuk mengevaluasi pemenang dalam data yang tidak terlihat.

Dao Vu Hoang
sumber