Dalam validasi silang k-fold, apakah pelatihan subsampel mencakup set tes?

9

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

  1. Data lengkap dibagi menjadi tiga set: Set pelatihan, set tes, dan set validasi (atau subsampel dalam bahasa Wikipedias).
  2. 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?

ozi
sumber
Catatan samping: "validasi" memiliki arti berbeda di berbagai bidang. Beberapa penulis menggunakannya untuk menunjukkan jenis pengujian yang digunakan untuk memilih model (saya sarankan bahwa set tes optimasi akan lebih intuitif), sedangkan di bidang lain validasi berarti menunjukkan bahwa model akhir sesuai untuk tujuannya.
cbeleites tidak senang dengan SX

Jawaban:

11

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.'

Yuanning
sumber
1
Validasi silang dua tingkat juga dikenal sebagai validasi silang ganda atau bersarang. Walaupun CV bersarang dan strategi split-menjadi-3-set serupa dalam hal keduanya menggunakan satu set tes untuk seleksi / optimisasi dan yang lainnya untuk menilai kinerja model yang dioptimalkan, mereka tidak sama: validasi k-fold cross nested k * k '(biasanya = k - 1) * tidak. dari model pengganti kombinasi hiperparameter yang diuji, strategi 3-set langsung hanya satu untuk setiap kombinasi hiperparameter.
cbeleites tidak senang dengan SX
(Kutipan Wiki tidak berbicara tentang tujuan validasi sama sekali yang mungkin berbeda dari seleksi.)
cbeleites tidak senang dengan SX
dapatkah Anda mengkonfirmasi kode pseudocode saya?
ozi
1

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:

function measure_performance(model, full_test_set, k_performance):
    subset_list <- divide full_test_set into k_performance subsets
    performances <- empty array
    for each sub_set in subset_list:
        test_set <- sub_set
        training_set <- the rest of the full_test_set
        model <- train model with training_set
        performance <- test model with test_set
        append performance to performances
    end for each
    return mean of the values in peformances
end function

Tetapi jika kita perlu melakukan pemilihan model, kita harus melakukan ini:

function select_model(data, k_select, k_performance):
    subset_list <- divide data into k_select subsets
    performances <- empty array
    for each sub_set in subset_list:
        validation_set <- assume that this sub_set is validation set
        test_set <- one other random sub_set (Question: How to select test_set)
        training_set <- assume remaining as training set
        model <- get a model with the help of training_set and validation_set
        performance <- measure_performance(model,test_set, k_performance)
    end for each
    return model with the best performance (for this, performances will be scanned)
end function
ozi
sumber
Apakah k_performancedimaksudkan untuk menjadi label untuk lipatan tertentu di antara k_selectlipatan 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.
clarpaul
Dalam konteks validasi silang, masalah pemilihan model hanya berdasarkan pada data pelatihan (bahkan jika validasi silang dalam data itu) secara khusus diartikulasikan di sini: en.wikipedia.org/wiki/… . Penegasan (berdasarkan beberapa referensi) adalah bahwa perkiraan kinerja yang divalidasi silang yang sepenuhnya didasarkan pada data pelatihan tunduk pada varians yang tinggi (yaitu, sehubungan dengan pilihan data pelatihan), terlepas dari prosedur validasi silang.
clarpaul