Saya baru belajar Mesin. Saat ini saya menggunakan classifier Naive Bayes (NB) untuk mengklasifikasikan teks kecil dalam 3 kelas sebagai positif, negatif atau netral, menggunakan NLTK dan python.
Setelah melakukan beberapa tes, dengan dataset yang terdiri dari 300.000 instance (16.924 positif, 7.477 negatif, dan 275.599 netral), saya menemukan bahwa ketika saya menambah jumlah fitur, akurasinya turun tetapi presisi / recall untuk kelas positif dan negatif naik. apakah ini perilaku normal untuk NB classifier? Bisakah kita mengatakan bahwa akan lebih baik menggunakan lebih banyak fitur?
Beberapa data:
Features: 50
Accuracy: 0.88199
F_Measure Class Neutral 0.938299
F_Measure Class Positive 0.195742
F_Measure Class Negative 0.065596
Features: 500
Accuracy: 0.822573
F_Measure Class Neutral 0.904684
F_Measure Class Positive 0.223353
F_Measure Class Negative 0.134942
Terima kasih sebelumnya...
Edit 2011/11/26
Saya telah menguji 3 strategi pemilihan fitur yang berbeda (MAXFREQ, FREQENT, MAXINFOGAIN) dengan classifier Naif Bayes. Pertama di sini adalah Akurasi, dan Tindakan F1 per kelas:
Lalu saya telah merencanakan kesalahan kereta dan kesalahan pengujian dengan set pelatihan tambahan, saat menggunakan MAXINFOGAIN dengan 100 fitur teratas dan 1000 teratas:
Jadi, menurut saya meskipun akurasi tertinggi dicapai dengan FREQENT, pengklasifikasi terbaik adalah yang menggunakan MAXINFOGAIN, apakah ini benar ? Saat menggunakan 100 fitur teratas kami memiliki bias (kesalahan pengujian dekat dengan kesalahan kereta) dan menambahkan lebih banyak contoh pelatihan tidak akan membantu. Untuk meningkatkan ini, kita akan memerlukan lebih banyak fitur. Dengan 1000 fitur, bias berkurang tetapi kesalahan meningkat ... Apakah ini ok? Haruskah saya perlu menambahkan lebih banyak fitur? Saya tidak benar-benar tahu bagaimana menafsirkan ini ...
Terima kasih lagi...
sumber
Jawaban:
Akurasi vs ukuran-F
Pertama-tama, saat Anda menggunakan metrik, Anda harus tahu cara memainkannya. Akurasi mengukur rasio instance yang diklasifikasikan dengan benar di semua kelas. Itu berarti, bahwa jika satu kelas lebih sering terjadi daripada yang lain, maka akurasi yang dihasilkan jelas didominasi oleh keakuratan kelas yang mendominasi. Dalam kasus Anda jika seseorang membangun Model M yang hanya memprediksi "netral" untuk setiap contoh, akurasi yang dihasilkan akan menjadi
Bagus, tapi tidak berguna.
Jadi penambahan fitur jelas meningkatkan kekuatan NB untuk membedakan kelas, tetapi dengan memprediksi "positif" dan "negatif" orang salah mengklasifikasikan netral dan karenanya akurasi turun (diucapkan secara kasar). Perilaku ini tidak tergantung pada NB.
Lebih atau kurang Fitur?
Secara umum tidak lebih baik menggunakan lebih banyak fitur, tetapi menggunakan fitur yang tepat. Lebih banyak fitur yang lebih baik sejauh algoritma pemilihan fitur memiliki lebih banyak pilihan untuk menemukan subset optimal (saya sarankan untuk mengeksplorasi: fitur-pilihan crossvalidated ). Ketika datang ke NB, pendekatan yang cepat dan solid (tetapi kurang optimal) adalah dengan menggunakan InformationGain (Rasio) untuk mengurutkan fitur dalam urutan menurun dan memilih k atas.
Sekali lagi, saran ini (kecuali InformationGain) tidak tergantung pada algoritma klasifikasi.
EDIT 27.11.11
Ada banyak kebingungan mengenai bias dan varians untuk memilih jumlah fitur yang benar. Karena itu saya sarankan untuk membaca halaman pertama tutorial ini: Bias-Variance tradeoff . Esensi kuncinya adalah:
Kurva pembelajaran yang diplot memang menunjukkan Bias, karena kesalahannya diplot. Namun, yang tidak bisa Anda lihat adalah Variance, karena interval kepercayaan kesalahan tidak diplot sama sekali.
Contoh: Saat melakukan Crossvalidation 3 kali lipat 6 kali (ya, pengulangan dengan partisi data yang berbeda dianjurkan, Kohavi menyarankan 6 pengulangan), Anda mendapatkan 18 nilai. Saya sekarang berharap bahwa ...
Perilaku kesalahan / bias ini persis seperti yang kami lihat di plot Anda. Kami tidak dapat membuat pernyataan tentang varians. Bahwa kurva dekat satu sama lain dapat menjadi indikasi bahwa set tes cukup besar untuk menunjukkan karakteristik yang sama dengan set pelatihan dan karenanya kesalahan yang diukur mungkin dapat diandalkan, tetapi ini (setidaknya sejauh yang saya mengerti) itu) tidak cukup untuk membuat pernyataan tentang varians (dari kesalahan!).
Ketika menambahkan lebih banyak contoh pelatihan (menjaga ukuran set tes tetap), saya akan berharap bahwa varians kedua pendekatan (jumlah fitur kecil dan tinggi) berkurang.
Oh, dan jangan lupa menghitung infogain untuk pemilihan fitur hanya menggunakan data dalam sampel pelatihan! Seseorang tergoda untuk menggunakan data lengkap untuk pemilihan fitur dan kemudian melakukan partisi data dan menerapkan crossvalidation, tetapi ini akan menyebabkan overfitting. Saya tidak tahu apa yang Anda lakukan, ini hanya peringatan yang tidak boleh dilupakan orang.
sumber
Untuk mengetahui apakah berguna untuk menggunakan lebih banyak fitur, saya akan memplot kurva belajar. Saya pikir ini dijelaskan dengan jelas di Unit ke-10 kelas Pembelajaran Mesin Stanford, bernama "Nasihat untuk menerapkan pembelajaran mesin", yang dapat Anda temukan di sini: http://www.ml-class.org/course/video/preview_list .
Merencanakan kurva belajar Anda bisa mengerti jika masalah Anda adalah bias tinggi atau varians tinggi. Selama Anda menambah jumlah contoh pelatihan, Anda harus merencanakan kesalahan pelatihan dan kesalahan tes (yaitu 1-akurasi), yang terakhir adalah kesalahan pengelompokan Anda yang diperkirakan pada kumpulan data yang berbeda. Jika kurva ini dekat satu sama lain, Anda memiliki masalah bias tinggi dan mungkin akan bermanfaat untuk memasukkan lebih banyak fitur. Di sisi lain, jika kurva Anda cukup terpisah selama Anda menambah jumlah contoh pelatihan, Anda memiliki masalah varians yang tinggi. Dalam hal ini Anda harus mengurangi jumlah fitur yang Anda gunakan.
Edit
Saya akan menambahkan beberapa contoh kurva belajar. Ini adalah kurva belajar yang diperoleh dengan regresi logistik yang teratur. Petak berbeda terkait dengan berbedaλ untuk menyesuaikan kekuatan regularisasi.
sumber