阅读(15.8k) 书签 (0)

TensorFlow函数:tf.metrics.auc

2018-10-10 16:04 更新

tf.metrics.auc函数

tf.metrics.auc(
    labels,
    predictions,
    weights=None,
    num_thresholds=200,
    metrics_collections=None,
    updates_collections=None,
    curve='ROC',
    name=None,
    summation_method='trapezoidal'
)

定义在:tensorflow/python/ops/metrics_impl.py.

通过Riemann求和计算近似AUC.

该auc函数创建四个局部变量true_positives,true_negatives,false_positives和false_negatives,它们被用于计算AUC.为了离散AUC曲线,使用线性间隔的阈值集来计算回调和精确值对.因此,使用回调值的高度通过误报率计算ROC曲线下的面积,而PR曲线下的面积是通过回调的精度值的高度计算的.

该值最终返回为auc,这是一个幂等运算,它计算精度与召回值的离散曲线下的区域(使用上述变量计算).num_thresholds变量控制的离散度与较大的阈值更接近真正的AUC.近似的质量可能会有很大的不同,具体取决于num_thresholds.

为获得最佳结果,predictions应大致均匀地分布在[0,1]范围内,而不是在0或1附近达到峰值.如果不是这样的话,AUC近似的质量可能会很差.设置summation_method为“minoring”或“majoring”可以通过提供AUC的下限或上限估计来帮助量化近似值中的误差.

为了估计数据流上的度量,该函数创建一个update_op操作来更新这些变量并返回auc.

如果weights是None,则权重默认为1.使用权重0来屏蔽值.

参数:

  • labels:与predictions的形状匹配的Tensor,将被转换为bool.
  • predictions:任意形状的浮点Tensor,其值在该范围[0, 1]内.
  • weights:可选的Tensor,其秩为0或与labels具有相同的等级,并且必须可广播到labels(即,所有维度必须为1,或与相应的labels维度相同).
  • num_thresholds:离散roc曲线时要使用的阈值数.
  • metrics_collections:应添加auc的可选集合列表.
  • updates_collections:应添加update_op的可选集合列表.
  • curve:指定要计算的曲线的名称,的'ROC'[default]或'PR'(Precision-Recall曲线).
  • name:可选的variable_scope名称.
  • summation_method:指定使用的Riemann求和方法(https://en.wikipedia.org/wiki/Riemann_sum):'trapezoidal'[default]应用梯形规则;'careful_interpolation',它的变体只是PR-AUC-内插(真/假)正的更正确的插值方案而不同于精度的比率;'minoring',适用于增加间隔的左求和和减少间隔的右求和;“majoring”恰恰相反.请注意,'careful_interpolation'严格优先于'trapezoidal'(即将弃用),因为它对ROC采用相同的方法,并且对PR曲线更好

返回:

  • auc:表示当前曲线下面积的标量Tensor.
  • update_op:适当增加true_positives,true_negatives,false_positives和false_negatives变量的操作,其值与auc匹配.

可能引发的异常:

  • ValueError:如果predictions和labels有不匹配的形状,或者weights不是None,它的形状和predictions不匹配,或者如果metrics_collections或updates_collections的任何一个不是一个列表或元组.
  • RuntimeError:如果启用了急切执行.