在温度预测中,哪种损失函数比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

使用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中创建了一个多类分类项目。该项目可以对…

发表回复

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