Keras如何计算精度?

Keras如何计算精度?,第1张

Keras如何计算精度?

您在这里有些困惑;您说的是准确性,同时显示了损失的公式。

您显示的方程式确实是二元分类的交叉熵损失公式(或简称为 logistic损失 )。

y[i]
是标签,实际上是0或1。

p[i]
预测,通常被解释为概率,是[0,1]中的实数(无舍入)。

现在对于每个而言

i
,总和中只有一个词会生存-第一个词何时消失
y[i] = 0
,第二个词何时消失
y[i] = 1

让我们看一些例子:

假设

y[0] = 1
,虽然我们已经预测了
p[0] = 0.99
(即相当不错的预测)。和的第二项消失(因为
1 - y[0] =0
),而第一项变为
log(0.99) = -0.01
;因此,此样本预测(
i=0
)对总损失的贡献为0.01(由于
-
总和前面的符号)。

现在假设下一个样本的真实标签再次为1,即

y[1] = 1
,但是在这里我们对;做出了较差的预测
p[1] =0.1
。再次,第二项消失了,现在这个预测对总损失的贡献为
-log(0.1) = 2.3
,确实比我们第一个良好的预测要大,这是我们应该直观地期望的。

作为最后一个示例,让我们假设

y[2] = 0
,并且我们在此做出了非常好的预测
p[2] = 0
。因此,第一项消失了,第二项变为

(1 - y[2]) * log(1 - p[2]) = 1 * log(1) = log(1) = 0

也就是说,正如我们直觉地期望的那样,我们没有损失的贡献,因为我们在这里做出了非常好的预测

i=2

逻辑损失公式仅计算各个预测的所有这些误差,将它们求和,然后除以其数量

n

但是,这是 损失
(即

scores[0]
在您的摘要中),而不是准确性。

损失和准确性是不同的东西;粗略地说,从 业务 角度来看,准确性是我们真正感兴趣的,而损失是学习算法(优化器)从 数学
角度试图使目标最小化的目标函数。更粗略地说,您可以将损失视为业务目标(准确性)对数学域的“转换”,这是分类问题中必不可少的转换(在回归问题中,损失和业务目标通常是损失)。相同,或至少原则上可以相同,例如RMSE)…

Keras会自动将我们的预测取整为0或1吗?

实际上是:为了计算准确性,我们在预测的概率中隐式设置了一个 阈值
(在二进制分类中通常为0.5,但是在高度不平衡的数据中可能有所不同);因此,在中

model.evaluate
,Keras实际上将预测转换为1 `p[i]

0.5

,否则转换为0。然后,通过简单地对
y_true==y_pred`(正确预测)的情况进行计数并除以样本总数,就可以计算出准确度,从而得出[0,1]中的数字。

因此,总结一下:

  • 损失 的计算没有四舍五入 __
  • 有一个隐式阈值运算用于 精度 计算 __


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存