Latar belakang masalah: Sebagai bagian dari penelitian saya, saya telah menulis dua algoritma yang dapat memilih satu set fitur dari set data (data ekspresi gen dari pasien kanker). Fitur-fitur ini kemudian diuji untuk melihat seberapa baik mereka dapat mengklasifikasikan sampel yang tidak terlihat sebagai kanker atau non-kanker. Untuk setiap rangkaian algoritma, solusi (serangkaian fitur) dihasilkan dan diuji pada sampel Z yang tidak terlihat. Akurasi persentase dari solusi dihitung seperti ini: (correct classifications / Z) * 100
.
Saya memiliki dua algoritma: algoritma X & algoritma Y
Saya memiliki tiga set data yang berbeda (kanker berbeda): set data A, set data B & set data C. Set data ini sangat berbeda satu sama lain. Mereka tidak memiliki jumlah sampel yang sama atau jumlah pengukuran (fitur) yang sama per sampel.
Saya telah menjalankan setiap algoritma 10 kali pada setiap set data. Jadi, algoritma X memiliki 10 hasil dari kumpulan data A, 10 dari kumpulan data B dan 10 dari kumpulan data C. Secara keseluruhan, algoritma X memiliki 30 hasil.
Masalah saya: Saya ingin melihat apakah kinerja gabungan algoritma X di ketiga set data berbeda secara statistik dari kinerja gabungan algoritma Y.
Apakah mungkin bagi saya untuk menggabungkan hasil untuk algoritma X dari setiap set data menjadi satu set hasil tunggal? Dengan cara ini, saya akan memiliki 30 hasil standar untuk algoritma X dan 30 hasil standar untuk algoritma Y. Saya kemudian dapat menggunakan uji-t untuk melihat apakah ada perbedaan yang signifikan antara kedua metode.
Sunting - Ini adalah Algoritma Evolusi, sehingga mereka mengembalikan solusi yang sedikit berbeda setiap kali dijalankan. Namun, jika ada fitur dalam sampel yang ketika ada dapat dengan kuat mengklasifikasikan sampel sebagai kanker atau non-kanker, maka fitur tersebut akan dipilih hampir setiap kali algoritma dijalankan.
Saya mendapatkan hasil yang sedikit berbeda untuk masing-masing 10 run karena alasan berikut:
- Algoritma ini diunggulkan secara acak.
- Saya menggunakan validasi sub-sampling acak berulang (10 repeats).
- Kumpulan data yang saya gunakan (DNA microarray dan Proteomics) sangat sulit untuk dikerjakan dalam arti bahwa ada banyak optima lokal yang bisa terjebak oleh algoritma.
- Ada banyak interaksi antar fitur dan antar subset yang ingin saya deteksi.
- Saya melatih 50 kromosom dan tidak terbatas pada panjang tertentu. Mereka bebas untuk tumbuh dan menyusut (meskipun tekanan seleksi memandu mereka menuju panjang yang lebih pendek). Ini juga memperkenalkan beberapa variasi pada hasil akhir.
Karena itu, algoritma hampir selalu memilih subset fitur tertentu!
Berikut adalah contoh hasil saya (hanya 4 yang kehabisan 10 untuk setiap algoritma ditunjukkan di sini):
Set data / jalankan Algoritma X Algoritma Y A 1 90,91 90,91 A 2 90,91 95,45 A 3 90,91 90,91 A 4 90,91 90,91 B 1 100 100 B 2 100 100 B 3 95.65 100 B 4 95.65 86.96 C 1 90.32 87.10 C 2 70.97 80.65 C 3 96.77 83.87 C 4 80.65 83.87
Seperti yang Anda lihat, saya telah mengumpulkan hasil untuk dua algoritma dari tiga dataset. Saya bisa melakukan tes Kruskal-Wallis pada data ini tetapi apakah itu valid? Saya menanyakan ini karena:
- Saya tidak yakin akurasi dalam set data yang berbeda sepadan. Jika tidak, maka menggabungkannya seperti yang telah saya lakukan akan menjadi tidak berarti dan setiap uji statistik yang dilakukan pada mereka juga tidak akan berarti.
- Ketika Anda menempatkan akurasi bersama-sama seperti ini, hasil keseluruhan rentan terhadap pencilan. Kinerja satu algoritma yang sangat baik pada satu dataset dapat menutupi kinerja rata-rata pada dataset lain.
Saya juga tidak bisa menggunakan uji-t, karena:
- Keterbandingan - uji-t hanya masuk akal ketika perbedaan atas set data sepadan.
- t-test mensyaratkan bahwa perbedaan antara kedua algoritma yang dibandingkan didistribusikan secara normal, tidak ada cara (setidaknya yang saya ketahui) untuk menjamin kondisi ini dalam kasus saya.
- uji-t dipengaruhi oleh pencilan yang memiringkan statistik uji dan mengurangi daya uji dengan meningkatkan perkiraan kesalahan standar.
Bagaimana menurut anda? Bagaimana saya bisa melakukan perbandingan antara algoritma X & Y dalam hal ini?
sumber
Jawaban:
Kecuali jika algoritme Anda memiliki perbedaan besar dalam kinerja dan Anda memiliki banyak kasus uji, Anda tidak akan dapat mendeteksi perbedaan hanya dengan melihat kinerjanya.
Namun, Anda dapat menggunakan desain apaired:
Untuk perbandingan, lihat tes McNemar . Gagasan di balik mengeksploitasi desain berpasangan di sini adalah bahwa semua kasus yang kedua algoritma benar dan yang keduanya salah tidak membantu Anda membedakan algoritma. Tetapi jika satu algoritma lebih baik dari yang lain, harus ada banyak kasus algoritma yang lebih baik benar tetapi tidak lebih buruk, dan beberapa yang diprediksi dengan benar oleh metode yang lebih buruk tetapi salah dengan yang lebih baik.
Juga, Cawley dan Talbot: On Over-fitting dalam Pemilihan Model dan Bias Seleksi Selanjutnya dalam Evaluasi Kinerja, JMLR, 2010, 1, 2079-2107. sangat relevan.
Karena aspek acak dari algoritma Anda, Anda juga ingin memeriksa pemisahan yang sama dari kumpulan data yang sama beberapa kali. Dari sana Anda dapat memperkirakan variasi antara berbagai proses yang berbeda. Mungkin sulit untuk menilai seberapa berbeda set variabel yang dipilih. Tetapi jika tujuan akhir Anda adalah kinerja prediktif, maka Anda juga dapat menggunakan variasi antara prediksi kasus uji yang sama selama proses berbeda untuk mengukur stabilitas model yang dihasilkan.
Anda juga akan ingin memeriksa variasi (seperti yang ditunjukkan di atas) karena perbedaan dari kumpulan data dan menghubungkannya dengan varian pertama.
Pecahan (seperti% sampel yang dikenali dengan benar) biasanya diasumsikan didistribusikan secara biner , dalam kasus-kasus tertentu perkiraan normal dimungkinkan, tetapi cetakan kecil untuk ini hampir tidak pernah bertemu di bidang dengan matriks data yang lebar. Ini memiliki konsekuensi bahwa interval kepercayaan sangat besar untuk sejumlah kecil kasus uji. Dalam R,
binom::binom.confint
hitung interval kepercayaan untuk proporsi sebenarnya yang diberikan no. tes dan tidak. kesuksesan.Akhirnya, pengalaman saya dengan optimasi genetika untuk data spektroskopi (tesis Diplom saya dalam bahasa Jerman) menunjukkan bahwa Anda harus memeriksa juga kesalahan pelatihan. GAS cenderung untuk berpakaian sangat cepat, sampai pada kesalahan pelatihan yang sangat rendah. Kesalahan pelatihan yang rendah tidak hanya terlalu optimistis, tetapi mereka juga memiliki konsekuensi bahwa GA tidak dapat membedakan antara banyak model yang tampaknya sama-sama sempurna. (Anda mungkin memiliki sedikit masalah dengan itu jika GA secara internal juga secara acak berlangganan kereta dan set tes internal).
Makalah dalam bahasa Inggris:
berorientasi aplikasi, menunjukkan bagaimana kami menginterpretasikan varian yang dipilih dan bahwa ada "perubahan" yang dikenal dalam pilihan yang setara untuk alasan kimia.
Beleites and Salzer: Menilai dan meningkatkan stabilitas model kemometrik dalam situasi ukuran sampel kecil, Anal Bioanal Chem, 2008, 390, 1261 - 1271.
membahas interval kepercayaan binomial untuk hit rate dll, mengapa kami tidak bisa menghitungnya. Sebagai gantinya, kami menggunakan variasi yang diamati melalui validasi silang berulang. Diskusi tentang perkiraan angka untuk ukuran sampel yang efektif perlu diambil dengan hati-hati, saat ini saya akan mengatakan itu adalah suatu tempat antara menyesatkan dan salah (saya kira itu adalah ilmu yang bergerak :-)).
ara. 11 menunjukkan hasil uji independen (validasi silang luar dengan pemisahan dengan spesimen) dari 40 model yang berbeda untuk spesimen yang sama. Perkiraan internal yang sesuai dari GA adalah 97,5% prediksi yang benar (satu model mendapatkan semua spektra spesimen salah, model yang tersisa benar untuk semua spektrum - tidak ditunjukkan dalam makalah). Ini adalah masalah dengan overfitting yang saya sebutkan di atas.
Dalam makalah baru-baru ini Beleites, Neugebauer, Bocklitz, Krafft dan Popp: Perencanaan Ukuran Sampel untuk Model Klasifikasi, Anal Chem Acta, 2013, 760, 25 - 33. kami menggambarkan masalah dengan estimasi kesalahan klasifikasi dengan terlalu sedikit pasien / sampel independen. Juga menggambarkan cara memperkirakan jumlah pasien yang diperlukan jika Anda tidak dapat melakukan tes berpasangan.
sumber
Anda menjalankan seleksi yang lebih sederhana dengan GA 10 kali dan setiap kali Anda mendapatkan output yang berbeda !!
Pertama, Jika Anda memulai dengan seed yang sama, Anda harus selalu mendapatkan subset featuer yang sama. Namun, Jika Anda menggunakan seed acak, juga, kemungkinan besar, Anda harus mendapatkan fitur yang dipilih hampir sama. Salah satu alasan untuk mendapatkan fitur yang sama terpilih dinyatakan dalam posting Anda. Selain itu, untuk perbandingan yang adil, Anda dapat menggunakan benih yang sama dalam rangkaian A untuk percobaan B.
Kedua, Anda dapat menggunakan validasi silang atau bootstraping untuk perbandingan. Dengan cara ini Anda mendapatkan perbandingan yang lebih representatif. Dalam hal ini, ada sumber variasi yaitu sampel pelatihan acak yang tampaknya lebih kuat daripada benih acak. Dengan demikian, perbandingan dapat mengungkapkan algorthim yang benar-benar lebih baik.
Akhirnya, Anda dapat menggunakan uji-t seperti yang Anda usulkan atau langsung menggunakan beberapa tes non-parametrik seperti tes Kruskal-Wallis.
sumber