我正在使用 OpenCV letter_recog.cpp 示例来试验随机树和其他分类器。这个例子有六个分类器的实现——随机树、boosting、MLP、kNN、朴素贝叶斯和 SVM。使用具有 20000 个实例和 16 个特征的 UCI 字母识别数据集,我将其分成两半用于训练和测试。我有使用 SVM 的经验,所以我很快将其识别错误设置为 3.3%。经过一些实验,我得到的是:
UCI字母识别:
- RTrees - 5.3%
- 提升 - 13%
- MLP - 7.9%
- kNN(k=3) - 6.5%
- 贝叶斯 - 11.5%
- 支持向量机 - 3.3%
使用的参数:
RTrees - max_num_of_trees_in_the_forrest=200,max_depth=20,min_sample_count=1
提升 - 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
之后,我使用相同的参数并通过首先提取梯度特征(向量大小为 200 个元素)在 Digits 和 MNIST 数据集上进行测试:
数字:
- RTrees - 5.1%
- 提升 - 23.4%
- MLP - 4.3%
- kNN(k=3) - 7.3%
- 贝叶斯 - 17.7%
- 支持向量机 - 4.2%
MNIST:
- RTrees - 1.4%
- 提升 - 内存不足
- MLP - 1.0%
- kNN(k=3) - 1.2%
- 贝叶斯 - 34.33%
- 支持向量机 - 0.6%
我对除了 SVM 和 kNN 之外的所有分类器都是新手,对于这两个我可以说结果看起来不错。其他人呢?我对随机树的期望更高,在 MNIST kNN 上提供了更好的准确性,有什么想法可以让它更高吗?Boost 和 Bayes 的准确率非常低。最后我想用这些分类器来做一个多分类器系统。有什么建议吗?