Dalam halaman Wikipedia ini di sub-bagian untuk validasi silang K-fold dikatakan "Dalam validasi silang k-fold, sampel asli dipartisi secara acak menjadi k sebagai subsampel dengan ukuran yang sama. Dari sampel k, subsampel tunggal dipertahankan sebagai data validasi untuk menguji model, dan sisa sampel k - 1 digunakan sebagai data pelatihan ". Data uji tidak ada dalam gambar sama sekali.
Sedangkan dalam buku yang saya baca penulis menunjukkan dengan jelas
- Data lengkap dibagi menjadi tiga set: Set pelatihan, set tes, dan set validasi (atau subsampel dalam bahasa Wikipedias).
- Dari subsampel k, satu subsampel dipertahankan sebagai data validasi, satu subsampel lainnya dipertahankan sebagai data uji, dan subsampel k-2 digunakan sebagai data pelatihan.
Yang mana yang benar?
Jawaban:
Keduanya benar dalam konteks mereka sendiri. Mereka menggambarkan dua cara pemilihan model dalam situasi yang berbeda.
Secara umum, ketika Anda melakukan pemilihan dan pengujian model, data Anda dibagi menjadi tiga bagian, perangkat pelatihan, perangkat validasi dan perangkat pengujian. Anda menggunakan set pelatihan Anda untuk melatih model yang berbeda, memperkirakan kinerja pada set validasi Anda, lalu pilih model dengan kinerja optimal dan mengujinya pada set pengujian Anda.
Di sisi lain, jika Anda menggunakan validasi silang K-fold untuk memperkirakan kinerja suatu model, data Anda kemudian dibagi menjadi K fold, Anda mengulangi lipatan K dan setiap kali menggunakan satu lipatan sebagai pengujian (atau validasi) atur dan gunakan lipatan sisanya (K-1) sebagai set latihan. Kemudian Anda rata-rata di semua lipatan untuk mendapatkan perkiraan kinerja pengujian model Anda. Inilah yang dimaksud halaman Wikipedia.
Tetapi perlu diingat bahwa ini untuk menguji model tertentu, jika Anda memiliki beberapa model kandidat dan ingin melakukan pemilihan model juga, Anda harus memilih model hanya dengan set pelatihan Anda untuk menghindari kesalahan logika melingkar yang halus ini.. Jadi, Anda selanjutnya membagi (K-1) lipatan 'data latihan' menjadi dua bagian, satu untuk pelatihan dan satu untuk validasi. Ini berarti Anda melakukan 'validasi silang' ekstra terlebih dahulu untuk memilih model optimal dalam lipatan (K-1), dan kemudian Anda menguji model optimal ini pada lipatan pengujian Anda. Dengan kata lain, Anda melakukan validasi silang dua tingkat, satu adalah validasi silang K-fold secara umum, dan dalam setiap loop validasi silang, ada validasi silang berlipat ganda (K-1) untuk pemilihan model. Kemudian Anda memiliki apa yang Anda nyatakan dalam pertanyaan Anda, 'Dari k subsampel satu subsampel dipertahankan sebagai data validasi, satu subsampel lainnya dipertahankan sebagai data uji, dan subsampel k-2 digunakan sebagai data pelatihan.'
sumber
Di sini saya menyatakan kembali apa yang saya kumpulkan dari jawaban @Yuanning dan komentar @cbeleites dalam bentuk pseudocode. Ini mungkin bermanfaat bagi orang-orang seperti saya.
Untuk mengukur kinerja model yang ditentukan, kita hanya perlu pelatihan dan set tes:
Tetapi jika kita perlu melakukan pemilihan model, kita harus melakukan ini:
sumber
k_performance
dimaksudkan untuk menjadi label untuk lipatan tertentu di antarak_select
lipatan kinerja jumlah total ? Saya kira ini pertanyaan Anda tentang "Cara memilih test_set". Saya juga akan menghargai umpan balik khusus tentang ini. Saya telah melihat ini validasi silang 'bersarang' untuk pemilihan model disinggung, tetapi tidak pernah dijelaskan secara rinci.