非线性回归:原始和对数目标变量的残差图和 RMSE

机器算法验证 回归 残差 非线性回归 助推
2022-03-20 01:43:38

我有房屋的租金价格,分布有点偏差(scipy.stats.skew 为 1.84)。

图。1:图片1

我在未转换的数据 (1.) 和对数转换的目标变量 (2.) 上运行 XGBRegressor。在 2. 我还对目标变量取幂(引入原始比例)以比较残差图。

  1. 我在未转换的数据上运行 XGBRegressor 并得到测试 RMSE: 177 和以下残差图以及预测与实际价格。该图显示数据存在异方差性。

图 2:图片2

  1. 如果我在对数转换数据上运行 XGBRegressor,我会得到测试 RMSE:180.5(如果我取回指数)和以下残差图以及预测与实际价格的对比(在对数数据上)。

图3图3 如果我对 2 的对数目标变量和预测进行指数化。我得到以下图表。它们看起来几乎与 1. 中的图相同,并且显示了与异方差性相同的问题。所以,我没有得到任何改善。

图 4:图4

我的问题是:

  1. 据我所见,对数变换确实解决了偏度,但并没有提高 RMSE(我猜是因为我使用了非线性算法,所以算法不受偏度的影响)。这意味着,我不应该对它进行日志转换,也不应该关注残差图。这是对的吗?

  2. 当我使用非线性回归器时,我是否应该为偏度而烦恼,我应该进行对数转换吗?如果不是,但我仍然看到日志数据的指标 (RMSE) 有所改善,我是否可以说:“我记录它是因为它使我的指标有所改善”(这听起来是一个非常薄弱的​​论点)?这种行为的解释是什么?是因为优化算法的收敛吗?

  3. 另外,当我使用非线性回归器时,残差图仍然是一个很好的诊断方法吗?

  4. 当我使用线性回归器并且我的数据是倾斜的,但未转换数据的 RMSE 低于对数转换数据时,我应该怎么做,这意味着什么(或为什么会发生)?

1个回答

尽管您的问题似乎是基于使用增强的回归树算法(XGBRegressor,我没有经验),但您的问题似乎是标准线性回归中也面临的一些问题,我的大部分答案都基于此。如何进行取决于您要完成的工作。首先,需要澄清几个问题。

首先,如果回归模型的参数是线性的,则它通常被认为是线性的在这个术语中,预测变量或结果/目标变量的非线性变换本身不会使模型成为非线性的。由于您显然使用的是增强回归树而不是经典的线性回归,因此尚不清楚线性/非线性区别是否真的适用。

其次,目标变量不需要在标准线性回归中具有对称分布,尽管这有助于回归树。正如您对残差图的适当关注所表明的那样,残差的分布很重要。

第三,整个数据集的 RMSE(这似乎是您所展示的)可能不是衡量模型质量的最佳方法。特别是如果您打算使用该模型来预测新案例,则交叉验证或引导可以提供对此类未来性能的更好估计。

现在回答你的问题:

  1. 线性和对数转换价格的回归尝试不同的事情:第一个尝试最小化绝对值(例如,美元)的误差,第二个尝试最小化相对/分数的误差(例如,预测价格的百分比误差)。您的应用程序关心哪种类型的错误?如果您更关心小数误差,则应使用对数变换,并且您不必担心从对数尺度进行反向变换时绝对误差会显得更大。但是,无论您选择哪种比例,您都应该始终注意残差。

  2. 目标变量的偏度是标准线性回归中的一个问题,前提是某些预测变量也适当偏斜,以便残差不偏斜。通常需要转换预测变量和目标变量来满足线性回归的假设并产生表现良好的残差。使用基于树的回归方法,使用目标变量的平均值来选择树的截止值,可以推荐消除目标变量中的偏度;ISLR的作者在他们的回归树示例中为此目的进行了对数变换(第 304 页及以下)。对数转换意味着残差将是分数而不是绝对值,这似乎对这些类型的数据有意义。

  3. 您应该始终注意残差图。

  4. 将非转换价格回归的 RMSE 与对数转换价格回归的指数 RMSE 进行比较并不总是很有用。在您的对数转换分析中,对数(分数)刻度绝对误差最大的情况也是绝对预测价格最低的情况。这种情况将对对数转换尺度中的 RMSE 误差做出很大贡献(与其他几个低价案例一样),但在非转换价格的回归中,绝对值对 RMSE 的贡献可能非常小。这可能解释了你的观察。

就如何进行而言,价格的对数转换看起来很有用,但您的模型不能很好地处理一些最低价的价格。您可能需要结合您对基础主题的知识,例如,这些案例是否有一些特殊之处(除了它们不太适合)使它们不适合包含在模型中(例如,您可能需要排除家庭成员之间收取的所有租金,这可能低于市场租金,或其他补贴单位的租金(如果有),或者某些预测变量的转换是否可能会提高绩效。为提升选择不同的调整参数可能会有所帮助。同样,您应该在整个数据集上考虑与 RMSE 不同的模型质量度量。

最后,经典的线性回归方法在许多情况下可以胜过基于树的方法。您可以尝试通过适当的基于知识的预测和目标变量值转换的标准线性回归,并使用交叉验证或自举式回归来验证您的建模方法。