Saya mencari rekomendasi untuk cara terbaik ke depan untuk masalah pembelajaran mesin saya saat ini
Garis besar masalah dan apa yang telah saya lakukan adalah sebagai berikut:
- Saya memiliki 900+ uji coba data EEG, di mana setiap uji coba berdurasi 1 detik. Kebenaran dasar diketahui untuk masing-masing dan mengklasifikasikan status 0 dan status 1 (pemisahan 40-60%)
- Setiap percobaan melewati preprocessing di mana saya menyaring dan mengekstrak kekuatan pita frekuensi tertentu, dan ini membentuk seperangkat fitur (fitur matrix: 913x32)
- Lalu saya menggunakan sklearn untuk melatih model. cross_validation digunakan di mana saya menggunakan ukuran uji 0,2. Pengklasifikasi diatur ke SVC dengan rbf kernel, C = 1, gamma = 1 (Saya telah mencoba sejumlah nilai yang berbeda)
Anda dapat menemukan versi singkat dari kode di sini: http://pastebin.com/Xu13ciL4
Masalah saya:
- Ketika saya menggunakan classifier untuk memprediksi label untuk set pengujian saya, setiap prediksi adalah 0
- akurasi kereta adalah 1, sedangkan akurasi set tes sekitar 0,56
- plot kurva belajar saya terlihat seperti ini:
Sekarang, ini seperti kasus klasik overfitting di sini. Namun, overfitting di sini tidak mungkin disebabkan oleh jumlah fitur yang tidak proporsional pada sampel (32 fitur, 900 sampel). Saya sudah mencoba beberapa hal untuk mengatasi masalah ini:
- Saya sudah mencoba menggunakan pengurangan dimensionalitas (PCA) jika itu karena saya memiliki terlalu banyak fitur untuk jumlah sampel, tetapi skor akurasi dan alur kurva pembelajaran terlihat sama seperti di atas. Kecuali jika saya mengatur jumlah komponen di bawah 10, pada titik mana akurasi kereta mulai menurun, tetapi apakah ini agak tidak diharapkan mengingat Anda mulai kehilangan informasi?
- Saya telah mencoba menormalkan dan menstandarkan data. Standarisasi (SD = 1) tidak melakukan apa pun untuk mengubah skor kereta atau akurasi. Normalisasi (0-1) menurunkan akurasi pelatihan saya menjadi 0,6.
- Saya sudah mencoba berbagai pengaturan C dan gamma untuk SVC, tetapi mereka tidak mengubah skor mana pun
- Sudah mencoba menggunakan estimator lain seperti GaussianNB, bahkan metode ensemble seperti adaboost. Tidak ada perubahan
- Mencoba secara eksplisit menetapkan metode regularisasi menggunakan linearSVC tetapi tidak memperbaiki situasi
- Saya mencoba menjalankan fitur yang sama melalui jaring saraf menggunakan theano dan akurasi kereta saya sekitar 0,6, tes sekitar 0,5
Saya senang terus memikirkan masalah tetapi pada saat ini saya sedang mencari dorongan ke arah yang benar. Di mana mungkin masalah saya dan apa yang bisa saya lakukan untuk menyelesaikannya?
Sangat mungkin bahwa rangkaian fitur saya tidak membedakan antara 2 kategori, tetapi saya ingin mencoba beberapa opsi lain sebelum beralih ke kesimpulan ini. Selain itu, jika fitur saya tidak membedakan maka itu akan menjelaskan skor set tes rendah, tetapi bagaimana Anda mendapatkan skor set pelatihan yang sempurna dalam kasus itu? Apakah itu mungkin?