【问题标题】:Why random forest always give 1.0 prediction score?为什么随机森林总是给出 1.0 的预测分数?
【发布时间】:2020-07-25 07:07:45
【问题描述】:

我正在尝试测试以下分类器的预测分数:

- random forest
- k neighbors
- svm
- naïve bayes

我没有使用特征选择或特征缩放(根本没有预处理)。

我正在使用如下训练测试拆分:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

我测试了几个数据集(来自sklearn):

- load_iris
- load_breast_cancer
- load_wine

在所有这 3 个中,随机森林总是给出完美的预测(测试准确度 1.0)。

我尝试创建随机样本进行分类:

make_classification(flip_y=0.3, weights = [0.65, 0.35], n_features=40, n_redundant=4, n_informative=36,n_classes=2,n_clusters_per_class=1, n_samples=50000)

随机森林再次对测试集给出了完美的预测(准确度 1.0)。

所有其他分类器在测试集上的表现都不错 (0.8-0.97),但不如随机森林那么完美 (1.0)。

  • 我错过了什么?
  • 随机森林真的以完美的方式胜过所有其他分类器吗?

【问题讨论】:

  • 我们说的是训练预测还是测试预测?
  • 测试预测:score(X_test, y_test)

标签: machine-learning scikit-learn classification random-forest


【解决方案1】:

关于 1.0 的完美准确度得分,我们必须记住,所有这 3 个数据集现在都被视为实际上是玩具数据集,scikit-learn 的make_classification 生成的人工数据可能也是如此。

也就是说,RF 确实被认为是一种非常强大的分类算法。甚至还有一篇相对较新的论文(2014 年),标题为 Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?,其结论是(引自摘要,强调原文):

我们评估来自 17 个家族179 个分类器(判别分析、贝叶斯、神经网络、支持向量机、决策树、基于规则的分类器、boosting、bagging、堆叠、随机森林和其他集成、广义线性模型、最近邻、偏最小二乘和主成分回归、逻辑和多项回归、多重自适应回归样条和其他方法)[...]我们使用 121 个数据集,代表 整个 UCI 数据库 [...] 最有可能成为最佳分类器的是随机森林 (RF) 版本

虽然这篇论文受到了一些批评,主要是因为它did not include boosted trees(但不仅如此,另见Are Random Forests Truly the Best Classifiers?),但事实是,在“传统”领域,预深度学习分类至少,已经有一种说法当有疑问时,试试 RF,上面提到的第一篇论文强化了这一说法。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 2014-08-07
    • 2021-03-21
    • 2019-05-04
    • 2019-07-10
    • 2021-06-23
    • 2019-02-19
    • 2014-04-15
    相关资源
    最近更新 更多