Apakah menggunakan data yang sama untuk pemilihan fitur dan validasi silang bias atau tidak?

8

Kami memiliki kumpulan data kecil (sekitar 250 sampel * 100 fitur) yang kami inginkan untuk membangun klasifikasi biner setelah memilih subset fitur terbaik. Katakanlah bahwa kita mempartisi data menjadi:

Pelatihan, Validasi dan Pengujian

Untuk pemilihan fitur, kami menerapkan model pembungkus berdasarkan pada pemilihan fitur yang mengoptimalkan kinerja pengklasifikasi X, Y dan Z, secara terpisah. Dalam langkah pra-pemrosesan ini, kami menggunakan data pelatihan untuk melatih pengklasifikasi dan data validasi untuk mengevaluasi setiap subset fitur kandidat.

Pada akhirnya, kami ingin membandingkan berbagai pengklasifikasi (X, Y dan Z). Tentu saja, kita dapat menggunakan bagian pengujian data untuk memiliki perbandingan dan evaluasi yang adil. Namun dalam kasus saya, data pengujian akan sangat kecil (sekitar 10 hingga 20 sampel) dan dengan demikian, saya ingin menerapkan cross-validation untuk mengevaluasi model.

Distribusi contoh positif dan negatif sangat tidak seimbang (sekitar 8: 2). Jadi, validasi silang dapat salah mengarahkan kami dalam mengevaluasi kinerja. Untuk mengatasi ini, kami berencana untuk memiliki bagian pengujian (10-20 sampel) sebagai metode perbandingan kedua dan untuk memvalidasi cross-validasi.

Singkatnya, kami mempartisi data menjadi pelatihan, validasi, dan pengujian. Bagian pelatihan dan validasi akan digunakan untuk pemilihan fitur. Kemudian, validasi silang atas data yang sama akan diterapkan untuk memperkirakan model. Akhirnya, pengujian digunakan untuk memvalidasi cross-validasi mengingat ketidakseimbangan data.

Pertanyaannya adalah: Jika kita menggunakan data yang sama (pelatihan + validasi) yang digunakan dalam memilih fitur yang mengoptimalkan kinerja pengklasifikasi X, Y dan Z, dapatkah kita menerapkan validasi silang atas data yang sama (pelatihan + validasi) yang digunakan untuk pemilihan fitur untuk mengukur kinerja akhir dan membandingkan pengklasifikasi?

Saya tidak tahu apakah pengaturan ini dapat mengarah pada ukuran validasi silang yang bias dan menghasilkan perbandingan yang tidak dapat dibenarkan atau tidak.

soufanom
sumber
4
Crossvalidated.com menangani jenis pertanyaan ini dengan tepat. Saya sarankan Q ini dipindahkan ke sana.
Roman Luštrik
Satu saran adalah menerapkan bootstrap (dari pelatihan + validasi saja) pada data alih-alih cross-validation. Apakah ini akan menyelesaikan masalah bias yang dinyatakan dalam pertanyaan? Masih tidak yakin !!
soufanom
3
Ya, itu bias - menelusuri Qs di tag pemilihan fitur di situs ini, terutama yang ini , atau bahkan halaman Wikipedia tentang CV .
1
Sepakat. Anda dapat menerapkan desain ke set data yang disimulasikan secara acak dan memperkirakan seberapa besar bias yang ada. Tetapi saya akan merekomendasikan LOOCV seperti yang disarankan oleh satu jawaban.
Steve P

Jawaban:

5

saya pikir itu bias. Bagaimana dengan menerapkan FS pada partisi N-1 dan menguji pada partisi terakhir. dan menggabungkan fitur-fitur dari semua lipatan dengan cara tertentu (gabungan / persimpangan / atau cara tertentu yang bermasalah).

tanvir
sumber
Meninggalkan bagian untuk pengujian telah dijelaskan di pos. Juga, seperti yang dijelaskan cross-validasi diperlukan untuk membandingkan model. Dengan demikian, tidak mungkin untuk menerapkannya untuk pemilihan fitur kecuali kita menggunakan ide validasi silang bersarang. Namun, kumpulan data sangat kecil dan sulit untuk menerapkan validasi silang bersarang.
soufanom
6

