Python:随机林和SVM分类器在哪些情况下可以产生高精度?

时间:2015-04-26 13:15:27

标签: python classification svm random-forest

我使用随机森林和SVM分类器进行分类,我有18322个样本在9个类别中不平衡(3667,1060,1267,2103,2174,1495,884,1462,4210)。我使用10倍CV,我的训练数据有100个特征尺寸。在我的样本中,训练数据在这100个维度上没有太大差异,当我使用SVM时,精度约为40%,但是,当我使用RF时,精度可达92%。然后,我在这100个特征维度中使我的数据更不同,但是,RF也可以给出92%的准确度,但SVM的准确率降至25%。

我的分类器配置是:

SVM:LinearSVC(惩罚=" l1",双=假)

RF:RandomForestClassifier(n_estimators = 50)

所有其他参数均为​​默认值。我认为我的RF分类器一定有问题,但我不知道如何检查它。

任何熟悉这两个分类器的人都可以给我一些提示吗?

1 个答案:

答案 0 :(得分:1)

线性SVC尝试通过在欧几里德空间中找到适当的超平面来分离您的类。您的样品可能无法线性分离,从而导致性能不佳。另一方面,随机森林使用几个(在这种情况下为50个)更简单的分类器(决策树),每个分类器具有分段线性决策边界。当你将它们加在一起时,你最终会得到一个更复杂的决策函数。

根据我的经验,RF在默认参数下表现相当不错,即使是广泛的参数搜索也只能提高一点点的准确性。 SVM几乎完全相反。

您尝试过不同的配置吗?如何为SVM进行网格搜索以获得更好的参数?

由于您已经在使用sklearn,因此可以使用sklearn.grid_search.GridSearchCVmore details here