Pemilihan fitur untuk model "final" saat melakukan validasi silang dalam pembelajaran mesin

76

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

  1. Pilih satu sampel sebagai set tes
  2. Pada sampel yang tersisa melakukan pemilihan fitur
  3. Terapkan algoritma pembelajaran mesin ke sampel yang tersisa menggunakan fitur yang dipilih
  4. Tes apakah set tes diklasifikasikan dengan benar
  5. 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.

danielsbrewer
sumber
Saya harus mengatakan untuk pengungkapan penuh bahwa saya telah memposting ini ke daftar
biokonduktor
Harap rangkum setiap hasil biokonduktor di sini?
Shane

Jawaban:

39

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

np

  1. Cutler, A., Cutler, DR, dan Stevens, JR (2009). Metode Berbasis Pohon, dalam Analisis Data Dimensi Tinggi dalam Penelitian Kanker , Li, X. dan Xu, R. (eds.), Hlm. 83-101, Springer.
  2. Saeys, Y., Inza, I., dan Larrañaga, P. (2007). Tinjauan teknik pemilihan fitur dalam bioinformatika. Bioinformatika , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). Seleksi gen dan klasifikasi data microarray menggunakan hutan acak. BMC Bioinformatics , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF dan varSelRF: alat berbasis web dan paket R untuk pemilihan dan klasifikasi gen menggunakan hutan acak. BMC Bioinformatics , 8 : 328

Karena Anda berbicara tentang SVM, Anda dapat mencari SVM yang dihukum .

chl
sumber
Terima kasih untuk itu. Saya tidak khusus dijual di SVM, hanya menggunakan itu sebagai contoh. Jadi jika Anda menggunakan pohon acak, Anda tidak perlu melakukan validasi silang? Apakah itu benar.
danielsbrewer
7
p
3
Adalah penting bahwa itu disebut Hutan Acak bukan Pohon Acak; Anda mungkin memiliki masalah dengan Google.
1
+1, jawaban yang baik dan kebetulan bagi saya - terima kasih banyak untuk referensi makalah, terutama review.
ars
Dengan data yang cukup, bukankah lebih baik untuk mengadakan set tes, melakukan loocv pada set pelatihan untuk mengoptimalkan parameter model, menyesuaikan seluruh rangkaian kereta api (dan menyebut bahwa "final" classifier), dan kemudian mengevaluasi model akhir di set tes?
user0
40

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)

Dikran Marsupial
sumber
17

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

Joris Meys
sumber
9

Sebagai langkah 6 (atau 0) Anda menjalankan algoritme deteksi fitur pada seluruh kumpulan data.

n1n

Aniko
sumber
Saya pikir masih ada masalah generalisasi ketika menggunakan sampel yang sama (1) untuk menilai klasifikasi / kinerja prediksi classifier sambil menyetel parameternya (akhirnya, dengan pemilihan fitur) dan (2) menggunakan prediksi pada seluruh kumpulan data. Bahkan, Anda melanggar kontrol yang diberikan pada overfitting yang diuraikan menggunakan cross-validation. Hastie et al. memberikan ilustrasi yang bagus tentang perangkap CV, esp. wrt. pemilihan fitur, dalam buku ESL mereka, § 7.10.2 dalam edisi ke-2.
chl
@ chl: siapa yang mengatakan sesuatu tentang parameter tuning? Jika hal-hal tambahan dilakukan, mereka harus diulangi selama cross-validasi juga. Jelas memodifikasi algoritma Anda sampai Anda mendapatkan tingkat kesalahan yang divalidasi silang yang baik adalah "curang". BTW, saya setuju bahwa validasi silang, terutama cuti satu, tidak terlalu bagus.
Aniko
bukan itu tidak curang, karena CV menunjukkan kepada Anda perkiraan bagaimana kinerja algoritma pada data baru. Anda hanya perlu memastikan bahwa Anda belum menentukan sesuatu berdasarkan seluruh rangkaian (ini adalah bocoran informasi tentang struktur set lengkap, sehingga dapat langsung membiaskan semua bagian kereta).
@mbq - Ankino benar, menyetel model Anda untuk meminimalkan statistik CV "curang" dan statistik CV dari model akhir akan memiliki bias optimis yang substansial. Alasan untuk ini adalah bahwa statistik CV memiliki varian yang tidak dapat diabaikan (seperti dievaluasi pada set data yang terbatas) dan dengan demikian jika Anda secara langsung mengoptimalkan statistik CV Anda dapat menyesuaikannya secara berlebihan dan Anda dapat berakhir dengan sebuah model yang secara umum kurang baik daripada yang Anda mulai. Untuk peragaan ini, dalam konteks pembelajaran mesin, lihat jmlr.csail.mit.edu/papers/v11/cawley10a.html Solusi: Gunakan XVAL bersarang
Dikran Marsupial
1

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.

FMZ
sumber
-1

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.

shabbychef
sumber
Ya ampun, lagi-lagi; sudahkah Anda membaca judul artikel ini?
2
Oke, harus jelas - saya tidak mengatakan LOOCV adalah ide yang bagus untuk sejumlah besar objek; jelas tidak, tapi Shao tidak berlaku di sini. Memang dalam kebanyakan kasus aturan untuk LM tidak berlaku untuk ML.
1
Juga dipertanyakan apakah hasil asimptotik praktis digunakan ketika melihat dataset dengan sejumlah besar fitur dan pola yang relatif sedikit. Dalam hal ini varians prosedur cenderung lebih penting secara praktis daripada bias atau konsistensi. Nilai utama LOOCV adalah bahwa untuk banyak model dapat diimplementasikan dengan biaya komputasi yang dapat diabaikan, sehingga meskipun memiliki varian yang lebih tinggi daripada mengatakan bootstrap, itu mungkin satu-satunya pendekatan yang layak dalam anggaran komputasi yang tersedia. Itu sebabnya saya menggunakannya, tetapi saya menggunakan sesuatu yang lain untuk evaluasi kinerja!
Dikran Marsupial