目标变量的分布值可以用作交叉验证中的特征吗?

数据挖掘 准确性 方法
2022-02-28 20:02:04

我遇到了一个 SVM 预测模型,其中作者使用目标变量的概率分布值作为特征集中的一个特征。例如:

作者为每个玩家的每个手势建立了一个模型来猜测接下来会玩哪个手势。计算超过 1000 场比赛的分布可能看起来像(20%、10%、70%)。然后将这些数字用作特征变量来预测交叉折叠验证的目标变量。

这是合法的吗?这好像是骗人的。我认为您在计算特征时必须从测试集中排除目标变量,以免“作弊”。

4个回答

这并不一定是错的。如果您没有更好的信息,那么使用过去的表现(即先验概率)可以很好地工作,特别是当您的课程分布非常不均匀时。

使用类先验的示例方法是高斯最大似然分类和朴素贝叶斯

[更新]

由于您已向问题添加了其他详细信息...

假设您正在进行 10 倍交叉验证(保留 10% 的数据用于验证 10 个子集中的每一个)。如果您使用整个数据集来建立先验(包括 10% 的验证数据),那么是的,这是“作弊”,因为 10 个子集模型中的每一个都使用来自相应验证集的信息(即,它不是真正的盲测)。但是,如果仅使用用于该折叠的 90% 的数据为每个折叠重新计算先验,那么这是一个“公平”的验证。

这种“作弊”影响的一个例子是,如果您的数据中有一个单一的、极端的异常值。通常,使用 k 折交叉验证,异常值在验证数据中而不是在训练数据中的位置只有一倍。在验证期间将相应的分类器应用于异常值时,它可能会表现不佳。但是,如果该折叠的训练数据包括全局统计数据(来自整个数据集),那么异常值将影响该折叠的统计数据(先验),可能会人为地产生有利的性能。

我同意使用这些类型的功能没有任何问题。例如,我在建模工作中使用了到达间隔时间。然而,我注意到许多此类特征彼此之间具有“有趣的”协方差关系,因此在模型中使用多个分布特征时必须非常小心。

正如 bogatron 和 Paul 已经说过的,将一个分类器的预测用作另一个分类器的特征并没有错。实际上,所谓的“级联分类器”就是这样工作的。来自维基百科

级联是基于多个分类器串联的集成学习的一种特殊情况,使用从给定分类器的输出中收集的所有信息作为级联中下一个分类器的附加信息。

这不仅有助于通知使用新特征的后验分类器,而且还可以作为优化措施。在 Viola-Jones 对象检测框架中,依次使用一组弱分类器,以减少对象识别任务中的计算量。如果其中一个弱分类器未能识别感兴趣的对象,则不需要计算其他分类器。

在与一些有经验的统计学家交谈后,这就是我得到的。

至于论文的技术问题,我担心数据泄漏或在当前模型中使用未来信息。这也可能发生在交叉验证中。你应该确保每个模型只训练过去的数据,并预测未来的数据。我不确定他们是如何进行简历的,但这绝对很重要。防止所有泄漏源也很重要。他们确实声称没有见过的例子,但并不清楚他们在这里写了什么代码。我并不是说它们肯定会泄漏,但我说它可能会发生。