Jawaban sederhananya adalah Anda harus melakukan pemilihan fitur pada dataset berbeda dari yang Anda latih (Anda sudah melakukan ini, jadi jangan ubah ini) --- efek dari tidak melakukan ini adalah Anda akan menyesuaikan data pelatihan Anda. Anda juga tidak boleh melakukan pemilihan fitur pada set pengujian Anda, karena ini akan meningkatkan perkiraan kinerja model Anda (saya pikir Anda sudah menyadari hal ini juga, tetapi saya merasa agak sulit untuk memahami pertanyaannya dengan tepat).

Jika Anda telah membagi set tes Anda menjadi pelatihan, validasi dan pengujian, maka tidak ada alasan khusus untuk melakukan validasi silang kecuali Anda memiliki sedikit data sehingga set tes Anda terlalu kecil untuk menarik kesimpulan yang kuat. Banyak peneliti tidak menyukai validasi silang karena jika digunakan untuk mendorong pengembangan model (maksud saya, Anda men-tweak hal-hal, kemudian menjalankan validasi silang untuk melihat bagaimana mereka melakukannya, kemudian men-tweak mereka lagi dll.) Anda secara efektif memiliki akses ke tes Anda data dan ini dapat membuat Anda melebih-lebihkan kinerja Anda pada data yang benar-benar tak terlihat. Jika data Anda sangat kecil sehingga Anda tidak punya pilihan selain melakukan validasi silang, cara yang benar untuk melakukan ini dengan pelatihan, dev, dan set tes adalah dengan secara eksplisit membagi data Anda menjadi tiga bagian untuk setiap lipatan --- mayoritas harus digunakan untuk latihan, beberapa untuk pengembangan (pemilihan fitur dalam kasus Anda, ditambah parameter gratis lainnya yang perlu pas) dan akhirnya Anda harus menguji pada bagian tes. Anda kemudian dapat skor rata-rata di seluruh bagian tes ini untuk mendapatkan perkiraan kinerja model: namun, seperti yang saya katakan, berhati-hatilah bahwa jika skor ini digunakan untuk memandu Anda ke pendekatan yang ingin Anda gunakan untuk masalah Anda, Anda seharusnya tidak mengharapkan untuk mendapatkan skor yang sama pada data tak terlihat yang Anda lakukan dari validasi silang Anda.


sumber
finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance Untuk memahami kinerja pengklasifikasi, ini harus digunakan pada data uji yang belum pernah dilihat atau digunakan sebelumnya. Cara saya melihatnya jika Anda membuat keputusan berdasarkan kinerja algoritma pada beberapa set data maka set data ini adalah pelatihan atau validasi silang, dalam keadaan apa pun itu tidak boleh disebut set data uji.
Ivan
Perhatikan bahwa saya tidak mengatakan bahwa Anda harus melakukan pemilihan fitur pada data pengujian Anda --- untuk setiap lipatan, Anda membuat bagian pelatihan, pengembangan dan pengujian. Anda melatih pada pelatihan Anda, menetapkan parameter gratis dan melakukan pemilihan fitur pada pengembangan Anda, dan kemudian menerapkan model belajar akhir untuk data uji. Seperti yang saya bahas di atas, praktik ini tidak ideal, tetapi Anda tidak secara eksplisit menggunakan data uji untuk menetapkan parameter (untuk setiap lipatan, data tes buta sampai model diperbaiki, Anda hanya bisa merayap melewati lipatan)
Saya pikir kami sepakat pada hal yang sama, saya hanya ingin menjelaskan perbedaan antara data tes dan C / V. Pemilihan model sama dengan pemilihan parameter sehingga yang terbaik adalah jika data uji disingkirkan dan tidak digunakan sama sekali. Setelah melakukan itu, Anda dapat dengan aman melaporkan kinerja yang diharapkan dari model yang dipilih pada data baru yang tidak terlihat.
Ivan
1

Apakah Anda mencoba LOOCV? Saya pikir itu tepat untuk melatih, ketika Anda memiliki data pelatihan yang sangat sedikit. Untuk menjawab pertanyaan Anda, itu tidak akan memberi Anda hasil terbaik hanya karena itu bisa sesuai dan memberi Anda hasil yang menyesatkan, sehingga pengklasifikasi Anda tidak akan bekerja dengan baik pada data lain, yang belum terlihat.

