Akurasi klasifikasi rendah, apa yang harus dilakukan selanjutnya?


16

Jadi, saya seorang pemula di bidang ML dan saya mencoba untuk melakukan klasifikasi. Tujuan saya adalah untuk memprediksi hasil acara olahraga. Saya telah mengumpulkan beberapa data historis dan sekarang mencoba untuk melatih classifier. Saya mendapatkan sekitar 1.200 sampel, 0,2 di antaranya saya pisahkan untuk keperluan pengujian, yang lain saya masukkan ke pencarian kotak (termasuk validasi silang) dengan berbagai pengklasifikasi. Saya sudah mencoba SVM dengan kernel linear, rbf dan polinominal dan Random Forests saat ini. Sayangnya, saya tidak bisa mendapatkan akurasi secara signifikan lebih besar dari 0,5 (sama dengan pilihan kelas acak). Apakah itu berarti saya tidak dapat memprediksi hasil dari peristiwa yang begitu rumit? Atau saya bisa mendapatkan setidaknya akurasi 0,7-0,8? Jika layak, lalu apa yang harus saya perhatikan selanjutnya?

  • Dapatkan lebih banyak data? (Saya dapat memperbesar dataset hingga 5 kali)
  • Coba pengklasifikasi yang berbeda? (Regresi logistik, kNN, dll)
  • Mengevaluasi ulang set fitur saya? Apakah ada alat ML untuk dianalisis, fitur mana yang masuk akal dan mana yang tidak? Mungkin, saya harus mengurangi set fitur saya (saat ini saya punya 12 fitur)?

Apa akurasi pelatihan Anda? Dan berapa banyak sampel yang Anda miliki di setiap kelas?
Leo

1
Olahraga apa ini dan apa yang Anda anggap klasifikasi "benar"? Jika Anda hanya mencoba memprediksi hasil menang / kalah di hampir semua olahraga besar, hampir tidak dapat dibayangkan bahwa bahkan pengklasifikasi yang paling sederhana pun tidak akan memprediksi lebih baik dari 0,5. Jika Anda, katakanlah, mencoba memprediksi menang / kalah terhadap spread atau hasil cacat lainnya, maka jauh lebih baik daripada 0,5 mungkin sulit.
kardinal

Akurasi Pelatihan Leo adalah sekitar 0,5. Kelas didistribusikan secara merata, saya memiliki kelas 0 dan 1.
fspirit

@ cardinal Ya, saya mencoba memprediksi hasil win-loss, tidak ada cacat. Apakah layak untuk mencapai, katakanlah, 0,8 akurasi pada set tes?
fspirit

1
@ fspirit: Itu tergantung pada olahraga dan ketidaksamaan kemampuan antara para peserta, untuk satu hal. Hanya dengan mengetahui siapa yang berpartisipasi dalam setiap kontes seringkali dapat menjadi prediktor yang kuat. Di sini dan di sini ada beberapa posting terkait.
kardinal

Jawaban:


17

Pertama-tama, jika classifier Anda tidak lebih baik daripada pilihan acak, ada risiko bahwa tidak ada koneksi antara fitur dan kelas. Pertanyaan yang bagus untuk ditanyakan kepada diri sendiri dalam posisi seperti itu, apakah cuaca Anda atau pakar domain dapat menyimpulkan kelas (dengan akurasi lebih besar daripada pengelompokan acak) berdasarkan fitur yang diberikan. Jika tidak, maka mendapatkan lebih banyak baris data atau mengubah classifier tidak akan membantu. Yang perlu Anda lakukan adalah mendapatkan lebih banyak data menggunakan berbagai fitur.

JIKA di sisi lain Anda berpikir informasi yang diperlukan untuk menyimpulkan kelas sudah ada di label, Anda harus memeriksa apakah classifier Anda menderita bias yang tinggi atau masalah varians yang tinggi.

Untuk melakukan ini, buat grafik kesalahan validasi dan set kesalahan pelatihan, sebagai fungsi dari contoh pelatihan.

Jika garis tampaknya konvergen ke nilai yang sama dan dekat di akhir, maka penggolong Anda memiliki bias tinggi dan menambahkan lebih banyak data tidak akan membantu. Ide yang baik dalam hal ini adalah mengubah penggolong untuk yang memiliki varians lebih tinggi, atau cukup menurunkan parameter regularisasi dari yang sekarang.

Jika di sisi lain garis-garisnya cukup berjauhan, dan Anda memiliki kesalahan set pelatihan rendah tetapi kesalahan validasi tinggi, maka classifier Anda memiliki varians terlalu tinggi. Dalam hal ini, mendapatkan lebih banyak data sangat mungkin membantu. Jika setelah mendapatkan lebih banyak data varians masih akan terlalu tinggi, Anda dapat meningkatkan parameter regularisasi.

Ini adalah aturan umum yang akan saya gunakan ketika menghadapi masalah seperti masalah Anda.

Bersulang.


Apakah maksud Anda kesalahan set validasi dan kesalahan set TEST? Kalau tidak, saya bingung. Saya bahkan tidak tahu kesalahan set kereta, karena saya menggunakan set validasi set untuk memilih model dan mereka memeriksa model yang dipilih pada set tes.
fspirit

Tidak, maksud saya kesalahan set latihan saat ditulis. Kesalahan pelatihan adalah jumlah contoh kesalahan klasifikasi dalam set pelatihan dibagi dengan ukuran set pelatihan. Demikian pula kesalahan set tes adalah jumlah contoh kesalahan klasifikasi dalam set tes dibagi dengan ukuran set pelatihan. Anda juga mungkin ingin memeriksa Kelas Pembelajaran Mesin Coursera, ( class.coursera.org/ml-2012-002/lecture/index ), terutama video untuk "Saran untuk menerapkan Pembelajaran Mesin". Nasihat itu sangat relevan dengan situasi Anda.
sjm.majewski

