仅对训练数据集进行探索性数据分析会更好吗?


15

我正在对数据集进行探索性数据分析(EDA)。然后,我将选择一些特征来预测因变量。

问题是:
我应该只对训练数据集执行EDA吗?还是我应该将训练和测试数据集结合在一起,然后对它们都进行EDA并根据此分析选择特征?

Answers:


6

我建议您参阅http://statweb.stanford.edu/~tibs/ElemStatLearn/printings/ESLII_print10.pdf中的“ 7.10.2交叉验证的错误和正确方法” 。

作者给出了一个示例,其中有人执行以下操作:

  1. 筛选预测变量:找到“好”预测变量的子集,这些子变量与类标签显示出相当强的(单变量)相关性
  2. 仅使用此预测变量子集,即可构建多元分类器。
  3. 使用交叉验证来估计未知的调整参数并估计最终模型的预测误差

这听起来非常类似于对所有数据(即训练和测试)进行EDA,并使用EDA选择“良好”预测变量。

作者解释了这为什么会带来问题:交叉验证的错误率将人为地降低,这可能会误导您以为您找到了一个好的模型。


1

因此,您想确定对因变量有影响的自变量?

然后,实际上两种方法都不值得推荐。

在确定了研究问题之后,您应该发展自己的理论。也就是说,使用文献,您应该确定应该起作用的变量(您应该能够解释原因)。


6
尽管这种观点似乎与统计测试的经典概念相吻合(因此我很不同意),但仍有很多现代问题对此不可行。例如,假设您要查看20,000个蛋白质编码基因中的任何一个是否与新的遗传性疾病有关。有没有背景,将你准备,没办法“拿出一个理论”和EDA是只有这样,才能上手。而且,如果您有足够的数据来进行EDA 验证性分析,则实际上可以达到目标。
Cliff AB

3
“您应该发展自己的理论”-这是一个好主意,但并非总是可能的,尤其是在行业中。有时,您只是在没有进行任何理论开发的情况下进行预测
Aksakal

1

在测试数据上应用EDA是错误的。

培训是寻找正确答案以创建最佳模型的过程。这个过程不仅限于在训练数据上运行代码。使用来自EDA的信息来决定使用哪种模型,调整参数等是训练过程的一部分,因此不应被允许访问测试数据。因此,要忠实于您,请仅使用测试数据来检查模型的性能。

另外,如果您发现模型在测试期间表现不佳,然后又重新调整模型,那也不好。而是将您的训练数据一分为二。使用一个进行训练,使用另一个进行测试和调整模型。请参阅测试集和验证集有什么区别?


0

这个答案的段落Hastie进一步解释了第245页

“在此示例中,这是进行交叉验证的正确方法:

  1. 将样本随机分为K个交叉验证折痕(组)。
  2. 对于每一折,k = 1、2,...。。。,K
    (a)使用除k倍样本外的所有样本,找到与类别标签表现出相当强(单变量)相关性的“良好”预测变量的子集。
    (b)仅使用此预测变量子集,使用除k倍样本外的所有样本建立多元分类器。
    (c)使用分类器来预测k倍样本的类别标签。”

-3

您对整个数据集进行EDA。例如,如果您使用的是留一法交叉验证,那么如何只对训练数据集进行EDA ?在这种情况下,每个观察都至少要训练和坚持一次。

因此,不,您可以形成对整个样本数据的理解。如果您处于工业环境中,那就更加明显了。您应该向公司的利益相关者展示数据的趋势和一般描述,然后在整个样本中进行。

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.