【发布时间】:2014-10-25 09:53:49
【问题描述】:
分类问题描述:
- 假设一个常规数据集
X具有n样本和d特征。 - 这个分类问题有点难(特征多,样本少,总体 AUC 低
~70%)。 - 提到特征选择/提取、降维、内核和许多分类器可能很有用。所以我对尝试这些不感兴趣。
- 我不期待看到整体 AUC 的改善。目标是在特征的大海捞针中找到相关特征。
我的方法描述:
- 我选择
d特征的所有成对组合,并使用n样本创建许多二维子数据集x。 - 在每个子数据集
x上,我执行 10 倍交叉验证(使用主数据集X的所有样本)。一个非常长的过程,假设需要数周的计算。 - 我选择顶部
k对(例如根据最高 AUC)并将它们标记为+。所有其他对都标记为-。 - 对于每一对,我可以计算几个属性(例如,使用专家知识计算每对之间的关系)。无需使用主数据集
X中的标签即可计算这些属性。 - 现在我有标记为
+或-的对。此外,每一对都有许多基于专家知识计算的属性(即特征)。因此,我有一个新的分类问题。让我们将这个新生成的数据集称为Y。 - 我在遵循交叉验证规则的同时在
Y上训练分类器。令人惊讶的是,我可以用90%AUC 预测+和-标签。
据我所知,这意味着我能够选择相关的功能。然而,看到90% AUC 让我担心在这个漫长的过程中某处信息泄露。特别是在第 3 步。
我想知道是否有人能看到这种方法的任何泄漏。
信息泄露:
- 在实际特征中加入目标标签。您的分类器会在没有学到任何东西的情况下产生良好的预测。
- 在训练阶段向您的分类器显示您的测试集。您的分类器将“记住”测试集及其相应的标签,而无需“学习”任何东西。
更新 1:
我想强调的是,我确实在步骤 1 中使用了 X 的所有数据点。但是,我不再使用它们(即使是用于测试)。最终的 90% AUC 是从数据集 Y 的预测标签中获得的。
另一方面,需要注意的是,即使我将主数据集X 的值随机化,数据集Y 的计算特征也将是相同的。但是,Y 中的样本标签会发生变化,因为之前的 + 对可能不再是一个好标签。因此它们将被标记为-。
更新 2:
虽然我没有任何意见,但我将陈述我在与模式识别研究人员交谈的 4 天中得到的结果。简而言之,我确信没有信息泄漏(只要我不会回到第一个数据集X 并使用它的标签)。稍后,如果我想检查是否可以在X 中获得更好的性能(即预测样本标签),我只需要使用数据集X 的一部分进行成对比较(作为训练集)。然后我可以使用X 中的其余样本作为测试集,同时使用正预测的Y 对作为特征。
如果没有人可以拒绝此方法,我会将其设置为答案。
【问题讨论】:
标签: machine-learning cross-validation