如何使回归结果为整数?

机器算法验证 回归 机器学习 神经网络 分类
2022-03-16 11:57:05

我正在处理回归任务,使用 cnn 进行特征提取,使用全连接层生成回归值。

但是,每个输入数据的目标值是一个整数。有五个可能的目标值:1 代表“讨厌”,2 代表“不喜欢”,...,最终目标值 5 代表“爱”。(我知道该任务也可以被视为分类任务,但我需要将其作为回归任务来实现。)

评估指标是 rmse 和 mae。我想让 DNN 生成整数作为回归结果,这可以使评估指标更好。目前,DNN网络会为目标值4生成例如4.012。(除了阈值还有其他方法吗?或者有什么方法可以同时自动学习阈值?我正在考虑添加一个分类层连接到第二个隐藏层来帮助网络学习整数约束。)

1个回答

您正在做的是TensorFlow 似乎支持的序数回归任务,我建议您研究这种方法。同时,记住 Box​​ 的名言。

所有模型都是错误的,但有些模型是有用的。

也许你可以通过强迫它进入错误的方法来获得一个有用的模型。

一旦你接受你强迫问题进入错误的机器来解决它,预测你的序数水平之一的最简单方法是强制你的数据进入标准回归问题并将预测四舍五入到最接近的整数,限制在你的范围。TensorFlow 允许自定义损失函数。这篇文章似乎很好地解释了它。我会编写损失函数来首先将预测四舍五入到最接近的整数,然后使用 if 语句将该四舍五入的值限制为 1-5。然后根据四舍五入和约束的预测为平方或绝对损失写一些东西。

或者,您可能更喜欢使用软件中已经存在的连续损失函数,例如 MSE 或 MAE,然后只评估舍入和约束的预测。