Saya memiliki dataset yang berisi paling banyak 150 contoh (dibagi menjadi pelatihan & tes), dengan banyak fitur (lebih dari 1000). Saya perlu membandingkan pengklasifikasi dan metode pemilihan fitur yang berkinerja baik pada data. Jadi, saya menggunakan tiga metode klasifikasi (J48, NB, SVM) dan 2 metode pemilihan fitur (CFS, WrapperSubset) dengan metode pencarian yang berbeda (Serakah, BestFirst).
Saat membandingkan, saya melihat akurasi pelatihan (cross-fold 5 kali lipat) dan akurasi tes.
Ini adalah salah satu hasil dari J48 dan CFS-BestFirst:
{"precisionTraining": 95.83, "akurasiTest": 98.21}
Banyak hasil seperti ini, dan pada SVM ada banyak hasil yang menunjukkan bahwa akurasi tes jauh lebih tinggi daripada pelatihan (pelatihan: 60%, tes: 98%)
Bagaimana saya bisa mengartikan hasil seperti ini secara bermakna? Jika lebih rendah, saya akan mengatakan itu overfitting. Apakah ada yang bisa dikatakan tentang bias dan varians dalam hal ini dengan melihat semua hasilnya? Apa yang dapat saya lakukan untuk membuat klasifikasi ini bermakna, seperti memilih kembali pelatihan dan set tes atau hanya menggunakan validasi silang pada semua data?
Saya memiliki 73 pelatihan & 58 contoh tes. Beberapa jawaban tidak memiliki info ini ketika diposkan.
Akurasi pada set pelatihan tidak masuk akal dalam pembelajaran mesin. Abaikan itu.
sumber
Ada beberapa masalah serius dengan cara Anda melakukan ini. Pertama-tama, pemisahan data tidak dapat diandalkan kecuali ukuran total sampel sangat besar. Anda akan mendapatkan hasil yang berbeda jika Anda membagi lagi. Antara lain, Anda tidak mempertimbangkan interval kepercayaan pada perkiraan akurasi. Kedua, validasi silang 5 kali lipat tidak cukup tepat. Mungkin perlu untuk mengulanginya 100 kali untuk mencapai presisi yang memadai. Ketiga, Anda telah memilih sebagai skor akurasi aturan pemberian skor tidak terputus yang tidak terputus (proporsi diklasifikasikan dengan benar). Aturan penilaian yang tidak tepat seperti itu akan mengarah pada pemilihan model yang salah.
sumber
Dengan asumsi bahwa tidak ada kesalahan dalam implementasi algoritma, mari kita lihat masalahnya.
Bayangkan mengambil sebagian kecil dari data pelatihan Anda dan menjalankan algoritma pembelajaran Anda di atasnya. Jelas akan melakukannya dengan sangat baik. Itu selalu mungkin untuk mengekstrak subset yang mencapai akurasi hampir 98%.
Sekarang apakah data pengujian Anda sangat mirip dengan subset ini? Jika ya, maka Anda perlu pergi dan mengumpulkan lebih banyak data, semoga sedikit lebih bervariasi. Dari sudut pandang Bias-Variance, saya akan mengatakan bahwa varians Anda tinggi.
sumber
Anda memiliki terlalu banyak fitur (1000) untuk jumlah sampel yang Anda miliki (150). Anda perlu menambah sampel Anda atau mengurangi jumlah fitur Anda.
Mereka mengatakan biasanya jumlah fitur ^ 2 = jumlah sampel yang dibutuhkan. Jadi, Anda memerlukan setidaknya juta sampel.
sumber
Itu bisa terjadi menggunakan algoritma ML dan bahkan pengklasifikasi khusus. Coba berbagai skema validasi k-fold lintas yaitu 2 atau 10 kali lipat juga. Dengan k yang lebih tinggi, diharapkan kesalahan pengujian berkurang.
sumber