【问题标题】:Multi classification with Random Forest - how to measure the "stability" of results使用随机森林进行多分类 - 如何衡量结果的“稳定性”
【发布时间】:2021-05-04 05:25:36
【问题描述】:

我正在使用随机森林(来自 sklearn)来解决多分类问题,有序类(例如 0、...、n,在我的特定情况下 n=4)大致均匀分布。我有很多观察结果(大约 5000 个),我分别将它们分成训练/测试 70%/30% - 这些类在训练和测试中也平均分布。我设置了random_state=None,所以每次我重新运行模型的拟合(在同一个训练集上)然后进行预测,我在测试集上得到的结果略有不同。

我的问题是如何通过比较不同的预测来衡量 随机森林 是否运作良好...

例如,如果我首先获得的预测只有 0,然后只有 n(如前所述,0 和 n 是最不同的类别),我会说 RF 根本不起作用。相反,如果只有很少的预测从一个类变为一个接近的类(例如,先是 0,然后是 1),我会说 RF 运行良好。

是否有特定的命令可以自动检查?

【问题讨论】:

    标签: python random scikit-learn random-forest


    【解决方案1】:

    一个解决方案是使用交叉验证。通过此,您将获得模型的一般准确性的强大衡量标准。

    然后你将训练和测试n个不同的型号(检查这个link,它是非常良好的解释)。您可以计算每个模型的准确性,然后获得这些措施的平均值。和示例是(有5分):

    scores = cross_val_score(clf, X, y, cv=5)
    

    然后绘制所有这些精度的平均值和std偏差:

    print("%0.2f accuracy with a standard deviation of %0.2f" % (scores.mean(), scores.std()))
    

    【讨论】:

      【解决方案2】:

      我认为对于这种类型的调查,我们并不关心分类器是否做出了正确的预测,但我们想知道它是否做出了 stable==consistent 预测。

      假设 repeated_prediction 的形状为:[repetitions,samples] 并包含对每个样本 1...n 的多次重复的预测

      怎么样:

      np.mean(np.std(repeated_predictions,axis=0))

      还有一些论文分析了随机森林的一致性,例如Consistency of Random Forests and Other Averaging Classifiers 但它似乎是读过的。

      【讨论】:

        猜你喜欢
        • 2018-02-05
        • 2015-09-23
        • 2018-07-10
        • 2021-07-25
        • 2017-03-15
        • 2017-01-09
        • 2019-09-05
        • 2013-09-22
        • 2018-02-18
        相关资源
        最近更新 更多