机器学习中平方损失的可接受值是多少(使用 mxnet gluon 的平方损失函数)?

机器算法验证 损失函数
2022-03-22 20:39:56

我在 mxnet 中检查了胶子的平方损失函数实现,计算如下:

L=12i|labelipredi|2

https://mxnet.apache.org/versions/1.8.0/api/python/docs/api/gluon/loss/index.html#mxnet.gluon.loss.L2Loss

这里的关键是损失平方,然后乘以12

现在,假设我想预测一个标签 ∈ {0,1} 其中 P(1)=P(0)=0.5

而不是做任何计算,我只是总是预测我的值等于0.5

如果标签为 1,我得到一个损失 =0.125L=12i|10.5|2

如果我的标签是 0,我也会得到 =0.125L=12i|00.5|2

这是否意味着我的目标应该是让我的损失小于 0.125,这样我的预测才有用?

或者在这种情况下(如果标签是 ∈ {0,1} ),切换到 softmax 模型会更明智吗?

3个回答

的持续预测是一个很好的基准。气象预报员将其称为“气候预报”,即仅依赖于目标变量的整体和无条件分布的预报。0.5

任何其他模型都应该在这个基准上有所改进。如果没有,最好使用简单的基准测试。

“有任何用处”意味着,嗯,使用预测。在某些应用中,即使是对琐碎基准的微小改进也可能很有价值(例如,在股票价格预测中)。在其他应用程序中,我们需要更大的改进才能在基准上使用模型。

是否应该切换到 softmax 取决于最终输出的质量。如果具有 softmax 的模型产生更好的预测,那么一定要使用它。

很难说什么是可接受的性能。的预测是正确的,这听起来可能很棒,但如果数据是 MNIST 手写数字,那么这样的性能就相当平庸了。90%

(但是请注意,“分类准确性”比它最初看起来更成问题。)

然而,能够超越一些基线是一个好的开始,它在线性回归中在线性回归中,目标是在给定一些特征值的情况下预测您期望的值。猜测这样一个合理的值的最天真的方法是每次都如果你不能做得比这更好,那么当你的老板可以用 Python 调用并做得更好时,为什么还要付钱给你呢?(这是斯蒂芬·科拉萨回答中的“整体和无条件分布”。)R2ynp.mean(y)

您提出的建议使用相同的想法。如果您知道每个结果有 50/50 的机会,那么为了使您的模型值得使用,您的模型应该能够胜过基于 50/50 标签分布的随机猜测。

在您正在解决的问题中,有很多类似物的选择R2. 目前尚不清楚它们中的任何一个应该多大才能让您的模型满足业务需求,因为这取决于问题和业务需求(客户需求、监管机构需求、投资者需求等)。但是,如果他们表明您的模型优于总是猜测相同值的幼稚模型,那么您就没有为您的建模技能提供强有力的理由。

可能感兴趣的链接:

为什么要在平均线周围放置方差来定义R2? 这个特定的选择是由什么决定的?

当 R2 分数非常好时,为什么要获得非常高的 MSE/MAE/MAPE 值

为什么在平方误差前面加上 1/2 会使数学更容易?(数据科学)

除了其他答案之外,我还要补充一点,通常通过机器学习,我们通过找到使损失最小化的权重来拟合模型,但是我们通常使用具有更“直观”含义的不同度量来评估模型(并且要健壮,这应该在未用于训练模型的不同数据集上,即训练-测试拆分)。

例如,对于分类,我们经常使用交叉熵作为损失,但是当我们评估模型时,我们使用准确率、F1 分数或其他一些指标来实际确定我们的模型是否“足够好”。对于诸如您正在处理的回归问题,我们更常使用平方误差损失,并且使用 r-squared 之类的东西作为度量是相当普遍的(尽管它肯定不是一个完美的度量)。