【问题标题】:Python: In which cases will random forest and SVM classifiers can produce high accuracy?Python:在哪些情况下随机森林和 SVM 分类器可以产生高精度?
【发布时间】:2015-07-04 20:46:19
【问题描述】:

我正在使用随机森林和 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(penalty="l1",dual=False)

RF: RandomForestClassifier(n_estimators = 50)

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

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

【问题讨论】:

标签: python classification svm random-forest


【解决方案1】:

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

根据我的经验,RF 在使用默认参数时往往表现得非常好,即使是广泛的参数搜索也只能稍微提高准确性。 SVM 的行为几乎完全相反。

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

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

【讨论】:

  • 非常感谢!这听起来很合理,我明天会尝试 grid_search。
  • @gladys0313 有帮助吗?如果是,请您接受答案吗?
猜你喜欢
  • 2018-02-18
  • 2019-08-11
  • 2018-05-20
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2018-12-12
相关资源
最近更新 更多