什么是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 错误的流行程度扩展到基于树的模型以及其他机器学习算法。