我想在拆分之前将特征选择步骤移动到以节省时间并允许更大的输入数据集。如果在重复的子样本中,在超过 X 百分比的案例中选择了一个特征,我将保留它。或者使用非常低的 X 来删除显然永远不会被选中的特征。由于信息泄露,我已经阅读了禁止这样做的警告,包括在这个论坛上。特征选择:如果在 CV 拆分之前完成信息泄漏? 但是,如果在几乎所有拆分后的情况下都选择了该功能,那么问题出在哪里?编辑:它确实涉及目标功能。
我可以通过要求选择发生 > 90% 的时间来在拆分之前应用特征选择吗
数据挖掘
特征选择
数据泄露
2022-02-25 15:55:56
1个回答
正如您链接的帖子中所解释的,这取决于您如何选择功能:如果它不涉及目标变量,那么它可能没问题。我将假设最常见的情况,即选择依赖于目标变量。这个问题有两个部分:
- 关于特征选择的集成方法:假设一个特定的特征被选择了 90% 的时间。这意味着 10% 的时间没有选择它,所以如果您使用单个训练集,则有 10% 的机会没有选择此功能。因此,从理论上讲,您的模型可能比“常规模型”更好,因为它包含一些“常规模型”中不会选择的功能。但是请注意,此方法也可能具有负面影响,因为这些特征不是作为一个整体而是单独选择的(即它可能不是特征的最佳子集)。
- 关于数据泄露的风险:顾名思义,将这种方法应用于整个数据意味着使用来自测试集的信息,因此在评估中可能存在偏差。确实,集成方法降低了偶然选择特征的风险,但对于每个特征,都有 10% 的机会不会在“常规模型”中被选择。由于此选择部分基于测试集,因此您无法确定评估是否可靠。
假设您的目标是使用交叉验证并且特征选择过程的计算量很大,我可以想到两种方法来正确地做到这一点:
- 选择一个随机的 N% 的数据(其中 N 是训练集的大小,例如,如果使用 10 倍 CV,则为 90%),对这个数据进行特征选择,然后每次都使用这个预定义的特征集,独立于训练集。这里的想法是所选特征集不能利用对整个数据的选择,因此它没有特别针对测试集或任何 CV 拆分进行优化。这应该足以获得公平的评估,尽管从技术上讲,这种方式仍然存在数据泄漏。
- 对您的数据进行额外的拆分:使用训练集,您完全应用您描述的特征选择过程,然后在其上运行 CV。在此之后,将最终模型应用于测试集。例如,将 80% 的数据作为训练集,仅基于该训练集进行特征选择和 CV ,然后将剩下的 20% 的未见实例用作测试集。这种方式没有数据泄漏,但最终评估来自单个测试集,而不是来自 CV(这里 CV 阶段可用于研究性能变化或调整超参数)。
其它你可能感兴趣的问题