将值除以 100 时回归问题得到更好的结果

Posted

技术标签:

【中文标题】将值除以 100 时回归问题得到更好的结果【英文标题】:Regression problem getting much better results when dividing values by 100 【发布时间】:2020-11-15 22:26:06 【问题描述】:

我正在研究 pytorch 中的回归问题。我的目标值可以介于 0 到 100 或 0 到 1 之间(它们表示 % 或 % 除以 100)。

数据不平衡,我有更多数据但目标较低。

我注意到,当我使用 0-100 范围内的目标运行模型时,它不会学习 - 验证损失没有改善,25% 大目标的损失非常大比该组的标准大。

但是,当我使用 0-1 范围内的目标运行模型时,它会学习并且我会得到很好的结果。

如果有人能解释为什么会发生这种情况,并且如果使用 0-1 范围是“作弊”,那就太好了。

另外 - 我应该缩放目标吗? (如果我使用更大或更小的范围)。

一些附加信息 - 我正在尝试为特定任务微调 bert。我使用 MSEloss。

谢谢!

【问题讨论】:

【参考方案1】:

我认为您的观察与批量标准化有关。有一个paper 写在这个主题上,有很多媒体/数据科学的帖子,我不会在这里列出。想法是,如果您的模型和损失函数中没有非线性,那没关系。但即使在 MSE 中,您也确实存在非线性,这使得它对目标和源数据的缩放都很敏感。您可以尝试在密集层或卷积层之后将Batch Normalization 层插入模型。根据我的经验,它通常会提高准确性。

【讨论】:

以上是关于将值除以 100 时回归问题得到更好的结果的主要内容,如果未能解决你的问题,请参考以下文章

将值计算从 SQL 移到 PHP 层会更好吗?

当我将值从服务传递到我的角度组件时,结果错误

如果小于 Max,则通过消除最少用户将值除以其他值

满足某些条件时将值替换为 NaN 或 Inf

将varchar转换为十进制棒球平均值

如何在图表管道后保留Splunk中的表字段?尝试将值连接到'over'参数,但得到'未找到结果'