首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以在分割前应用特征选择,要求选择发生时间超过90%?

我是否可以在分割前应用特征选择,要求选择发生时间超过90%?
EN

Data Science用户
提问于 2020-06-20 18:50:22
回答 1查看 101关注 0票数 2

为了节省时间并允许更大的输入数据集,我希望将特征选择步骤移到拆分之前。如果在重复子样本中,在超过X%的情况下选择了一个特性,我将保留它。或者使用非常低的X来删除那些显然永远不会被选中的特性。我读过警告说不要这样做,包括在这个论坛上,因为信息泄露。特征选择:如果在简历拆分之前泄露信息?,但是如果在几乎所有的分离后案例中都会选择这个特性,那么问题在哪里呢?编辑:它确实涉及目标特性。

EN

回答 1

Data Science用户

发布于 2020-06-21 00:45:20

正如您在文章中所解释的,这取决于您如何选择特性:如果它不涉及目标变量,那么它可能是好的。我将假设最常见的情况,即选择依赖于目标变量。这个问题有两部分:

  1. 关于特征选择的集成方法:假设一个特定的特征被选择了90%的时间。这意味着它没有被选中10%的时间,所以如果您使用的是一个单一的培训集,它将有10%的机会不选择此功能。因此,从理论上讲,您的模型可能比“常规模型”更好,因为它包含了一些在“正则模型”中不会被选中的特性。但是,请注意,这种方法也可能有负面的副作用,因为这些特性不是作为一个整体来选择的,而是单独选择的(也就是说,它可能不是最优的特征子集)。
  2. 关于数据泄漏的风险:根据定义,将这种方法应用于整个数据意味着使用来自测试集的信息,因此在评估中存在潜在的偏差。的确,集成方法减少了偶然选择特征的风险,但对于每一个特征,都有10%的可能性不会在“常规模型”中被选中。由于此选择部分基于测试集,因此无法确定评估是否可靠。

假设您的目标是使用交叉验证,并且功能选择过程在计算上非常昂贵,那么我可以想出两种方法来正确地做到这一点:

  • 选择数据的随机N% (其中N是训练集的大小,例如,如果使用10倍CV,则为90% ),对该数据进行特征选择,然后每次独立于训练集使用此预定义的特征集。这里的想法是,所选的一组功能不能利用对整个数据的选择,因此它并不是针对测试集或任何CV分割进行特别优化的。这应该足以得到公平的评价,尽管从技术上讲,仍然存在这样的数据泄漏。
  • 在你的数据中做一个额外的分割:在训练集中你准确地应用了你描述的用于特征选择的过程,然后在上面运行简历。在此之后,将最终模型应用于测试集。例如,将80%的数据用于培训集,仅根据该培训集进行特征选择和简历,然后使用20%的未见实例作为测试集。这样没有数据泄漏,但是最终的评估来自一个测试集,而不是CV (这里的CV阶段可以用来研究性能变化或调整超参数)。
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/76363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档