在机器学习领域,尤其是在集成学习中,OOB(Out-of-Bag)分数是一种重要的验证技术。它主要用于评估模型在每一轮迭代中的表现,以减少最终模型的总体误差。本文将探讨OOB分数的概念、重要性及其在随机森林等集成算法中的应用,并通过实例来解释其核心直觉。
OOB分数是一种在集成学习算法中,特别是在bagging算法中用来衡量每个基模型误差的技术。知道,bagging算法包括自助采样(bootstrapping)和聚合(aggregation)两个阶段。在自助采样阶段,数据样本被抽取并输入到基模型中,每个基模型基于这些样本进行训练。最终,在聚合阶段,通过聚合基模型的预测结果来得到模型的最终输出。
在自助采样的每一步中,从样本中抽取一小部分数据点输入到基学习器中,每个基学习器在这些样本数据上进行预测。这个样本上的预测误差被称为OOB误差。OOB分数是指在OOB样本上正确预测的数据数量。这意味着,基模型的误差越大,其OOB分数就越低。这个OOB分数被用作特定基模型的误差,并根据此来增强模型的性能。
OOB分数的必要性可能引发疑问。OOB分数是通过对自助采样样本数据上的验证数据集进行正确预测的数量来计算的。这个OOB分数帮助bagging算法理解基模型在未知数据上的错误,从而可以对基模型进行超参数调整。
例如,一个完全深度的决策树可能会导致过拟合。假设有一个完全深度的决策树作为基模型,并且它在数据集上过拟合了。在过拟合的情况下,训练数据上的误差率会很低,但在测试数据上会非常高。因此,从自助采样样本中取出验证数据,OOB分数会很低。由于模型过拟合,验证数据上的误差会很高,这将导致OOB分数降低。
如上例所示,OOB分数帮助模型理解模型表现不佳的场景,并利用这些信息减少模型的最终误差。
让尝试理解OOB分数的工作原理。知道,OOB分数是衡量在验证数据集上正确预测的数量。验证数据是自助采样样本数据的子样本,输入到基模型中。因此,这里将为每个基模型记录验证数据,每个基模型将在自助采样样本上进行训练。一旦所有基模型在输入选择上训练完成,将使用验证样本来计算基模型的OOB误差。
如上图所示,数据样本包含总共1200行,其中三个自助采样样本将被输入到基模型进行训练。现在,从自助采样样本1、2和3中,将取出一小部分或验证部分作为OOB样本。这些基模型将在自助采样的其他部分上进行训练,一旦训练完成,将使用OOB样本来预测基模型。一旦基模型预测了OOB样本,它将计算OOB分数。所有基模型都将遵循相同的过程;因此,根据OOB误差,模型将增强其性能。
from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(oob_score=True)rf.fit(X_train, y_train)print(rf.oob_score_)
1. 提升模型性能:OOB分数显示了基模型在验证数据集上的错误,模型可以根据这些错误提升性能。
2. 无数据泄露:由于OOB样本的验证数据来自自助采样样本,数据仅用于预测,这意味着数据不会被用于训练,确保了数据不会被泄露。模型不会看到验证数据,这对于保持OOB分数的真实性是很好的。
3. 对小数据集更有利:如果数据集大小是小到中等,OOB分数是一种极好的方法,它在小数据集上表现良好,并返回更好的预测模型。
1. 高时间复杂度:由于验证样本被取出并用于验证模型,对于多个周期执行相同过程需要很多时间;因此,OOB分数的时间复杂度非常高。
2. 空间复杂度:由于一些验证数据是从自助采样样本中收集的,现在模型中会有更多数据的分割,这将导致需要更多的空间来保存和使用模型。