machine-learning - 为什么 MAE 很小,但在回归分析中图表没有显示出明确的关系
问题描述
我已经将真实值与预测值绘制为回归任务。我的测试集包含大约 5000 个样本,训练集包含大约 12000 个样本。当我计算 MAE 时,它的结果非常小,但是当我绘制 y_test 与预测时,它似乎并没有明确的关系(请参阅附图)
我如何解释这样的结果?当我看到情节和 MAE 的性质时,随机森林(第二个,MAE 0.028)显示出比线性回归(第一个 MAE 0.059)更好的关系。如果我只呈现 MAE,那么可以得出结论,我的回归模型表现得非常好,但图中并没有显示出这种关系。任何人都可以在这种情况下提供一些建议吗?
解决方案
改进模型的最常见方法是转换一个或多个变量,通常使用“对数”转换。
转换变量会改变其分布的形状。通常,最好的起点是具有不对称分布的变量,而不是更对称或钟形分布的变量。
一般来说,回归模型更适用于更对称的钟形曲线。尝试不同类型的变换,直到找到最接近该形状的变换。通常不可能接近那个目标,但这就是目标。
因此,假设您将收入的平方根作为尝试获得更对称的形状,您的分布如下所示:
这很好,但它仍然有点不对称。让我们尝试获取收入的对数,这会产生这种形状:
如果你取一个数字的 log10(),你说的是“10 的幂给了我这个数字”。例如,这是一个包含四个数据点的简单表格,包括收入和日志(收入)。
这种转换的有趣之处在于您的回归不再是线性的。当温度从 20 上升到 30 时,收入从 10 上升到 100,相差 90 个单位。然后当温度从 30 到 40 时,收入从 100 到 1000,差距更大。
另请注意,您不能取 0 或负数的对数(没有 X,其中 10X = 0 或 10X = -5),因此如果您进行对数转换,您将丢失回归中的这些数据点. 处理这种情况的常用方法有 4 种:
- 取平方根或立方根。这些不会像记录日志那样显着改变曲线的形状,但它们允许 0 保留在回归中。
- 如果不是太多的数据行为零,并且这些行在理论上并不重要,您可以决定继续记录日志并从回归中丢失几行。
- 取 log(y) 代替 log(y),取 log(y+1),这样零就变成 1,然后可以保留在回归中。这会使您的模型有点偏颇,并且有些不受欢迎,但实际上它的负面影响通常很小。
推荐阅读
- haskell - 使用 Haskell 中纸牌游戏的数据模型避免不可能的状态
- sql-server - 将 SQL Server 文件流数据移动到 AWS S3
- javascript - 如何使用 react-calendar 动态呈现列表?
- ruby-on-rails - Rails 随机选择 3 个不同的帖子
- regex - 使用正则表达式删除操作
- c# - 客户端节点无法连接到服务器
- android - React Native - 一个应用程序可以查看/查询用户设备上的现有应用程序吗?
- android - 64 位 Delphi android 应用程序未在 32 位手机中运行
- javascript - 如何使用 JavaScript 从 HTML 模板文件将 HTML 和 CSS 插入网页?- Chrome 扩展
- javascript - 安装在 Enzyme 中时,为什么带有 ResponsiveContainer 的 ReCharts 图表不呈现图表的子元素?