如何处理 XGBoost 中高估小值和低估高值的问题?

数据挖掘 机器学习 xgboost
2022-02-22 21:29:11

我跑去XGBoost预测 a 的价格cars dataset,我想知道有什么替代方案可以解决这种问题,即高估了较小的值而低估了较高的价格。

我尝试应用log价格,因为它偏向正确的分布,但仍然有这种不良影响。

此外,作为一个额外的问题,log(price) 将预测分数、平均相对误差或计算为 mean(ABS(RD)) 的 MRE 提高了 2%,如果有人对为什么会发生这种情况有直觉的话,那就太好了.

下图中RDrelative difference预测值和实际值之间的值,price bucket是一个分桶变量,其中数字表示price low interval bound over 1000.

在此处输入图像描述

2个回答

我认为它不一定与执行回归的算法类型(此处为 XGBoost)有关 - 但与回归算法的固有性质有关。
许多损失函数旨在减少之间的距离yy^.
这可能导致模型预测分布更加紧密y的意思。

我会检查几件事来验证这一点:
1)比较真实的分布y并预测y^.
2) 在其他回归模型上验证此错误模式。

我会尝试改善结果的事情:
1)在训练集中对样本低/高y值进行采样。
2)调整损失函数,使低/高y值的错误权重更大。
3)寻找强调低/高y值的特征并更好地设计它们。

也许您可以尝试使用多个 XgBoost 模型而不是 1 个模型,并对它们的预测取平均值(或加权平均值)。