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:如果启用了急切执行.