Python:在这种情况下,随机森林和SVM分类器可以产生高精度



我正在使用随机森林和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:线性SVC(惩罚="l1",双重=假)

RF: 随机森林分类器(n_estimators = 50)

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

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

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

根据我的经验,RF在默认参数下往往表现得相当不错,即使进行广泛的参数搜索也只能稍微提高精度。SVM 的行为几乎完全相反。

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

由于您已经在使用sklearn因此您可以使用sklearn.grid_search.GridSearchCV,更多详细信息在这里

最新更新