Python 与随机森林相比,SVM性能较差

Python 与随机森林相比,SVM性能较差,python,machine-learning,scikit-learn,svm,random-forest,Python,Machine Learning,Scikit Learn,Svm,Random Forest,我正在使用python的scikit learn库来解决分类问题。我使用了RandomForestClassifier和SVM(SVC类)。然而,虽然rf实现了约66%的准确率和68%的召回率,但SVM每次只能达到45% 我对rbf SVM的参数C和gamma进行了GridSearch,并提前考虑了缩放和标准化。但是我认为rf和SVM之间的差距仍然太大 我还需要考虑什么来获得足够的支持向量机性能? 我认为至少有可能得到同样的结果。 (所有分数都是通过交叉验证在相同的测试和训练集上获得的。)正如E

我正在使用python的
scikit learn
库来解决分类问题。我使用了
RandomForestClassifier
和SVM(SVC类)。然而,虽然rf实现了约66%的准确率和68%的召回率,但SVM每次只能达到45%

我对rbf SVM的参数C和gamma进行了
GridSearch
,并提前考虑了缩放和标准化。但是我认为rf和SVM之间的差距仍然太大

我还需要考虑什么来获得足够的支持向量机性能? 我认为至少有可能得到同样的结果。


(所有分数都是通过交叉验证在相同的测试和训练集上获得的。)

正如EdChum在评论中所说,没有任何规则或保证任何模型总是表现最佳

带RBF核模型的SVM假设最优决策边界是平滑的和旋转不变的(一旦你确定了一个不旋转不变的特定特征缩放)

随机林不进行平滑假设(它是一个分段常数预测函数),并且支持轴对齐的决策边界

RF模型所做的假设可能更适合这项任务

顺便说一句,感谢您搜索了网格
C
gamma
,并在询问stackoverflow之前检查了特征规范化的影响:)


编辑为了获得更多信息,绘制两个模型的。可能的情况是,SVM模型正则化和核带宽不能很好地处理过拟合,而RF的集成特性最适合这种数据集大小。如果你有更多的数据,差距可能会越来越近。学习曲线图是一种很好的方法,可以检查您的模型如何从更多样本中受益。

为什么您认为它应该表现得同样好?嗯,我认为SVM和RF的模型空间应该或多或少相似,因此应该有相似的模型产生相似的结果…不,不能保证两个模型之间的性能相同,您试图优化参数并执行缩放和归一化,但这并不能保证它们也会执行。您可以在您的数据集上尝试,并亲自查看,您最终会发现,没有硬性规定或保证任何模型都能始终保持最佳性能。您是否规范化了特征矩阵的列?例如。范围为0。。1或平均值0(加上标准偏差1)?