近似 ROC 或 PR 曲线的 AUC(曲线下面积)。
用法
tf.keras.metrics.AUC(
num_thresholds=200, curve='ROC',
summation_method='interpolation', name=None, dtype=None,
thresholds=None, multi_label=False, num_labels=None, label_weights=None,
from_logits=False
)
参数
-
num_thresholds
(可选)默认为 200。离散化 roc 曲线时使用的阈值数。值必须 > 1。 -
curve
(可选)指定要计算的曲线的名称,'ROC' [默认] 或 'PR' 用于 Precision-Recall-curve。 -
summation_method
(可选)指定黎曼求和法用过的。 'interpolation'(默认)应用mid-point求和方案ROC
.对于PR-AUC,插入(真/假)阳性,但不插入精确率(详见 Davis & Goadrich 2006); 'minoring' 对递增区间应用左求和,对递减区间应用右求和; 'majoring' 则相反。 -
name
(可选)指标实例的字符串名称。 -
dtype
(可选)度量结果的数据类型。 -
thresholds
(可选)用作离散化曲线阈值的浮点值列表。如果设置,num_thresholds
参数将被忽略。值应在 [0, 1] 中。端点阈值等于 {-epsilon, 1+epsilon} 对于小的正 epsilon 值将自动包含在这些阈值中,以正确处理等于 0 或 1 的预测。 -
multi_label
布尔值,表示是否应该这样对待多标签数据,其中 AUC 是针对每个标签单独计算,然后在标签之间进行平均,或者(当为 False 时)是否应该在 AUC 计算之前将数据展平为单个标签。在后一种情况下,当多标签数据传递到 AUC 时,每个 label-prediction 对都被视为一个单独的数据点。对于multi-class 数据,应设置为 False。 -
num_labels
(可选)标签的数量,当multi_label
为 True 时使用。如果未指定num_labels
,则在第一次调用update_state
时创建状态变量。 -
label_weights
(可选)用于计算多标签数据的 AUC 的非负权重列表、数组或张量。当multi_label
为 True 时,权重将应用于各个标签 AUC,然后对它们进行平均以生成多标签 AUC。当它为 False 时,它们用于在计算扁平数据上的混淆矩阵时对各个标签预测进行加权。请注意,这与 class_weights 不同,因为 class_weights 根据其标签的值对示例进行加权,而 label_weights 仅取决于展平前该标签的索引;因此label_weights
不应用于multi-class 数据。 -
from_logits
布尔值,指示预测(update_state
中的y_pred
)是概率还是 sigmoid logits。根据经验,当使用 keras 损失时,损失的from_logits
构造函数参数应该与 AUCfrom_logits
构造函数参数匹配。
属性
-
thresholds
用于评估 AUC 的阈值。
ROC(接收器操作特征;默认)或 PR(精确召回)曲线的 AUC(曲线下面积)是二元分类器的质量度量。与准确度不同,与 cross-entropy 损失一样,ROC-AUC 和 PR-AUC 评估模型的所有操作点。
此类使用黎曼和来近似 AUC。在度量累积阶段,预测在预定义的桶中按值累积。然后通过插值 per-bucket 平均值来计算 AUC。这些桶定义了评估的操作点。
该指标创建四个局部变量,true_positives
, true_negatives
, false_positives
和 false_negatives
,用于计算 AUC。为了离散化 AUC 曲线,使用一组线性间隔的阈值来计算成对的召回率和精度值。因此,ROC-curve 下的区域是通过误报率使用召回值的高度来计算的,而 PR-curve 下的区域是使用召回率的精度值的高度来计算的。
该值最终以 auc
的形式返回,这是一种幂等运算,用于计算精度与召回值的离散曲线下的面积(使用上述变量计算)。 num_thresholds
变量控制离散化程度,阈值越多越接近真实 AUC。根据 num_thresholds
的不同,近似的质量可能会有很大差异。 thresholds
参数可用于手动指定阈值,从而更均匀地分割预测。
为了获得真实 AUC 的最佳近似值,predictions
应大致均匀分布在 0、1 范围内。如果不是这种情况,AUC 近似值的质量可能会很差。将 summation_method
设置为 'minoring' 或 'majoring' 可以通过提供 AUC 的下限或上限估计值来帮助量化近似误差。
如果 sample_weight
是 None
,则权重默认为 1。使用 0 的 sample_weight
来屏蔽值。
单机使用:
m = tf.keras.metrics.AUC(num_thresholds=3)
m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9])
# threshold values are [0 - 1e-7, 0.5, 1 + 1e-7]
# tp = [2, 1, 0], fp = [2, 0, 0], fn = [0, 1, 2], tn = [0, 2, 2]
# tp_rate = recall = [1, 0.5, 0], fp_rate = [1, 0, 0]
# auc = ((((1+0.5)/2)*(1-0)) + (((0.5+0)/2)*(0-0))) = 0.75
m.result().numpy()
0.75
m.reset_state()
m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9],
sample_weight=[1, 0, 0, 1])
m.result().numpy()
1.0
compile()
API 的用法:
# Reports the AUC of a model outputting a probability.
model.compile(optimizer='sgd',
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=[tf.keras.metrics.AUC()])
# Reports the AUC of a model outputting a logit.
model.compile(optimizer='sgd',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=[tf.keras.metrics.AUC(from_logits=True)])
相关用法
- Python tf.keras.metrics.AUC.merge_state用法及代码示例
- Python tf.keras.metrics.Accuracy用法及代码示例
- Python tf.keras.metrics.Accuracy.merge_state用法及代码示例
- Python tf.keras.metrics.Mean.merge_state用法及代码示例
- Python tf.keras.metrics.Hinge用法及代码示例
- Python tf.keras.metrics.SparseCategoricalAccuracy.merge_state用法及代码示例
- Python tf.keras.metrics.RootMeanSquaredError用法及代码示例
- Python tf.keras.metrics.SparseCategoricalCrossentropy.merge_state用法及代码示例
- Python tf.keras.metrics.sparse_categorical_accuracy用法及代码示例
- Python tf.keras.metrics.FalseNegatives用法及代码示例
- Python tf.keras.metrics.TrueNegatives用法及代码示例
- Python tf.keras.metrics.RecallAtPrecision.merge_state用法及代码示例
- Python tf.keras.metrics.SpecificityAtSensitivity用法及代码示例
- Python tf.keras.metrics.Mean用法及代码示例
- Python tf.keras.metrics.poisson用法及代码示例
- Python tf.keras.metrics.LogCoshError用法及代码示例
- Python tf.keras.metrics.MeanSquaredLogarithmicError用法及代码示例
- Python tf.keras.metrics.FalsePositives.merge_state用法及代码示例
- Python tf.keras.metrics.OneHotMeanIoU.merge_state用法及代码示例
- Python tf.keras.metrics.TopKCategoricalAccuracy用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.metrics.AUC。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。