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?