什么是OOB错误?


简介

OOB 或袋外错误和 OOB 分数是与随机森林相关的术语。随机森林是由决策树组成的集成,它提高了单个决策树的预测效果。OOB 错误用于衡量基于树的模型(如随机森林、决策树和其他使用装袋方法的机器学习模型)预测中的错误。在 OOB 样本中,错误分类的数量就是 OOB 错误。

在本文中,让我们探讨 OOB 错误/分数。在继续之前,让我们先简要概述一下随机森林和决策树。

随机森林算法

随机森林是由决策树组成的集成。决策树模型使用基于规则的系统进行预测,该系统根据具有简单决策的特征划分数据。每个做出决策的点都成为一个节点。当许多决策树的预测结果结合起来时,就形成了一个随机森林模型。随机森林是一种自举聚集模型。随机森林用于回归和分类。

与决策树相比,随机森林更好,因为:

  • 它们对异常值不敏感

  • 可以处理非线性数据

  • 过拟合较少

  • 可以有效地处理大型数据集

  • 准确率高于其他算法

OOB(袋外分数)

它是随机森林的性能指标。在随机森林算法中,一些样本不用于训练过程。这些被称为袋外样本。这些样本用于测试模型性能,从而生成 OOB 分数。在训练过程中,模型看不到这些样本。

袋外 (OOB) 错误

OOB 错误是使用 scikit-learn 包计算的。它可以根据 OOB 样本来估计随机森林模型的性能。对于 OOB 计算,在选择未用于训练树的样本时会考虑每个决策树。因此,为每个决策树计算 OOB 错误,并对所有树进行平均以找到随机森林模型的 OOB 错误。

使用 Scikit Learn 的代码实现

import numpy as np
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier

## dataset
data_x, data_y = make_classification(n_samples=5000,n_features=20,n_informative=10,n_classes=2)

## create model
model = RandomForestClassifier(n_estimators=200,oob_score=True)
model.fit(data_x, data_y)
err_OOB = 1 - model.oob_score_

print("err_OOB: {}".format(err_OOB))

输出

err_OOB: 0.088

优势:OOB 分数/错误

  • 它确保模型具有更好的预测能力,因为计算分数的 OOB 样本未使用在模型训练中,并且模型从未见过这些样本。

  • 由于没有数据暴露,因此它具有较小的方差且不过拟合。

  • 可以在训练过程中测试数据,因此每个测试集的计算时间较少。

缺点:OOB 分数/错误

  • 训练模型的总时间可能会增加,因为 OOB 的计算需要足够的时间。

  • 它适用于小型数据集,因为大型数据集会消耗更多时间。

结论

与其他关于随机森林的验证指标相比,OOB 错误有时更胜一筹。它提供了更好的预测结果,并且过拟合问题较少。但是,对于大型数据集,它需要花费一些时间。OOB 有助于更好地预测和减少模型的过拟合,同时在测试数据时减少计算时间。计算 OOB 错误的流行程度扩展到基于树的模型以及其他机器学习算法。

更新于:2023年9月26日

326 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告