gpt4 book ai didi

python - tf.keras.metrics.SpecificityAtSensitivity num_thresholds 解释

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:15 29 4
gpt4 key购买 nike

我正在努力解决 tf.keras.metrics.SensitivityAtSpecificity .我对孤立的敏感性和特异性概念没有意见,但我不确定这两者在这个单一指标中是如何相关的。

更具体地说,我不确定如何解释 num_thresholds 参数。文档中的示例有 num_thresholds=1。使用相同的输入数据将 num_thresholds 设置为大于 1 似乎总是返回 1.0 的度量值。

def print_metric_value(num_thresholds):
# other values based on docs example
m = tf.keras.metrics.SensitivityAtSpecificity(
0.4, num_thresholds=num_thresholds)
m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9])
print('Result with num_thresholds = %d: %.1f' %
(num_thresholds, m.result().numpy()))

print_metric_value(1) # 0.5 - same as docs
print_metric_value(2) # 1.0
print_metric_value(200) # 1.0

最佳答案

num_thresholds 是指阈值的数量。但您可能会问:什么是阈值(在此上下文中)?答案是在[0,1]范围内的阈值实际上是所有大于该值的预测都将被视为正值(即1)并且所有低于该值的预测将被视为正值的值负数(即 0)。

例如,将预测向量视为 [0, 0.5, 0.3, 0.9],这实际上是置信度分数(例如概率)。现在,如果我们应用 0.1 的阈值,我们会得到 [0, 1, 1, 1];或者如果我们应用 0.6 的阈值,我们会得到 [0, 0, 0, 1](即只有最后一次预测的置信度高于 0.6)。

现在假设您想要以固定的灵敏度监测特异性的变化。 SensitivityAtSpecificity 指标所做的是,为了计算灵敏度的值,它会首先计算不同阈值的特异性,然后选择与您提供的特异性值最接近特异性的阈值(例如,在您的问题中,您已将 0.4 作为特异性值)。然后在该阈值处计算灵敏度,并将作为该指标的值返回。同样的事情适用于 SpecificityAtSensitivity 指标,只需交换本段中的“特异性”和“敏感性”即可。

您可能还会问:阈值是多少?答案是如果 num_thresholds=1 那么唯一的阈值是 0.5。如果 num_thresholds > 1 那么,除了 0 和 1 作为阈值外,区间 (0,1) 将被分割成 num_thresholds - 1 个相等的子区间,分割点为选择作为额外的阈值。例如:

num_threshold  |  thresholds
=============================
1 | [0.5]
2 | [0, 1]
3 | [0, 0.5, 1]
4 | [0, 0.33, 0.66, 1]
5 | [0, 0.25, 0.5, 0.75, 1]
...

关于python - tf.keras.metrics.SpecificityAtSensitivity num_thresholds 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286350/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com