使用随机森林进行多分类 - 如何衡量 "stability" 结果

Multi classification with Random Forest - how to measure the "stability" of results

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

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

例如,如果我首先仅获得 0 然后仅获得 n(其中,如前所述,0 和 n 是最不同的 classes),我会说 RF 在全部。相反,如果只有很少的预测从 class 变为接近的预测(例如第一个 0 然后 1),我会说 RF 运行良好。

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

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

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

怎么样:

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

也有分析随机森林一致性的论文,例如Consistency of Random Forests and Other Averaging Classifiers 但它似乎是一个虽然阅读。

一种解决方案是使用交叉验证。有了这个,您将获得对模型一般准确性的可靠衡量。

然后你将训练和测试 n 个不同的模型(检查这个 link,解释得很好)。您可以计算每个模型的准确度,然后获得这些度量的平均值。例子是(有 5 个分割):

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

然后绘制所有这些准确度的平均值和标准偏差:

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