如何转换一个不平衡的属性,使其更适合线性回归?

数据挖掘 数据集 线性回归
2021-10-10 04:31:37

我是数据科学的新手,但我正在努力变得更好

这里我有一个属性并绘制它的直方图 直方图

据我所知,到目前为止,这种分布是不平衡的,我的目标是稍微平衡一下,对吗?再次据我所知,我必须将此属性转换为更适合线性回归?

在这种情况下,哪种转换适用于(对于比我更有经验的人)是否显而易见?

请注意,这是一个属性,而不是我的目标,这不是我想要预测的。这是用于预测的属性之一

2个回答

您有多种选择,您可以通过查看性能来选择最佳选择。

第一个是使用猜测。对于仅正值,对数变换是有意义的热门候选者(对于此处的小值可能是正确的,以避免过大的负变换值)。

如果百分比增加具有特定的现实意义,那么对数变换是很自然的。财务数据通常是这种情况。为什么 log 是热门候选人?您可能知道,当存在附加的现实世界效应时,通常会出现正态分布。现在,当你有乘法效应时,你会得到https://en.wikipedia.org/wiki/Log-normal_distribution

其他常见的转换是幂转换,您可以在其中获取一些值的幂。我不认为还有很多非常常见的。从理论上讲,您的完美变换会使线性回归高斯噪声,但没有人能说出那会是什么,而且很可能现实无论如何都不是完全线性的。

当变换后的值遵循高斯分布时,变换会更有趣。但这只是一个猜测,最终只有最终的性能评估才能说明更多信息。

对于第二个选项,请注意您可以强制转换后的值是您想要的任何分布。例如,如果您对值进行排序,您会得到一个统一的变换分布。您甚至可以通过合适的映射将其强制为高斯。但是,在您的情况下,这将失去右侧有趣的凹凸。

我认为这些是最常见的选择。在数据科学中,没有什么是显而易见的,大多数时候你只能通过性能评估(与整个模型的交叉验证)来决定

结论:

设置性能测试(交叉验证;如果您喜欢公平的最终评估,则不在最终测试集上)并尝试以下所有方法

  • 尝试未转换。它可能已经是拥有最多信息的地方。
  • 尝试对数转换(如果您有一些非常小的值,则添加一个小的偏移量)
  • 如果您愿意,请尝试电源转换

我认为考虑到您的问题可能会对您有所帮助的是 Synthetic Minority Over-Sampling Technical for Regression (SMOTER)。有一些关于这个主题的研究。但是,与您可能遇到的分类对应物相比,它的探索程度仍然较低。

我可能会建议下面引用的论文(以及在http://proceedings.mlr.press/v74/上介绍的会议),这取决于您对从研究角度理解它的兴趣程度。我非常感谢在生成合成观测值时引入高斯噪声。

如果您对实际解决方案更感兴趣,第一作者在她的 Github 页面上提供了一个 R 实现。https://github.com/paobranco/SMOGN-LIDTA17

如果 Python 更能说服您,我最近发布了 SMOGN 算法的完全 Pythonic 实现,该算法现已可用,目前正在单元测试中。https://github.com/nickkunz/smogn

Branco, P.、Torgo, L.、Ribeiro, R. (2017)。“SMOGN:一种不平衡回归的预处理方法”。机器学习研究论文集,74:36-50。http://proceedings.mlr.press/v74/branco17a/branco17a.pdf