首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在对测试数据进行最终评估后删除特征

在对测试数据进行最终评估后删除特征
EN

Data Science用户
提问于 2020-12-29 17:37:32
回答 2查看 368关注 0票数 7

请您告诉我,如果我正在进行统计或机器学习的正常操作在这个过程中?

我想从y1变量估计气象变量{x_1, ..., x_{10}}。我使用来自不同气象站的数据。我保留了一些气象站作为测试地点/数据。

我做特征选择和超参数调优与交叉验证的训练数据.我的模型是随机森林(RF)和其他两个基于树的模型。

在我在测试现场评估我的模型之前,我对保留其中一个特性--气象站的海拔,x_{10} --持怀疑态度。这是一个静态特性,在与一个站点相关的所有数据行中都是存在/相同的。了解一点射频,让我担心这个模型将使用它作为一种"site_id“,并可能过分适应这一功能。如果我使用线性/非线性回归模型,我不会担心。

因此,我训练我的模型一次和一次没有x_{10}作为一个功能。

然后,我在测试站点上评估我的模型,结果发现没有x_{10}的模型在测试站点上做得更好。

x_{9}说,甚至在测试这个关于静态特性的假设之前,我也想通过删除其他特性进行类似的测试。

现在,我的问题是:既然我知道x_{10}伤害了我的模型,我就喜欢在过滤的特性集中重新培训没有x_{10}的模型,以及测试模型性能的x_{9}

在我看来,我似乎用我的测试数据过滤掉了我的特性,所以这是不对的。但是,我有这样的信息,如果x_{10}最终伤害了我的模型,我为什么要继续测试假设并准备我的模型,x_{10}在其中?

EN

回答 2

Data Science用户

回答已采纳

发布于 2020-12-29 21:05:06

您所做的是基于测试集的手动特性选择。这样做是不正确的:理论上,特性选择应该只使用培训集和验证集,而不是最终的测试集。风险在于数据泄漏:您正在使用来自测试集的信息修改模型。也许在测试集中没有这些特性的情况下性能会更好,因为它们碰巧对这个特定的当前测试集是不好的。因此,模型可能过于适合,您将无法在这个测试集上检测到这个问题,因为它是过度拟合的来源。

因此,原则上,最好先分离数据,将测试保留到最终评估之前,并使用验证集进行中间评估,直到最终模型(包括功能集)确定为止。

在实践中,有时我们会意识到,在最终测试集上应用模型之后,我们应该做一些不同的事情。这是一个错误,但这不是世界末日,通常偏见的风险很低。正如您所说的,显然我们不需要忽略对模型性能很重要的信息。但是,如果您知道要使用多个特性重复此过程,则应该使用单独的验证集(从培训数据中提取),而不是测试集:这样使用测试集越多,数据泄漏和偏差的风险就越高。

票数 5
EN

Data Science用户

发布于 2020-12-29 21:06:59

这是一个很好的例子,它通常被称为“数据泄漏”--您正在从测试集返回到模型集的信息。这在一定程度上是不可避免的,这也是为什么(特别是对于深入学习)数据科学家经常将数据集分成训练、验证和保留集。验证/测试集用于在使用最终的保留集评估准确性之前进行您正在讨论的那种简约的模型调优。

顺便说一句,听起来你是对的,海拔可能是一个适合的功能。解决这一问题的一种方法是将特征转换为垃圾箱,其中可能包括每个区域的多个观测值,而不完全失去实际海拔的信息值。

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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