如何计算出袋外错误,确切地说,它的含义是什么?

时间:2015-11-17 08:23:16

标签: matlab machine-learning classification random-forest

我找到了几个解释包外溢出错误的内容,包括stackoverflow上的错误:What is out of bag error in random forests

然而,我找不到任何公式如何精确计算它。 我们以MATLAB帮助文件为例: err = oobError(B)计算错误分类概率[...]。 B是使用TreeBagger类生成的树的模型。

错误分类概率是多少?这只是袋外数据的准确性吗?

准确度=(TP + FP)/(P + N)

那么简单地说,所有真正分类的实例与集合中出现的所有实例的比率是什么?

如果这是正确的,我一方面看到了计算它的好处,如果你有一些数据集要测试,那就非常简单了,就像袋外数据集一样。

但另一方面,当涉及不平衡数据集时,已知准确度是一个很好的指标。所以我的第二个问题是:袋外错误是否可以应对不平衡的数据集,如果不是,在这种情况下甚至是指定它的有效点?

1 个答案:

答案 0 :(得分:1)

袋外错误只是在训练期间未看到的样本上计算错误。它在装袋方法中具有重要作用,因为训练集的引导(通过随机替换绘制新的集合)你实际上得到了相当多的未使用的训练数据(限制在30%左右)。如果您有许多这样的模型(比如在随机森林中,您有许多树,每个树都使用自己的boostrap样本进行训练),那么您可以对这些误差进行平均并估算泛化误差。

  

错误分类概率是多少?这只是袋外数据的准确性吗?

错误分类概率为1-Accuracy

  

如果这是正确的,我一方面看到了计算它的好处,如果你有一些数据集要测试,那就非常简单了,就像袋外数据集一样。

因为使用一个测试集只接近当前模型的质量(无论它是什么),而在袋外进行是一种对整体中单个元素的估计(在随机森林的情况下为树)所有可能的训练集选择。这是不同的概率测量,例如参见Tibshirani的统计学习元素的第7章。此外,它的优势在于你不会浪费任何一点。保持单独的测试集需要相当多的点,以便您可以在剩余数据上获得合理的估计(模型)。超出袋估计使您能够同时说出它的行为表现 - 使用所有可用数据。

  

但另一方面,当涉及到不平衡的数据集时,准确度已知不是一个好的指标。所以我的第二个问题是:袋外错误是否可以应对不平衡的数据集,如果不是,在这种情况下甚至是指定它的有效点?

袋外错误与准确性无关。它以scikit实现 - 学习如何准确工作,但它是通过任何损失函数(分类指标)定义的。你可以使用MCC,F1或任何你想要的东西进行精确的模拟。

相关问题