R语言ranger库回归森林重测训练数据结果不一致的原因及正确性确认
Ranger回归模型两种训练集预测结果的差异解析
差异产生的原因
rf_reg$predictions:这是ranger回归模型默认输出的袋外(OOB)预测值。随机森林训练时,每棵树都会从训练集中有放回抽样生成子集,OOB预测只使用那些没抽到当前样本的树来做预测——完全不利用该样本参与训练的树的信息,目的是无偏评估模型的泛化能力。predict(rf_reg, data = training_df)$predictions:这是用模型里所有树对训练样本做的预测,包括那些在训练时包含该样本的树。这种预测会用到样本自身参与训练的信息,结果会更贴合训练数据,甚至可能出现过拟合。
至于分类场景下没发现差异,是因为分类任务是基于投票输出类别,像iris这种简单数据集,模型拟合度极高,OOB预测和全树预测的投票结果几乎完全一致,所以你没察觉到区别;而回归是数值预测,哪怕微小的差异也很容易被发现。
哪一种结果是正确的?
没有绝对的“正确”,要看你的用途:
- 要是想评估模型对新数据的预测能力(泛化性),选
rf_reg$predictions(OOB预测),它是无偏的,更接近模型对未知数据的表现。 - 要是想查看模型对训练数据的拟合程度(比如排查过拟合),选
predict(rf_reg, data = training_df)$predictions,它反映了模型对训练数据的最优拟合结果。
内容的提问来源于stack exchange,提问作者Jhonny
相关产品推荐
相关产品推荐

