初学者问题:在回归模型中转换目标的效果

Beginner Question: Effect of transforming the targets in regression model


我是数据科学的新手,我正在使用 Keras LSTM 但没有成功。 并且计算r2分数每次都是0.0。
因此,在谷歌搜索之后,我发现了下面的 scikit-learn 示例 [1],作为数据科学的新手,我有一些我正在努力理解以下几点:

  1. 他们为什么应用 exp 和 log1p ?
  2. 在 python 中是否有一种方法或假设检验技术可以知道我应该对我的数据应用哪种转换以便在 LSTM 中获得更好的结果?
  3. 为什么他们将其应用于整个数据集,然后拆分进行训练和测试?在思想顺序应该保存转换功能并在以后的测试中使用它? (不知道在这种情况下该怎么做)


[1] https://scikit-learn.org/stable/auto_examples/compose/plot_transformed_target.html#sphx-glr-download-auto-examples-compose-plot-transformed-target-py

这些是非常广泛的问题,但这里有一些希望对您有所帮助:

他们为什么应用 exp 和 log1p?

您链接的文档提到了这一点:

A synthetic random regression problem is generated. The targets y are modified by: (i) translating all targets such that all entries are non-negative and (ii) applying an exponential function to obtain non-linear targets which cannot be fitted using a simple linear model.

所以他们正在做 exp 来创建一个非线性目标。 log1p 是合适的,因此它可以接近于近似高斯分布(正态分布),因为大多数模型都做出正态假设。

在 python 中是否有一种方法或假设检验技术可以知道我应该对我的数据应用哪种转换以便在 LSTM 中获得更好的结果?

没有放之四海而皆准的方法,但通常您会尝试不同的变换(log、exp、sqrt、cubert、inverse 等)来尝试让您的特征接近正态分布。不同的模型对预测变量做出不同的分布假设,许多模型假设高斯分布(尽管有些模型对于违反该假设是稳健的)。因此,您进行特征转换以尝试使它们尽可能接近正态 - 具有正态分布的特征不会有什么坏处。

另一方面,特征缩放是出于模型性能和收敛的原因而进行的,如果特征的域差异很大,您的模型可能找不到最佳解决方案。

为什么他们将其应用于整个数据集,然后拆分进行训练和测试?在思想顺序应该保存转换功能并在以后的测试中使用它? (不知道在这种情况下该怎么做)

您可能会混淆特征变换和特征缩放。一起或稍后应用转换不会有任何区别 - 例如是否先拆分然后再进行对数转换没有区别。他们这样做是为了代码的方便、调试和可读性。

然而,特征缩放完全是一个不同的问题。如果将模型部署到生产环境,您可能需要保留缩放参数\函数并将它们分别应用于训练\测试和生产数据。