matlab - 袋外误差是如何准确计算的,它的含义是什么?

标签 matlab machine-learning classification random-forest

我找到了一些关于袋外错误的解释,其中包括 stackoverflow 上的一个:What is out of bag error in random forests

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

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

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

那么简单地说就是所有真正分类的实例与集合中存在的所有实例的比率?

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

但另一方面,对于不平衡的数据集,准确性不是是一个好的指标。所以我的第二个问题是:袋外错误能否应对不平衡的数据集,如果不能,在这种情况下指定它是否有效?

最佳答案

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

What is the misclassification probability? Is it simply the accuracy of the out-of-bag data?

分类错误的概率为1-准确度

If this is correct, I on the one hand see the benefit of calculating it, at is quite simple if you have some datasets to test on anyway, as the out-of-bag dataset are.

因为使用一个测试集仅近似当前模型的质量(无论它是什么),而袋外操作是对集合中单个元素(随机森林中的树)的一种估计训练集的所有可能选择。这是不同的概率度量,例如请参阅 Tibshirani 的统计学习要素的第 7 章。此外,它的优点是您不会浪费任何积分。保留单独的测试集需要大量的点,以便您可以对剩余数据获得合理的估计器(模型)。袋外估计使您能够在使用所有可用数据的同时了解其性能如何。

But on the other hand, accuracy is known to be not a good metric when it comes to imbalanced datasets. So my second question then is: Can the out-of-bag error cope with imbalanced datasets, and if not, is it even a valid point to specify it in such cases?

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

关于matlab - 袋外误差是如何准确计算的,它的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752151/

相关文章:

matlab - 在网格上的不同点放置高斯函数

matlab - 如何在图像中找到局部最大值

matlab - 如何高效绘制多边形多孔?

matlab - 在 Matlab 中计算协方差矩阵

matlab - 在Matlab中实现递归特征消除

多标签分类中的性能评估

python - 使用关键字对列中的文本进行分类

r - 如何在 R 中的二进制 h2o GBM 中获得每个类的不同变量重要性?

python-3.x - 使用 Spacy 创建常见问题解答机器人的过程是什么?

python - 为什么随机森林分类器 .predict() 和 .predict_proba() 的预测不匹配?