Saya sudah mengikuti kursus, ketika pertama kali dijalankan. Adapun kesalahan set latihan, saya sekarang output juga, untuk SVM cukup tinggi - 0,5, tetapi untuk hutan acak 0.
fspirit

5

Saya menyarankan untuk mengambil langkah mundur dan melakukan beberapa analisis data eksplorasi sebelum mencoba klasifikasi. Anda perlu memeriksa fitur Anda secara individual untuk melihat apakah ada hubungan dengan hasil yang diinginkan - mungkin fitur yang Anda miliki tidak memiliki hubungan dengan label kelas. Bagaimana Anda tahu jika fitur yang Anda miliki akan ada gunanya?

Anda bisa mulai dengan melakukan pengujian hipotesis atau analisis korelasi untuk menguji hubungan. Menghasilkan histogram khusus kelas untuk fitur (yaitu memplot histogram data untuk setiap kelas, untuk fitur yang diberikan pada sumbu yang sama) juga bisa menjadi cara yang baik untuk menunjukkan jika fitur membedakan dengan baik antara kedua kelas.

Penting untuk diingat meskipun tidak membiarkan hasil analisis eksplorasi Anda memengaruhi pilihan Anda untuk klasifikasi. Memilih fitur untuk klasifikasi berdasarkan pada analisis eksplorasi sebelumnya pada data yang sama, dapat menyebabkan perkiraan kinerja yang berlebihan dan bias (lihat diskusi di sini ) tetapi analisis eksplorasi setidaknya akan memberi Anda gambaran apakah tugas yang Anda coba lakukan adalah lebih adil. bisa jadi.


Saya akan mencoba menggambar histogram dan melihat seperti apa bentuknya.
fspirit

@BGreene - paragraf ketiga Anda adalah yang sulit bagi saya. Jika analisis eksplorasi menunjukkan prediktor x1 sangat berkorelasi dengan hasil, tidakkah itu mengalahkan tujuan memeriksa korelasi itu jika seseorang tidak menggunakan x1 setidaknya sebagai kandidat prediktor dalam model multivariat?
rolando2

@ rolando2 - Saya tidak menyarankan agar Anda tidak menyertakan fitur sebagai kandidat sebagai bagian dari rutinitas pemilihan fitur, tetapi Anda tidak boleh memilih fitur berdasarkan analisis eksplorasi karena ini akan sesuai. Namun untuk tujuan mengevaluasi kinerja umum dari model classifier, pemilihan fitur harus dilakukan dalam rutinitas pemilihan model (yaitu dalam setiap lipatan validasi silang). Apa yang saya sarankan adalah bahwa analisis eksplorasi dan klasifikasi harus diperlakukan sebagai kegiatan terpisah - masing-masing memberi tahu Anda hal-hal berbeda tentang data Anda
BGreene

3

Ada baiknya Anda memisahkan data Anda menjadi data pelatihan dan data uji.

Apakah kesalahan pelatihan Anda turun ketika Anda dilatih? Jika tidak, maka Anda mungkin memiliki bug dalam algoritma pelatihan Anda. Anda mengharapkan kesalahan pada set tes Anda lebih besar dari kesalahan pada set pelatihan Anda, jadi jika Anda memiliki kesalahan yang sangat tinggi pada set pelatihan Anda, ada sedikit harapan untuk berhasil.

Menyingkirkan fitur dapat menghindari beberapa jenis overfitting. Namun, itu seharusnya tidak meningkatkan kesalahan pada set pelatihan Anda. Kesalahan rendah pada set latihan Anda dan kesalahan tinggi pada set tes Anda mungkin merupakan indikasi bahwa Anda mengenakan pakaian menggunakan set fitur yang terlalu fleksibel. Namun, lebih aman untuk memeriksa ini melalui validasi silang daripada pada set tes Anda. Setelah Anda memilih set fitur Anda berdasarkan set tes Anda, itu tidak lagi valid sebagai set tes.


Saya menggunakan kereta terpisah, validasi dan set tes. Saya memilih hyper-params berdasarkan kesalahan set validasi dan kemudian menerapkan model yang dipilih ke set tes. Saya ragu ada bug dalam algoritma pelatihan, karena saya menggunakan lib di luar rak.
fspirit

50%

Dalam "fitur mengerikan" kemungkinan, saya memasukkan kasus bahwa tidak ada solusi yang mungkin. Namun, saya sangat meragukannya. Tidak ada olahraga yang saya tahu di mana tidak ada cara untuk melihat bahwa satu pesaing adalah favorit atas yang lain. Bahkan dimungkinkan dengan gunting batu-kertas.
Douglas Zare

1

Mengapa tidak mengikuti prinsip "lihat dulu petak data". Satu hal yang dapat Anda lakukan adalah sebar 2 D dari kepadatan bersyarat dua kelas untuk dua kovariat. Jika Anda melihat ini dan melihat hampir tidak ada pemisahan yang dapat menunjukkan kurangnya prediktabilitas dan Anda dapat melakukan ini dengan semua kovariat. Itu memberi Anda beberapa ide tentang kemampuan untuk menggunakan kovariat ini untuk memprediksi. Jika Anda melihat beberapa harapan bahwa variabel-variabel ini dapat memisahkan sedikit maka mulailah berpikir tentang diskriminasi linier, diskriminasi kuadrat, diskriminasi kernel, regularisasi, klasifikasi pohon, SVM dll.


Maaf, um, apakah fitur kovariat ==?
fspirit
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.