袋外误差是如何准确计算的,它的含义是啥?
Posted
技术标签:
【中文标题】袋外误差是如何准确计算的,它的含义是啥?【英文标题】:How is the out-of-bag error calculated, exactly, and what are its implications?袋外误差是如何准确计算的,它的含义是什么? 【发布时间】:2016-02-18 12:59:38 【问题描述】:我找到了几个解释什么是袋外错误,包括一个关于 *** 的解释:What is out of bag error in random forests
但是我找不到任何公式来精确计算它。 让我们以 MATLAB 帮助文件为例: err = oobError(B) 计算错误分类概率[...]。 B 是使用类 TreeBagger 生成的树的模型。
误分类概率是多少?仅仅是袋外数据的准确性吗?
准确率 = (TP + FP) / (P+N)
那么简单地说就是所有真正分类的实例与集合中存在的所有实例的比率?
如果这是正确的,我一方面看到了计算它的好处,如果你有一些数据集要测试,那是非常简单的,就像袋外数据集一样。
但另一方面,对于不平衡的数据集,准确性不是一个好的指标。所以我的第二个问题是:袋外错误能否处理不平衡的数据集,如果不能,在这种情况下指定它是否有效?
【问题讨论】:
我投票结束这个问题,因为它属于一些数学或计算机科学 SE。 【参考方案1】:袋外误差只是在训练期间未看到的样本上计算的误差。它在 bagging 方法中具有重要作用,因为由于训练集的引导(通过随机绘制和替换来构建新集),您实际上得到了大量未使用的训练数据(限制在 30% 左右)。如果你有很多这样的模型(比如在随机森林中你有很多树,每棵树都用自己的自举样本进行训练),那么你可以对这些误差进行平均并得到泛化误差的估计值。
误分类概率是多少?仅仅是袋外数据的准确性吗?
错误分类概率为1-Accuracy
如果这是正确的,我一方面看到了计算它的好处,如果你有一些数据集要测试,那是非常简单的,就像袋外数据集一样。
因为使用一个测试集仅近似于当前模型的质量(无论它是什么),而进行袋外测试是对整体中单个元素的一种估计(在随机森林的情况下为树)训练集的所有可能选择。这是不同的概率度量,例如参见 Tibshirani 的统计学习要素的第 7 章。此外,它的优势在于您不会浪费任何积分。保留一个单独的测试集需要相当多的点,以便您可以对剩余数据进行合理的估计(模型)。袋外估算让您能够同时说明它的表现如何 - 使用所有可用数据。
但另一方面,当涉及到不平衡的数据集时,准确性并不是一个好的指标。所以我的第二个问题是:袋外错误能否处理不平衡的数据集,如果不能,在这种情况下指定它是否有效?
袋外错误与准确性无关。它在 scikit-learn 中实现以准确工作,但它是在 any 损失函数(分类指标)上定义的。您可以使用 MCC、F1 或任何您想要的方式进行精确模拟。
【讨论】:
感谢到目前为止的回答 - 这完全有道理,即:错误 = 1 - 准确性。但是我不明白你的最后一点“袋外错误与准确性无关”。显然,该等式是基于准确性的。而且我仍然不明白 oob 错误是否可用于不平衡的类。 out-of-bag-error 是“袋外样本错误”,错误的定义是任意。 scikit-learn 开发人员决定只实现准确性,但这是理论对象,而不是 scikit-learn 的对象。所以它(作为一个对象)与准确性无关。 Scikit-learns 实现确实如此,正如你所说 - 如果你使用任何其他指标(比如在不平衡的情况下),它是无用的以上是关于袋外误差是如何准确计算的,它的含义是啥?的主要内容,如果未能解决你的问题,请参考以下文章
函数中A的含义是啥,W的含义是啥,x的含义是啥,是弧度还是邻边比斜边,b的含义是啥。