Saya menggunakan contoh OpenCV letter_recog.cpp untuk bereksperimen pada pohon acak dan pengklasifikasi lainnya. Contoh ini memiliki implementasi enam pengklasifikasi - pohon acak, penguat, MLP, kNN, Bayes naif dan SVM. Kumpulan data pengenalan huruf UCI dengan 20.000 instance dan 16 fitur digunakan, yang saya bagi menjadi dua untuk pelatihan dan pengujian. Saya memiliki pengalaman dengan SVM jadi saya dengan cepat mengatur kesalahan pengakuannya menjadi 3,3%. Setelah beberapa percobaan apa yang saya dapatkan adalah:
Pengenalan surat UCI:
- RTrees - 5.3%
- Tingkatkan - 13%
- MLP - 7,9%
- kNN (k = 3) - 6,5%
- Bayes - 11,5%
- SVM - 3,3%
Parameter yang digunakan:
RTrees - max_num_of_trees_in_the_forrest = 200, max_depth = 20, min_sample_count = 1
Boost - boost_type = REAL, weak_count = 200, weight_trim_rate = 0.95, max_depth = 7
MLP - method = BACKPROP, param = 0.001, max_iter = 300 (nilai default - terlalu lambat untuk bereksperimen)
kNN (k = 3) - k = 3
Bayes - tidak ada
Kernel SVM - RBF, C = 10, gamma = 0,01
Setelah itu saya menggunakan parameter yang sama dan diuji pada dataset Digit dan MNIST dengan mengekstraksi fitur gradient terlebih dahulu (ukuran vektor 200 elemen):
Digit:
- RTrees - 5.1%
- Tingkatkan - 23,4%
- MLP - 4.3%
- kNN (k = 3) - 7,3%
- Bayes - 17,7%
- SVM - 4.2%
MNIST:
- RTrees - 1.4%
- Tingkatkan - kehabisan memori
- MLP - 1.0%
- kNN (k = 3) - 1.2%
- Bayes - 34,33%
- SVM - 0,6%
Saya baru untuk semua pengklasifikasi kecuali SVM dan kNN, untuk dua ini saya bisa mengatakan hasilnya tampak baik-baik saja. Bagaimana dengan orang lain? Saya berharap lebih dari pohon acak, pada MNIST kNN memberikan akurasi yang lebih baik, ada ide bagaimana cara mendapatkannya lebih tinggi? Boost dan Bayes memberikan akurasi yang sangat rendah. Pada akhirnya saya ingin menggunakan pengklasifikasi ini untuk membuat sistem multi classifier. Ada saran?