排列特征对训练集与验证集的重要性

机器算法验证 回归 预测 随机森林 特征选择
2022-03-23 02:51:04

当我比较训练集与验证集上的排列特征重要性 (PFI) 时,一些特征具有高值 (PFI) 用于训练,但低值 (PFI) 用于验证。

对我来说,一个结论是:c、d、f、gi接缝是一种噪音或“标签泄漏”。

有没有额外的结论?

排列特征重要性的条形图:

排列特征对训练集的重要性

排列特征在火车上的重要性

置换特征对验证集的重要性

置换特征对测试的重要性

NB 任务是由随机森林回归完成的回归(预测)。

3个回答

在训练集和测试集上运行特征重要性算法时,观察到的某些特征的重要性的差异可能表明模型倾向于使用这些特征进行过度拟合。这确实与您对噪音问题的直觉密切相关。

换句话说,您的模型过度调整了 wrt 特征 c、d、f、g、I。

在训练或测试集上运行特征的重要性在文献中没有得到足够的解决。然而,这篇博文提供了一个很好的,虽然简单的,对这个问题的分析

第一:忽略你对训练集的结果,它们毫无价值。谁在乎一个特征在预测构建模型的记录方面有多好?

第二:此时你不能对特征 c,d,f,g 做任何事情。您已经建立了模型,是的,这些功能在预测测试集的值时没有用,但是如果您现在要删除它们,您的测试集将成为训练过程的一部分,您将没有测试集. 在这一点上,您所能使用的只是知道这些功能对您的模型来说是无用的。移除它们并重新训练模型类似于我们都知道的逐步回归,这是不好的。

如果您想使用此度量来选择特征并改进您的模型,我相信这样的方法会起作用:将您的数据拆分为训练/验证/测试。然后将火车分成火车/测试,我猜叫它train2和test2。在 train2 上建立模型并在 test2 上测试特征重要性。然后,您可以删除任何不相关的功能。现在像往常一样继续训练/测试/验证。

好吧,让我们想想这些数字的实际含义。

如果我们以特征g为例,我们知道我们的模型有点依赖它。如此之多,以至于如果您在对火车数据进行预测时对其值进行洗牌,您的模型性能会下降0.002(如果我是正确的)。
然而,当我们在预测看不见的数据之前做同样的事情并打乱它时,模型性能平均没有变化,这意味着该特征对你的目标没有预测能力,它对训练数据的重要性来自于使用一些你的训练数据的模式不能泛化(也就是你过度拟合)。

随机森林倾向于构建非常深的树(可能直到无法分裂的程度)。这意味着即使你有一个只是白噪声的特征,一些树最终也会在某些时候使用它进行分割,因为它们会在其中看到一些模式。这意味着总体而言,即使是噪声特征也可能对训练数据具有正的排列重要性——这就是为什么您应该真正关心的排列重要性在您的验证集上!

现在,你接下来应该做什么?随机森林对这种过度拟合有一定的抵抗力,并且有一些只包含噪声的变量不会对整体性能造成太大的损害,只要它们的相对重要性(在训练数据上)不过分,并且没有太许多人。
但是,正如您现在知道的那样,这些特征对您的回归毫无用处(并且通常作为良好实践),最好的选择是删除它们并重新训练您的模型。