【发布时间】:2022-01-24 16:14:46
【问题描述】:
如果可能,我有 2 个问题想确定(问题以粗体显示):
我最近了解(我希望)随机森林分类算法,并尝试使用 Python 上的 sklearn 将其应用于从卫星图像派生的相当大的像素数据集(特征是不同的波段,并且标签是我自己概述的特定特征,即植被、云等)。然后我想了解模型是否遇到了方差问题,所以我想到的第一个想法就是比较训练数据和测试数据。
现在这就是让我感到困惑的地方 - 我知道有很多不同的帖子:
- 与袋外 (OOB) 错误相比,应该/不应该如何使用 CV 错误
- 如何按照设计,随机森林分类器的训练误差几乎总是 ~0(即,在训练数据上拟合我的模型并使用它在同一组训练数据上进行预测) - 无论如何似乎都是如此树的深度
关于第 2 点,我似乎永远无法比较我的训练和测试误差,因为前者总是很低,因此我决定使用 OOB 误差作为整个模型的“代表性”训练误差。然后我意识到 OOB 错误可能是一个伪测试错误,因为它本质上是在它们没有专门学习的点上测试树(在自举树的情况下),所以我默认 CV 错误是我新的“代表性”训练错误整个模型。
回顾 CV error 的使用,我最初将它用于超参数调整(例如,最大树深度、树数、标准类型等),所以我再次怀疑自己是否应该将其用作我的官方训练错误与我的测试错误进行比较。
更糟糕的是,我很难根据网络上的帖子来验证我认为是正确的,因为每个帖子只回答一小部分并且可能相互矛盾,所以有人会帮助我的 关于将什么用作我的正式训练错误并将与我的测试错误进行比较的困境?
我的第二个问题围绕着 OOB 错误如何可能是基于引导期间未选择的数据点的伪测试错误。如果这是真的,公平地说,如果禁用引导,这不成立(该算法在技术上仍然是一个随机森林,因为每个树的特征仍然是随机子采样的,只是相关性树之间可能更高)?
谢谢!!!!
【问题讨论】:
标签: python machine-learning random-forest supervised-learning