初学者问题:在回归模型中变换目标的效果
Posted
技术标签:
【中文标题】初学者问题:在回归模型中变换目标的效果【英文标题】:Beginner Question: Effect of transforming the targets in regression model 【发布时间】:2019-05-22 22:43:31 【问题描述】:我是数据科学的新手,我正在使用 Keras LSTM,但没有成功。 并且每次计算 r2 分数都会得到 0.0。 因此,经过一番谷歌搜索后,我找到了以下 scikit-learn 示例 [1],作为数据科学的新手,我有一些我正在努力理解以下几点:
-
他们为什么要应用 exp 和 log1p ?
在 python 中是否有一种方法或假设检验技术来了解我应该对我的数据应用哪种转换以便在 LSTM 中获得更好的结果?
为什么他们将其应用于整个数据集,然后拆分为训练和测试?认为订单应该保存转换功能并稍后在测试中使用它? (不知道在这种情况下该怎么做)
[1]https://scikit-learn.org/stable/auto_examples/compose/plot_transformed_target.html#sphx-glr-download-auto-examples-compose-plot-transformed-target-py
【问题讨论】:
【参考方案1】:这些都是非常广泛的问题,但这里希望能帮助您:
他们为什么要应用 exp 和 log1p ?
您链接的文档提到了这一点:
生成了一个合成随机回归问题。目标 y 是 修改方式: (i) 翻译所有目标,使所有条目都 非负和 (ii) 应用指数函数来获得 无法使用简单的线性模型拟合的非线性目标。
所以他们正在做 exp 来创建一个非线性目标。 log1p 是拟合的,因此它可以接近于近似高斯(正态分布),因为大多数模型都做出了正态假设。
python 中有没有一种方法或假设检验技术可以知道我应该对我的数据应用哪种转换才能在 LSTM 中获得更好的结果?
没有万能的,但通常您会尝试不同的转换(log、exp、sqrt、cubert、inverse 等)来尝试使您的特征接近正态分布。不同的模型对预测变量做出不同的分布假设,并且许多模型假设为高斯分布(尽管有些模型对违反该假设具有鲁棒性)。因此,您进行特征转换以尝试使它们尽可能接近正常 - 拥有正态分布的特征并没有什么坏处。
另一方面,特征缩放是出于模型性能和收敛性的原因,如果您的特征领域差异很大,您的模型可能无法找到最佳解决方案。
他们为什么将其应用于整个数据集,然后拆分为训练和测试?认为订单应该保存转换功能并稍后在测试中使用它? (不知道在这种情况下该怎么做)
您可能会混淆特征转换和特征缩放。一起或稍后应用变换不会有任何区别 - 例如是否先拆分并稍后进行对数转换没有区别。他们这样做是为了方便、调试和代码的可读性。
但是,特征缩放完全是一个不同的问题。如果您将模型部署到生产环境,您可能需要保留缩放参数\函数并将它们分别应用于训练\测试和生产数据。
【讨论】:
以上是关于初学者问题:在回归模型中变换目标的效果的主要内容,如果未能解决你的问题,请参考以下文章
R语言回归模型构建回归模型基本假设(正态性线性独立性方差齐性)回归模型诊断car包诊断回归模型特殊观察样本分析数据变换模型比较特征筛选交叉验证预测变量相对重要度
R语言构建回归模型并进行模型诊断(线性关系不满足时)进行变量变换(Transforming variables)使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换