tf.metrics.auc(
labels,
predictions,
weights=None,
num_thresholds=200,
metrics_collections=None,
updates_collections=None,
curve='ROC',
name=None,
summation_method='trapezoidal'
)
Defined in tensorflow/python/ops/metrics_impl.py.
Computes the approximate AUC via a Riemann sum.
The auc function creates four local variables, true_positives,
true_negatives, false_positives and false_negatives that are used to
compute the AUC. To discretize the AUC curve, a linearly spaced set of
thresholds is used to compute pairs of recall and precision values. The area
under the ROC-curve is therefore computed using the height of the recall
values by the false positive rate, while the area under the PR-curve is the
computed using the height of the precision values by the recall.
This value is ultimately returned as auc, an idempotent operation that
computes the area under a discretized curve of precision versus recall values
(computed using the aforementioned variables). The num_thresholds variable
controls the degree of discretization with larger numbers of thresholds more
closely approximating the true AUC. The quality of the approximation may vary
dramatically depending on num_thresholds.
For best results, predictions should be distributed approximately uniformly
in the range [0, 1] and not peaked around 0 or 1. The quality of the AUC
approximation may be poor if this is not the case. Setting summation_method
to 'minoring' or 'majoring' can help quantify the error in the approximation
by providing lower or upper bound estimate of the AUC.
For estimation of the metric over a stream of data, the function creates an
update_op operation that updates these variables and returns the auc.
If weights is None, weights default to 1. Use weights of 0 to mask values.
Args:
labels: ATensorwhose shape matchespredictions. Will be cast tobool.predictions: A floating pointTensorof arbitrary shape and whose values are in the range[0, 1].weights: OptionalTensorwhose rank is either 0, or the same rank aslabels, and must be broadcastable tolabels(i.e., all dimensions must be either1, or the same as the correspondinglabelsdimension).num_thresholds: The number of thresholds to use when discretizing the roc curve.metrics_collections: An optional list of collections thataucshould be added to.updates_collections: An optional list of collections thatupdate_opshould be added to.curve: Specifies the name of the curve to be computed, 'ROC' [default] or 'PR' for the Precision-Recall-curve.name: An optional variable_scope name.summation_method: Specifies the Riemann summation method used (https://en.wikipedia.org/wiki/Riemann_sum): 'trapezoidal' [default] that applies the trapezoidal rule; 'careful_interpolation', a variant of it differing only by a more correct interpolation scheme for PR-AUC - interpolating (true/false) positives but not the ratio that is precision; 'minoring' that applies left summation for increasing intervals and right summation for decreasing intervals; 'majoring' that does the opposite. Note that 'careful_interpolation' is strictly preferred to 'trapezoidal' (to be deprecated soon) as it applies the same method for ROC, and a better one (see Davis & Goadrich 2006 for details) for the PR curve.
Returns:
auc: A scalarTensorrepresenting the current area-under-curve.update_op: An operation that increments thetrue_positives,true_negatives,false_positivesandfalse_negativesvariables appropriately and whose value matchesauc.
Raises:
ValueError: Ifpredictionsandlabelshave mismatched shapes, or ifweightsis notNoneand its shape doesn't matchpredictions, or if eithermetrics_collectionsorupdates_collectionsare not a list or tuple.RuntimeError: If eager execution is enabled.