从您的图片来看,您的提议似乎是根据Y,然后计算标准差X在每一层中,然后使用该计算的组标准差作为预测变量。
这泄露了真正的价值Y进入你的预测器。当然,您的模型更准确,您基本上允许它记住Y通过给它一个字典,其中的“单词”是σ(X)其“定义”是Y.
考虑一下如果给定一个新数据集,其中只有X,并且您想要预测Y. 你打算如何使用你的新σ(X)这种情况下的预测器?你得知道Y分层X并计算σ(X)每组!
现在,如果您可以在不参考的情况下定义您的组Y,那是另一回事。
好的,我仍然不明白的是“将 Y 的值泄漏到您的预测变量中”,因为最终每个模型都使用 Y 值来计算其系数,那么有什么区别?
你是完全正确的,所有回归都使用Y计算它们的系数。详细写出依赖关系,这看起来像
Y=β0(X,Y)+β1(X,Y)X1+⋯+βn(X,Y)XN
每个系数是Y(更准确地说,Y在训练数据中),但每个预测器都不是。在您的情况下,您正在创建一个预测器,它是两者的函数 X和Y. 这就是我所说的“将 Y 的真实值泄漏到您的预测变量中”的意思。
但是让我们假设我的方法无效。然而,它在预测的交叉验证过程中给了我最小的错误。
是的,您的交叉验证错误较低也就不足为奇了。不幸的是,您的交叉验证应用程序不正确。正确的程序是这样的
- 将您的数据分成折叠和折叠对。
- 对于每一对,仅使用折叠数据计算您的特征。
- 仅使用以下值对非折叠数据进行预测X, 或作为函数的特征X.
- 平均这些预测的错误率。
您的程序违反了第二个和第三个要点。我建议您看一下《统计学习的要素》第 7 章中题为“进行交叉验证的错误和正确的方法”的部分。
我的统计学老师曾经告诉我们“如果你能创建一个更好的预测器,你就不需要向人们解释你是如何创建它的”
我并不是要在没有完整背景的情况下与您的老师相矛盾,但如上所述,这是可疑的建议。