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

时间:2018-12-23 07:55:50

标签: scikit-learn statistics lstm data-science hypothesis-test


我是数据科学的新手,我曾与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

1 个答案:

答案 0 :(得分:1)

这些是非常广泛的问题,但这希望可以帮助您:

他们为什么应用exp和log1p?

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

  

生成了一个综合随机回归问题。目标y是   修改如下:(i)翻译所有目标,以便所有条目   非负数;(ii)应用指数函数获得   无法使用简单线性模型拟合的非线性目标。

因此,他们正在做实验以创建非线性目标。 log1p很合适,因此它可以接近于近似高斯(正态分布),因为大多数模型都采用正态假设。

python中是否有一种方法或假设测试技术可以知道我应该对数据进行哪种转换才能在LSTM中获得更好的结果?

没有一种千篇一律的功能,但是通常您尝试不同的转换(对数,exp,sqrt,cubert,逆等)以使特征近似于正态分布。不同的模型对预测变量做出不同的分布假设,许多模型假设为高斯分布(尽管有些模型对违反该假设具有鲁棒性)。因此,您可以进行特征转换,以使它们尽可能接近正常值-具有正态分布的功能不会有什么坏处。

另一方面,功能缩放是出于模型性能和收敛性的原因,如果功能的域相差很大,则模型可能找不到最佳解决方案。

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

您可能在特征转换和特征缩放之间感到困惑。一起或以后应用转换不会有任何区别-例如无论您是先拆分后再进行对数变换,这都没有区别。他们这样做是为了方便,调试和提高代码的可读性。

但是,特征缩放完全是另一个问题。如果将模型部署到生产中,则可能需要保留缩放参数\函数,并将其分别应用于训练\测试和生产数据。