Saya agak bingung tentang pemilihan fitur dan pembelajaran mesin dan saya bertanya-tanya apakah Anda dapat membantu saya. Saya memiliki dataset microarray yang diklasifikasikan ke dalam dua kelompok dan memiliki ribuan fitur. Tujuan saya adalah mendapatkan sejumlah kecil gen (fitur saya) (10-20) dalam tanda tangan yang secara teori saya akan dapat terapkan pada set data lain untuk secara optimal mengklasifikasikan sampel-sampel itu. Karena saya tidak memiliki banyak sampel (<100), saya tidak menggunakan set tes dan pelatihan tetapi menggunakan validasi silang Leave-one-out untuk membantu menentukan ketahanan. Saya telah membaca bahwa seseorang harus melakukan pemilihan fitur untuk setiap split yaitu sampel
- Pilih satu sampel sebagai set tes
- Pada sampel yang tersisa melakukan pemilihan fitur
- Terapkan algoritma pembelajaran mesin ke sampel yang tersisa menggunakan fitur yang dipilih
- Tes apakah set tes diklasifikasikan dengan benar
- Pergi ke 1.
Jika Anda melakukan ini, Anda mungkin mendapatkan gen yang berbeda setiap kali, jadi bagaimana Anda mendapatkan penggolong gen optimal "final" Anda? yaitu apa langkah 6.
Yang saya maksud dengan optimal adalah kumpulan gen yang harus digunakan dalam studi lebih lanjut. Misalnya, saya memiliki dataset kanker / normal dan saya ingin menemukan 10 gen teratas yang akan mengklasifikasikan tipe tumor berdasarkan SVM. Saya ingin mengetahui set gen plus parameter SVM yang dapat digunakan dalam percobaan lebih lanjut untuk melihat apakah itu dapat digunakan sebagai tes diagnostik.
Jawaban:
Ini adalah pertanyaan yang sangat bagus yang saya hadapi ketika bekerja dengan data SNP ... Dan saya tidak menemukan jawaban yang jelas melalui literatur.
Apakah Anda menggunakan LOO atau K-fold CV, Anda akan berakhir dengan fitur yang berbeda karena iterasi lintas validasi harus merupakan loop paling luar, seperti yang Anda katakan. Anda dapat memikirkan beberapa jenis skema pemungutan suara yang akan menilai n-vektor fitur yang Anda dapatkan dari LOO-CV Anda (tidak dapat mengingat kertas tetapi perlu memeriksa karya Harald Binder atau Antoine Cornuéjols ). Dengan tidak adanya sampel uji baru, yang biasanya dilakukan adalah menerapkan kembali algoritma ML ke seluruh sampel setelah Anda menemukan parameter yang divalidasi silang yang optimal. Tetapi melanjutkan dengan cara ini, Anda tidak dapat memastikan bahwa tidak ada overfitting (karena sampel sudah digunakan untuk optimasi model).
Karena Anda berbicara tentang SVM, Anda dapat mencari SVM yang dihukum .
sumber
Pada prinsipnya:
Buat prediksi Anda menggunakan model tunggal yang dilatih pada seluruh dataset (jadi hanya ada satu set fitur). Validasi silang hanya digunakan untuk memperkirakan kinerja prediksi model tunggal yang dilatih pada seluruh dataset. Adalah VITAL dalam menggunakan validasi silang bahwa dalam setiap lipatan Anda mengulangi seluruh prosedur yang digunakan agar sesuai dengan model utama, karena jika tidak, Anda dapat berakhir dengan bias optimis yang substansial dalam kinerja.
Untuk melihat mengapa hal ini terjadi, pertimbangkan masalah klasifikasi biner dengan 1000 fitur biner tetapi hanya 100 kasus, di mana case dan fitur semuanya murni acak, sehingga tidak ada hubungan statistik antara fitur dan case sama sekali. Jika kita melatih model utama pada dataset lengkap, kita selalu dapat mencapai nol kesalahan pada set pelatihan karena ada lebih banyak fitur daripada kasus. Kami bahkan dapat menemukan subset fitur "informatif" (yang kebetulan dikorelasikan secara kebetulan). Jika kami kemudian melakukan validasi silang dengan hanya menggunakan fitur-fitur itu, kami akan mendapatkan perkiraan kinerja yang lebih baik daripada menebak secara acak. Alasannya adalah bahwa dalam setiap lipatan prosedur validasi silang ada beberapa informasi tentang kasus yang diadakan untuk pengujian karena fitur dipilih karena mereka baik untuk memprediksi, semuanya, termasuk yang diulurkan. Tentu saja tingkat kesalahan sebenarnya adalah 0,5.
Jika kami mengadopsi prosedur yang tepat, dan melakukan pemilihan fitur di setiap lipatan, tidak ada lagi informasi tentang case yang di tahan dalam pemilihan fitur yang digunakan di lipatan itu. Jika Anda menggunakan prosedur yang tepat, dalam hal ini, Anda akan mendapatkan tingkat kesalahan sekitar 0,5 (meskipun akan sedikit berbeda untuk realisasi yang berbeda dari dataset).
Makalah yang baik untuk dibaca adalah:
Christophe Ambroise, Geoffrey J. McLachlan, "Bias seleksi dalam ekstraksi gen berdasarkan data ekspresi gen microarray", PNAS http://www.pnas.org/content/99/10/6562.abstract
yang sangat relevan dengan OP dan
Gavin C. Cawley, Nicola LC Talbot, "Over-fitting dalam Seleksi Model dan Seleksi Bias Selanjutnya dalam Evaluasi Kinerja", JMLR 11 (Jul): 2079−2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html
yang menunjukkan bahwa hal yang sama dapat dengan mudah terjadi dalam pemilihan model (misalnya menyetel hiper-parameter dari SVM, yang juga perlu diulang dalam setiap iterasi dari prosedur CV).
Dalam praktek:
Saya akan merekomendasikan menggunakan Bagging, dan menggunakan kesalahan out-of-bag untuk memperkirakan kinerja. Anda akan mendapatkan model panitia menggunakan banyak fitur, tetapi itu sebenarnya adalah hal yang baik. Jika Anda hanya menggunakan model tunggal, kemungkinan besar Anda akan memenuhi kriteria pemilihan fitur, dan berakhir dengan model yang memberikan prediksi lebih buruk daripada model yang menggunakan lebih banyak fitur.
Buku Alan Millers tentang pemilihan subset dalam regresi (Chapman dan Hall monograf tentang statistik dan probabilitas terapan, volume 95) memberikan sedikit nasihat yang baik (halaman 221) bahwa jika kinerja prediktif adalah hal yang paling penting, maka jangan lakukan pemilihan fitur apa pun. , cukup gunakan regresi ridge saja. Dan itu ada dalam sebuah buku tentang pilihan subset !!! ;Hai)
sumber
Untuk menambahkan ke chl: Ketika menggunakan mesin-mesin vektor dukungan, metode hukuman yang sangat direkomendasikan adalah jaring elastis. Metode ini akan mengecilkan koefisien ke nol, dan secara teori mempertahankan koefisien paling stabil dalam model. Awalnya ini digunakan dalam kerangka regresi, tetapi mudah diperluas untuk digunakan dengan mesin vektor dukungan.
Publikasi asli : Zou dan Hastie (2005): Regularisasi dan pemilihan variabel melalui jaring elastis. JRStatist.Soc. B, 67-2, hal.301-320
Jaring elastis untuk SVM : Zhu & Zou (2007): Pilihan Variabel untuk Mesin Vektor Pendukung: Tren dalam Neural Computation, bab 2 (Editor: Chen dan Wang)
perbaikan pada jaring elastis Jun-Tao dan Ying-Min (2010): Suatu jaring elastis ditingkatkan untuk Klasifikasi Kanker dan Seleksi Gen: Acta Automatica Sinica, 36-7, hal.976-981
sumber
Sebagai langkah 6 (atau 0) Anda menjalankan algoritme deteksi fitur pada seluruh kumpulan data.
sumber
Ini adalah bagaimana saya memilih fitur. Misalkan berdasarkan pengetahuan tertentu, ada 2 model untuk dibandingkan. Model A menggunakan fitur no.1 hingga no. 10. Model B menggunakan no. 11 sampai no. 20. Saya akan menerapkan LOO CV ke model A untuk mendapatkan kinerja out-of-sample. Lakukan hal yang sama pada model B dan kemudian bandingkan.
sumber
Saya tidak yakin tentang masalah klasifikasi, tetapi dalam kasus pemilihan fitur untuk masalah regresi, Jun Shao menunjukkan bahwa CV Leave-One-Out tidak konsisten secara asimptot , yaitu kemungkinan memilih subset fitur yang tepat tidak menyatu menjadi 1 seperti jumlah sampel meningkat. Dari sudut pandang praktis, Shao merekomendasikan validasi silang Monte-Carlo, atau prosedur cuti.
sumber