在温度预测中,哪种损失函数比MSE更好?

我的特征向量大小为1×4098,每个特征向量对应一个浮点数(温度)。在训练中,我有10,000个样本。因此,我的训练集大小为10000×4098,标签为10000×1。我想使用线性回归模型从训练数据中预测温度。我使用了3个隐藏层(512, 128, 32),并使用MSE损失函数。然而,使用TensorFlow时,我只得到了80%的准确率。你能建议我使用其他损失函数来获得更好的表现吗?


回答:

让我从理论上解释一下选择损失函数的依据。正如你可能猜到的,这一切都取决于数据。

MSE有一个很好的概率解释:它对应于在假设分布p(y|x)为高斯分布时的最大似然估计(MLE):p(y|x) ~ N(mu, sigma)。由于MLE会收敛到真实参数值,这意味着在这一假设下,所找到的最小值很可能是你能得到的最佳拟合。当然,你可能找到的是局部最小值而不是全局最小值,还有一个隐含的假设,即你的训练数据很好地代表了x的分布。但这种不确定性是不可避免的,所以现实中我们只能接受它。

继续讨论,L1损失(绝对差值)的最小化等同于在假设p(y|x)服从拉普拉斯分布时的MLE最大化。这里得出同样的结论:如果数据符合这一分布,那么没有其他损失函数会比L1损失更好。

Huber损失没有严格的概率解释(至少我不知道),它介于L1和L2之间,根据delta的选择更接近其中一个或另一个。

这如何帮助你找到正确的损失函数?首先,这意味着没有一种损失函数在默认情况下优于其他。其次,你对数据的理解越好,你就越能确定你选择的损失函数是正确的。当然,你可以交叉验证所有这些选项并选择最佳的一个。但这里有一个很好的理由来进行这种分析:当你对数据分布有信心时,你会看到随着增加新的训练数据和增加模型复杂性,表现会稳步提升。否则,模型可能永远无法泛化。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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