随机森林算法是机器学习和数据科学中一种强大的集成技术,但在学习该算法时,许多人往往忽略了OOB评分的概念,因此未能完全理解随机森林作为集成方法的重要性。本文将通过实例帮助理解OOB评分的概念。
理解在机器学习模型中使用随机森林算法的动机,包括它们相对于其他模型的优势。
了解自助采样和OOB样本的概念,以及它们如何有助于随机森林的形成和评估。
了解如何计算OOB评分,其解释以及作为随机森林模型内部验证机制的作用。
分析使用OOB评分进行模型评估的好处和局限性,包括它与其他模型评估技术的比较。
随机森林或随机决策森林是一种用于分类和回归问题的集成学习方法,它通过在训练时构建多个独立的决策树(使用自助采样)并在所有树上输出多数预测作为最终输出。构建多个决策树有助于模型泛化数据模式,而不是学习数据模式,从而减少方差(减少过拟合)。
但是,如何选择每个新决策树的训练集呢?这就是自助采样发挥作用的地方!
# 示例代码:自助采样
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
import numpy as np
# 创建一个简单的分类数据集
X, y = make_classification(n_samples=1000, n_features=4, n_informative=2, n_redundant=0, random_state=42)
# 初始化随机森林分类器
rf = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=42)
# 训练模型
rf.fit(X, y)
# 打印OOB分数
print("OOB Score: ", rf.oob_score_)
自助采样本质上是随机抽样替换。例如,主训练数据集包含五个动物,现在要从这个主训练集中制作不同的样本。固定样本大小,随机选择一个数据点作为样本,选择后将其放回主集(替换),再次从主训练集中选择一个数据点作为样本,并在选择后放回。重复上述步骤,直到达到指定的样本大小。
在制作样本时,数据点是随机选择的,并且有替换,未能成为该特定样本的数据点被称为OOB点。
OOB评分是随机森林算法中特别用于最小方差结果的强大验证技术。在使用交叉验证技术时,每个验证集已经被一些决策树在训练中看到或使用过,因此存在数据泄露,导致更多的方差。但是,OOB评分防止了数据泄露,并提供了一个具有低方差的更好模型,因此使用OOB评分来验证模型。
让通过一个例子来理解OOB评分:假设有一个包含5行的训练集和一个分类目标变量,用于判断动物是否为家养/宠物?在随机森林中,构建了多个决策树。下面,展示了一个特定决策树DT_1的自助样本。在这里,Rat和Cat数据被遗漏了。由于Rat和Cat是DT_1的OOB,将使用DT_1预测Rat和Cat的值(注意:在训练树时,Rat和Cat的数据尚未被DT_1看到)。
就像DT_1一样,还有许多其他的决策树,它们要么遗漏了Rat,要么遗漏了Cat,或者两者都遗漏了。假设第3、7和100个决策树将“Rat”作为OOB数据点。这意味着它们在预测“Rat”的值之前都没有看到“Rat”的数据。因此,记录了所有从树DT_1、DT_3、DT_7和DT_100预测的“Rat”的值。
发现,聚合/多数预测与“Rat”的实际值相同。(注意:没有一个模型在预测数据点的值之前看到过数据,但仍然正确预测了值)。
类似地,每个数据点都被传递给将其作为OOB的行为的树进行预测,并为每一行记录聚合预测。OOB评分计算为从OOB样本中正确预测的行数。
OOB错误是错误分类OOB样本的数量。
无数据泄露:由于在Python中使用OOB样本验证模型,这意味着在训练模型时没有以任何方式使用数据,因此没有任何数据泄露,这确保了更好的预测模型。
方差较小:由于OOB评分泛化确保没有泄露,因此没有数据过拟合,因此方差最小。
更好的预测模型:OOB评分有助于最小化方差,因此它比使用其他验证技术的模型更具预测性。
计算较少:由于它允许在训练过程中测试数据,因此需要较少的计算。
耗时:可以使用这种方法在训练时测试数据,但与其他验证技术相比,它稍微耗时一些。