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?
Saya mengharapkan lebih banyak dari pohon acak :
Dengan hutan acak, biasanya untuk fitur N, fitur sqrt (N) digunakan untuk setiap konstruksi pohon keputusan. Karena dalam kasus Anda N = 20, Anda dapat mencoba mengatur max_depth (jumlah sub-fitur untuk membangun setiap pohon keputusan) menjadi 5.
Alih-alih pohon keputusan, model linier telah diusulkan dan dievaluasi sebagai penduga dasar di hutan acak, khususnya regresi logistik multinomial dan Bayes naif. Ini dapat meningkatkan akurasi Anda.
Pada MNIST, kNN memberikan akurasi yang lebih baik, ada ide bagaimana cara membuatnya lebih tinggi?
sumber