我正在使用scikit-learn
库来解决分类问题。我使用RandomForestClassifier
和SVM(SVC类)。然而,当rf达到约66%的精度和68%的召回率时,SVM每个只能达到45%。
我为rbf-SVM的参数C和gamma做了GridSearch
,并且还提前考虑了缩放和标准化。但是我认为rf和SVM之间的差距仍然太大。
我还应该考虑什么才能获得足够的SVM性能?
我认为应该可以获得至少相同的结果。 (所有分数都是通过对相同测试和训练集的交叉验证获得的。)
答案 0 :(得分:4)
正如EdChum在评论中所说,没有规则或保证任何模型总是表现最佳。
具有RBF核模型的SVM假设最优决策边界是平滑的并且是旋转不变的(一旦你修复了一个非旋转不变的特定特征缩放)。
随机森林没有做出平滑假设(它是一个明智的常数预测函数),并且有利于轴对齐的决策边界。
RF模型所做的假设可能更适合任务。
BTW,感谢网格搜索C
和gamma
并在询问stackoverflow之前检查了功能规范化的影响:)
编辑以获得更多洞察力,为2个模型绘制learning curves可能会很有趣。可能的情况是,SVM模型正则化和内核带宽不能足够好地处理过度拟合,而RF的整体性质最适合该数据集大小。如果您有更多数据,差距可能会更接近。学习曲线图是检查模型如何从更多样本中受益的好方法。