madCode
sumber
LOOCV pada akhirnya hanyalah semacam cross-validation. Kami membutuhkan solusi untuk masalah di mana kami memiliki data kecil, kami ingin memilih fitur yang baik dan akhirnya memiliki ukuran yang representatif untuk mengevaluasi kinerja.
soufanom
0

Anda dapat melakukan hal berikut untuk membandingkan kinerja pengklasifikasi

Ambil set pelatihan Anda dan latihlah pada setiap set fitur yang memungkinkan. Untuk setiap set fitur, meminimalkan parameter dan membangun model sehingga sesuai dengan set pelatihan dengan baik. Sekarang, setelah model dibangun untuk semua set fitur, yaitu Anda memiliki model untuk setiap set fitur, validasi model (dibangun di atas set fitur yang berbeda) pada set validasi dan pilih model itu (dibangun untuk subset set fitur tertentu ) yang memberikan kesalahan minimum pada set validasi. Dengan cara ini, Anda memastikan bahwa model yang dibangun telah cocok tidak hanya dengan perangkat pelatihan tetapi juga perangkat validasi.

Sekarang, ambil model buatan ini dan ujilah pada set pengujian. Ini akan memberi tahu Anda seberapa baik kinerja pengklasifikasi setelah dijalankan pada kumpulan data yang tidak digunakan untuk pelatihan atau untuk validasi. Juga, Anda telah memilih set fitur yang sesuai dengan set pelatihan dan juga set validasi dengan baik.

Pria London
sumber
1
Untuk model pemilihan fitur pembungkus, set data pelatihan dan validasi harus didukung. Dalam model pembungkus, kami melatih dan menguji classifier yang diberikan subset fitur kandidat. Dengan demikian, hanya memberikan satu set pelatihan untuk model ini tidak cukup. Pertanyaannya adalah: jika data yang sama digunakan untuk pemilihan fitur digunakan untuk perbandingan tetapi menggunakan CV, apakah kita masih bias dan pada tingkat mana?
soufanom
0

Jika mungkin yang terbaik adalah menahan beberapa data untuk validasi silang tambahan. Misalnya Anda dapat menggunakannya untuk memvalidasi algoritma Anda dengan membangun kurva belajar. Kurva ini harus dibangun di atas kumpulan data yang belum pernah digunakan sebelumnya.

Bahkan jika Anda hanya ingin memilih algoritma yang memberi Anda skor F1 tertinggi, Anda harus menggunakan set data validasi silang tambahan untuk melakukannya. Kumpulan uji harus disediakan untuk melaporkan keakuratan akhir solusi Anda (kinerja yang diharapkan dari pengklasifikasi yang dipilih pada data yang tidak terlihat).

Ivan
sumber
Jawaban Anda dinyatakan dalam pertanyaan saya sebagai teknik yang saya ketahui. Pertanyaannya adalah tentang menggunakan data yang sama untuk pemilihan fitur dan validasi silang !!
soufanom
@soufanom Saya menulis bahwa Anda memerlukan data validasi lintas tambahan yang ditetapkan untuk memilih pengklasifikasi berkinerja terbaik, jika tidak, hasil Anda tidak akan dapat diandalkan. Bagaimana Anda bisa menilai kinerja model dengan menjalankannya pada kumpulan data yang digunakan untuk melatih model atau untuk memilih parameter. IMHO satu-satunya cara yang dapat diandalkan untuk menilai kinerja dari setiap classifier adalah dengan menjalankannya pada data yang sebelumnya tidak terlihat. Saya harap ini menjawab pertanyaan Anda, jika tidak silakan perbaiki dan tambahkan informasi lebih lanjut.
Ivan
0

Ini dapat menjadi sangat berat sebelah, merujuk ke bab validasi model dalam "Elemen Pembelajaran Statistik", Hal ini dapat membuat akurasi model cv di atas 70% sedangkan tingkat kesalahan sebenarnya dari setiap model harus 50% (fitur independen dari kelas ).

Lily Long
sumber