Tôi đang sử dụng ví dụ thư_recog.cpp của OpenCV để thử nghiệm trên các cây ngẫu nhiên và các phân loại khác. Ví dụ này có triển khai sáu phân loại - cây ngẫu nhiên, tăng tốc, MLP, kNN, Bayes ngây thơ và SVM. Bộ dữ liệu nhận dạng thư UCI với 20000 trường hợp và 16 tính năng được sử dụng, tôi chia làm một nửa để đào tạo và thử nghiệm. Tôi có kinh nghiệm với SVM vì vậy tôi nhanh chóng đặt lỗi nhận dạng của nó thành 3,3%. Sau một số thử nghiệm, những gì tôi nhận được là:
Nhận dạng thư UCI:
- RTrees - 5,3%
- Tăng - 13%
- MLP - 7,9%
- kNN (k = 3) - 6,5%
- Bayes - 11,5%
- SVM - 3,3%
Các thông số được sử dụng:
RTrees - max_num_of_trees_in_the_forrest = 200, max_depth = 20, min_sample_count = 1
Tăng - boost_type = REAL, yếu_count = 200, weight_trim_rate = 0.95, max_depth = 7
MLP - phương thức = BACKPROP, param = 0,001, max_iter = 300 (giá trị mặc định - quá chậm để thử nghiệm)
kNN (k = 3) - k = 3
Bayes - không
SVM - Hạt nhân RBF, C = 10, gamma = 0,01
Sau đó, tôi đã sử dụng cùng một tham số và thử nghiệm trên bộ dữ liệu Digits và MNIST bằng cách trích xuất các tính năng gradient trước (kích thước vectơ 200 phần tử):
Chữ số:
- RTrees - 5,1%
- Tăng - 23,4%
- MLP - 4,3%
- kNN (k = 3) - 7,3%
- Bayes - 17,7%
- SVM - 4.2%
MNIST:
- RTrees - 1,4%
- Tăng cường - hết bộ nhớ
- MLP - 1,0%
- kNN (k = 3) - 1,2%
- Bayes - 34,33%
- SVM - 0,6%
Tôi chưa quen với tất cả các phân loại trừ SVM và kNN, vì hai điều này tôi có thể nói kết quả có vẻ ổn. Còn những người khác thì sao? Tôi mong đợi nhiều hơn từ các cây ngẫu nhiên, trên MNIST kNN cho độ chính xác tốt hơn, có ý tưởng nào để làm cho nó cao hơn không? Boost và Bayes cho độ chính xác rất thấp. Cuối cùng, tôi muốn sử dụng các trình phân loại này để tạo ra một hệ thống phân loại nhiều. Có lời khuyên nào không?