在交叉验证之前执行无监督特征选择实际上是否还好?


9

“统计学习的要素”中,我发现以下语句:

有一项条件:可以在不进行样品检测之前进行初始的无监督筛选步骤。例如,在开始交叉验证之前,我们可以在所有50个样本中选择具有最高方差的1000个预测变量。由于此过滤不涉及类标签,因此不会给预测变量带来不公平的优势。

这真的有效吗?我的意思是,通过预先过滤属性,我们不会模仿训练数据/新数据环境-那么,是否对正在执行的过滤没有监督是很重要的吗?在交叉验证过程中实际执行所有预处理步骤是否更好?如果不是这种情况,则意味着可以预先执行所有无监督的预处理,包括功能归一化/ PCA等。但是,通过对整个训练集进行这些操作,实际上是在向训练集泄漏一些数据。我可以同意,相对稳定的数据集,这些差异很可能应该很小-但这并不意味着它们不存在,对吧?思考这个问题的正确方法是什么?

Answers:


2

作为交叉验证之前的一个阶段,无监督特征选择与特征规范化有些相似:

  1. 从交叉验证中的特定倍数的角度来看,火车数据偷看了测试数据(尽管仅在自变量中)。

  2. 这种偷窥是相对温和的。

这个问题讨论了交叉验证前的特征归一化。引用Dikran Marsupial的答案

最好将交叉验证视为一种估计统计过程性能的方法,而不是统计模型。因此,为了获得无偏的性能估计,您需要在交叉验证的每个折叠中分别重复该过程的每个元素,其中包括标准化。

因此,如果您可以节省资源,最好的办法是让每个交叉验证折叠都可以从头开始数据相关的处理。

ÿ


好吧,这基本上与我的想法吻合,这里的最后一句话实际上是对我的问题的简短回答。谢谢,我将其作为一个可接受的答案。
Matek

1
影响可能很小,但可能不会那么小。就像您说的那样,这就像在CV之前预先缩放自变量一样,它将使用“未来”(测试数据)来帮助缩放“现在”(培训数据),而这在现实世界中是不会发生的。如果您有随机的弃牌(不使用时间序列,分层等),那么效果会更小,但是为什么要打破训练/测试障碍呢?
韦恩

@韦恩我当然同意你的看法,只要有可能,最好不要打破火车/考试的障碍。就我个人而言,我从来没有遇到过这样的事例(无监督的FS和/或规范化),但是我却遇到过以“正确的方式”进行特征选择的绝对不可行的情况(即,折)。但是,从您的正确答案(我赞成)可以看出,您遇到了相反的情况,因此显然两种情况都存在。
阿米·塔沃里

我不确定我是否遇到过归一化也有所不同的CV结果,这归因于我通常进行10倍CV,这意味着测试倍数仅为10%,这使其效果更小。我已经看到与67/33甚至75/25的非CV拆分有所不同。
韦恩

9

我希望在这个问题上与@AmiTavory的观点以及统计学习的要素有所不同。

我来自一个样本量很小的应用领域,我的经验是,未经监督的预处理步骤也会引入严重的偏差。

在我的领域中,最常见的是在训练分类器之前使用PCA进行降维。尽管我无法在此处显示数据,但我已经看到PCA +(交叉验证的LDA)与交叉验证的(PCA + LDA)低估了大约一个数量级的错误率。(这通常表明PCA不稳定。)

至于“元素”的“不公平优势”论证,如果检查染色+测试用例的差异,我们最终会得到与训练用例和测试用例均适用的功能。因此,我们在此处创建了一个自我实现的预言,这是过分乐观的原因。如果您具有合理的样本量,则此偏差较低。

因此,我建议采用一种比Elements更为保守的方法:

  • 验证中需要考虑多个情况的预处理计算:即,仅根据各自的训练集进行计算(然后将其应用于测试数据)
  • 可以单独考虑每种情况的预处理步骤(我是光谱学家:示例将是基线校正和强度归一化,这是逐行归一化),只要它们第一步之前就可以从交叉验证中退出。计算多种情况。

话虽如此,交叉估值也是进行适当验证研究的捷径。因此,您可能会提出实用意见:

  • 您可以检查所讨论的预处理是否产生稳定的结果(例如,可以通过交叉验证来实现)。如果您发现它已经以较低的样本量实现了完美的稳定性,恕我直言,您可能会争辩说,将其从交叉验证中撤出不会带来太大的偏差。

  • 但是,引用一位前主管的话:计算时间不是科学依据。
    我经常去进行几次折叠的“潜行预览”和几次迭代以进行交叉验证,以确保所有代码(包括结果的摘要/图形),然后在服务器上放置一整夜或周末,以备不时之需。更细粒度的交叉验证。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.