### 回归问题:如何解决输入特征高度小数的问题

我的输入数据结构如下:

   X1     |    X2     |    X3     | ... | 输出(标签)118.12341 | 118.12300 | 118.12001 | ... | [介于0和1之间的值] 例如 0.423645

我使用tensorflow来解决预测Output变量未来值的回归问题。为此,我构建了一个前馈神经网络,包含三个隐藏层,使用relu激活函数,以及一个带有linear activation的单节点输出层。该网络使用adam优化器进行反向传播训练。

我的问题是在训练网络几千个周期后,我发现输入特征和输出的这些高度小数值仅能预测到小数点后第二位,例如:

真实值 = 0.456751 | 预测值 = 0.452364

然而,这是不被接受的,我需要至少到小数点后第四位的精度才能接受这个值。

问:是否有任何可靠的技术可以正确解决这个问题以获得更好的结果(可能是某种转换算法)?

提前感谢。


回答:

假设你使用的是常规的MSE损失函数,这可能不适合你对每个实例误差的相对低容忍度。进一步解释,MSE定义如下:预测值与真实值差异的平方的平均值

假设你有4个实例,以及两个训练函数生成的每实例错误率如下:

F1错误率:(4, 0.0004, 0.0002, 0.0002)

F2错误率:(0.9, 0.9, 0.9, 0.9)

显然,MSE会选择F2,因为F2的平均MSE是0.81,而F1的平均MSE大约是16。

因此,总结来说,MSE对小于1的值差异赋予的权重太小,而对大于1的值差异则因为平方函数的应用而夸大了权重。

你可以尝试使用MAE,即平均绝对误差,它的唯一区别是不对各个误差进行平方运算,而是计算绝对值。还有许多其他回归损失函数可以对较小的错误赋予显著的权重,例如HUBER损失函数,使用小delta值(<0),你可以在这里阅读更多关于这些损失函数的信息这里

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注