ฉันใช้ตัวอย่าง OpenCV letter_recog.cpp เพื่อทดลองบนต้นไม้แบบสุ่มและตัวแยกประเภทอื่น ๆ ตัวอย่างนี้มีการใช้งานของตัวแยกประเภทหกตัว - ต้นไม้แบบสุ่ม, การส่งเสริม, MLP, kNN, ไร้เดียงสา Bayes และ SVM ชุดข้อมูลการรู้จำจดหมาย UCI ที่มีอินสแตนซ์ 20,000 ตัวและมีฟีเจอร์ 16 ตัวซึ่งฉันแบ่งครึ่งสำหรับการฝึกอบรมและการทดสอบ ฉันมีประสบการณ์กับ SVM ดังนั้นฉันจึงตั้งค่าข้อผิดพลาดการรู้จำเป็น 3.3% หลังจากการทดลองสิ่งที่ฉันได้รับคือ:
การรับรู้จดหมาย UCI:
- RTrees - 5.3%
- เพิ่ม - 13%
- MLP - 7.9%
- kNN (k = 3) - 6.5%
- เบย์ - 11.5%
- SVM - 3.3%
พารามิเตอร์ที่ใช้:
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 (ค่าเริ่มต้น - การทดสอบช้าเกินไป)
kNN (k = 3) - k = 3
เบย์ - ไม่มี
SVM - เคอร์เนล RBF, C = 10, gamma = 0.01
หลังจากนั้นฉันใช้พารามิเตอร์เดียวกันและทดสอบกับชุดข้อมูล Digits และ MNIST โดยแยกคุณสมบัติการไล่ระดับสีก่อน (องค์ประกอบขนาดเวกเตอร์ 200):
ตัวเลข:
- RTrees - 5.1%
- เพิ่ม - 23.4%
- MLP - 4.3%
- kNN (k = 3) - 7.3%
- Bayes - 17.7%
- SVM - 4.2%
MNIST:
- RTrees - 1.4%
- Boost - หน่วยความจำไม่เพียงพอ
- MLP - 1.0%
- kNN (k = 3) - 1.2%
- เบย์ - 34.33%
- SVM - 0.6%
ฉันใหม่สำหรับตัวแยกประเภททั้งหมดยกเว้น SVM และ kNN สำหรับสองตัวนี้ฉันสามารถพูดได้ว่าผลลัพธ์ดูดี แล้วคนอื่นล่ะ? ฉันคาดหวังมากขึ้นจากต้นไม้แบบสุ่มใน MNIST kNN ให้ความแม่นยำที่ดีกว่าแนวคิดใดจะทำให้ได้สูงขึ้นได้อย่างไร Boost และ Bayes ให้ความแม่นยำต่ำมาก ในที่สุดฉันต้องการใช้ตัวแยกประเภทเหล่านี้เพื่อสร้างระบบตัวจําแนกหลายระบบ คำแนะนำใด ๆ?