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




我是数据科学的新手,我曾使用Keras LSTM,但没有成功。计算r2的分数每次得到0.0
因此,经过一些谷歌搜索,我发现了下面的scikit学习示例[1],作为数据科学的新手,我很难理解以下几点:

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


[1]https://scikit-learn.org/stable/auto_examples/compose/plot_transformed_target.html#sphx-glr下载自动示例组合绘图转换目标py

这些都是非常宽泛的问题,但这里有一些有望帮助您的东西:

他们为什么应用exp和log1p

您链接的文档中提到:

生成一个合成随机回归问题。目标y是修改者:(i)翻译所有目标,使所有条目非负和(ii)应用指数函数来获得不能使用简单的线性模型拟合的非线性目标。

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

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

没有一刀切的方法,但通常你会尝试不同的转换(log、exp、sqrt、cubert、inverse等),试图让你的特征接近正态分布。不同的模型对预测因子做出不同的分布假设,许多模型假设是高斯的(尽管有些模型对违反该假设是稳健的)。因此,你可以进行功能转换,试图让它们尽可能接近正常——拥有正常分布的功能不会有什么坏处。

另一方面,进行特征缩放是出于模型性能和收敛的原因,如果特征的领域大不相同,则模型可能无法找到最佳解决方案。

为什么他们将其应用于整个数据集,然后拆分进行训练和测试?是否认为订单应该保存转换函数并在稍后的测试中使用它?(不确定在这种情况下如何操作)

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

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

最新更新