线性回归问题的归一化/反归一化

数据挖掘 机器学习 线性回归 预处理
2022-03-03 02:57:45

我的问题实际上很简单,我有两个规模差异很大的功能。因此,我通过将 scale=np.max(array) 用于数据和标签来使用简单的归一化。然后在预测之后,我将这个比例值乘回去。

但是由于我使用了 DNN,非线性会不会改变比例,所以使乘法无效?例如

given input data: X, label: y;
y' = y/scale
X' = X/scale
predicted = f(X')
predicted_update = predicted * scale

任何人都可以就我是否可以这样做或实际上不正确提供一些建议?我们如何处理这类问题?

2个回答

我认为没关系,只要您的训练和测试数据的每个特征的最大值大致相同。这个想法是必须对训练集进行缩放(请记住,将测试集用于未测试的任何内容都是非法的,即使用于缩放也不行)。

因此,您实际上将拟合为的函数,并且您有一个正确映射的模型。当您获得测试数据时,您只需执行即可获得预测。如前一段所述,如果您有该,那么您可以通过执行yXy=f(X)f(Xtest)scalescaletestytestytest=scalef(Xtest)

编辑:不要担心非线性

即使函数是高度非线性的,它也是一个能够将映射到的函数。如果你相信这个函数并且相信的事实,那么就没有必要担心的作用方式,因为函数组合对于所有类型的函数都是有意义的,包括线性和非线性。fXyy=yscalef

我从另一篇文章中看到: 如何在对归一化数据执行线性回归后获得原始系数?

https://stats.stackexchange.com/questions/201909/when-to-normalize-data-in-regression

看起来如果数据对回归是不变的,或者如果它是线性的,那么可以将系数乘回去。如果不是,一般是不准确的。因此,如果我们要预测价值,似乎最好不要规模化。我的各种测试表明缩减规模会变得更糟。希望其他人可以有更好的答案。