tf.contrib.metrics.streaming_pearson_correlation

View source on GitHub

Computes Pearson correlation coefficient between predictions, labels.

The streaming_pearson_correlation function delegates to streaming_covariance the tracking of three [co]variances:

  • streaming_covariance(predictions, labels), i.e. covariance
  • streaming_covariance(predictions, predictions), i.e. variance
  • streaming_covariance(labels, labels), i.e. variance

The product-moment correlation ultimately returned is an idempotent operation cov(predictions, labels) / sqrt(var(predictions) * var(labels)). To facilitate correlation computation across multiple batches, the function groups the update_ops of the underlying streaming_covariance and returns an update_op.

If weights is not None, then it is used to compute a weighted correlation. NOTE: these weights are treated as "frequency weights", as opposed to "reliability weights". See discussion of the difference on https://wikipedia.org/wiki/Weighted_arithmetic_mean#Weighted_sample_variance

predictions A Tensor of arbitrary size.
labels A Tensor of the same size as predictions.
weights Optional Tensor indicating the frequency with which an example is sampled. Rank must be 0, or the same rank as labels, and must be broadcastable to labels (i.e., all dimensions must be either 1, or the same as the corresponding labels dimension).
metrics_collections An optional list of collections that the metric value variable should be added to.
updates_collections An optional list of collections that the metric update ops should be added to.
name An optional variable_scope name.

pearson_r A Tensor representing the current Pearson product-moment correlation coefficient, the value of cov(predictions, labels) / sqrt(var(predictions) * var(labels)).
update_op An operation that updates the underlying variables appropriately.

ValueError If labels and predictions are of different sizes, or if weights is the wrong size, or if either metrics_collections or updates_collections are not a list or tuple.