SVM表现不如随机森林

3 投票
1 回答
1066 浏览
提问于 2025-04-20 09:51

我正在使用 scikit-learn 这个Python库来解决一个分类问题。我用了 RandomForestClassifier 和支持向量机(SVM,指的是SVC类)。结果发现,随机森林的准确率大约是66%,召回率是68%,而SVM的准确率和召回率都只有45%。

我对rbf-SVM的参数C和gamma进行了 GridSearch,而且在此之前也考虑了数据的缩放和标准化。不过,我觉得随机森林和SVM之间的差距还是太大了。

我还应该考虑什么,才能让SVM的表现更好呢?

我觉得至少应该能达到相同的结果。(所有的评分都是通过交叉验证在同一组测试和训练数据上得到的。)

1 个回答

4

正如EdChum在评论中提到的,并没有任何规则或保证说某个模型总是表现最好。

SVM(支持向量机)使用RBF核时,假设最佳的决策边界是平滑的,并且对旋转不敏感(前提是你选择的特征缩放方式不受旋转影响)。

而随机森林模型则不假设边界是平滑的(它的预测是分段常数的),更倾向于选择与坐标轴对齐的决策边界。

随机森林模型的假设可能更适合当前的任务。

顺便说一下,感谢你在提问之前对Cgamma进行了网格搜索,并检查了特征归一化的影响,这样的准备工作很棒!

编辑:为了获得更多的见解,可以考虑绘制这两个模型的学习曲线。可能的情况是,SVM模型的正则化和核带宽无法很好地处理过拟合,而随机森林的集成特性在这个数据集大小下表现得更好。如果你有更多的数据,这个差距可能会缩小。学习曲线图是检查你的模型如何从更多样本中受益的好方法。

撰写回答