Tensorflow 回归问题:如何解决高十进制输入特征的问题

Tensorflow 回归问题:如何解决高十进制输入特征的问题,tensorflow,machine-learning,keras,neural-network,data-analysis,Tensorflow,Machine Learning,Keras,Neural Network,Data Analysis,我有以下输入数据结构: X1 | X2 | X3 | ... | Output (Label) 118.12341 | 118.12300 | 118.12001 | ... | [a value between 0 & 1] e.g. 0.423645 在这里,我使用tensorflow来解决预测输出变量未来值的回归问题。为此,我构建了一个前馈神经网络,其中三个隐藏层具有relu激活函数,最后一个输出层具有一个线性激活节点。该网络使用adam

我有以下输入数据结构:

   X1     |    X2     |    X3     | ... | Output (Label)
118.12341 | 118.12300 | 118.12001 | ... | [a value between 0 & 1] e.g. 0.423645
在这里,我使用tensorflow来解决预测输出变量未来值的回归问题。为此,我构建了一个前馈神经网络,其中三个隐藏层具有relu激活函数,最后一个输出层具有一个线性激活节点。该网络使用adam优化器进行反向传播训练

我的问题是,在对网络进行了数千年的训练后,我意识到输入特征和输出中的高度十进制值导致预测结果仅接近小数点后第二位,例如:

Real value = 0.456751 | Predicted value = 0.452364
但是,这是不可接受的,我需要精确到小数点后第四位才能接受该值

问:是否有值得信赖的技术可以适当地解决这个问题,以获得更好的结果,可能是一种转换算法


提前感谢。

假设您使用的是常规MSE损失,这可能不适合您对每个实例的错误容忍度相对较低的目的。更详细地说,均方误差定义为预测输出和真实输出之间差值平方的平均值

假设您有4个实例和两个经过训练的函数,每个实例生成以下错误:

F1错误率:4、.0004、.0002、.0002

错误率:.9、.9、.9、.9

很明显,F2的平均均方误差为0.81,而F1的平均均方误差约为16

因此,综上所述,MSE对小于1的值的微小差异给予的权重太小,而对于大于1的值的较大差异,由于应用了平方函数,它夸大了权重

你可以试试MAE,它代表平均绝对误差,唯一的区别是它不对单个误差执行平方函数,而是计算绝对误差。还有许多其他的回归损失可能会给较小的误差带来显著的权重,比如小delta<0的HUBER损失,您可以阅读更多关于这些损失的信息


另一个可能的解决方案是将其转化为一个分类问题,例如,如果预测与第四个小数点的输出完全相同,则预测为真,否则预测为假

谢谢@Ahmed是的,我使用的是MSE,但我不认为我有将问题转化为分类问题的想法,所以请您进一步说明。此外,您是否有任何MSE的替代方案可以解决此问题?我已经更新了我的答案,并进行了修复和详细说明,请让我知道我是否可以提供更多帮助。好的,谢谢,我将尝试作出反馈