Shortcuts

# R2 Score¶

## Module Interface¶

Compute r2 score also known as R2 Score_Coefficient Determination.

$R^2 = 1 - \frac{SS_{res}}{SS_{tot}}$

where $$SS_{res}=\sum_i (y_i - f(x_i))^2$$ is the sum of residual squares, and $$SS_{tot}=\sum_i (y_i - \bar{y})^2$$ is total sum of squares. Can also calculate adjusted r2 score given by

$R^2_{adj} = 1 - \frac{(1-R^2)(n-1)}{n-k-1}$

where the parameter $$k$$ (the number of independent regressors) should be provided as the adjusted argument. The score is only proper defined when $$SS_{tot}\neq 0$$, which can happen for near constant targets. In this case a score of 0 is returned. By definition the score is bounded between 0 and 1, where 1 corresponds to the predictions exactly matching the targets.

As input to forward and update the metric accepts the following input:

• preds (Tensor): Predictions from model in float tensor with shape (N,) or (N, M) (multioutput)

• target (Tensor): Ground truth values in float tensor with shape (N,) or (N, M) (multioutput)

As output of forward and compute the metric returns the following output:

In the case of multioutput, as default the variances will be uniformly averaged over the additional dimensions. Please see argument multioutput for changing this behavior.

Parameters:
• num_outputs (int) – Number of outputs in multioutput setting

• adjusted (int) – number of independent regressors for calculating adjusted r2 score.

• multioutput (str) –

Defines aggregation in the case of multiple output scores. Can be one of the following strings:

• 'raw_values' returns full set of scores

• 'uniform_average' scores are uniformly averaged

• 'variance_weighted' scores are weighted by their individual variances

• kwargs (Any) – Additional keyword arguments, see Advanced metric settings for more info.

Raises:
• ValueError – If adjusted parameter is not an integer larger or equal to 0.

• ValueError – If multioutput is not one of "raw_values", "uniform_average" or "variance_weighted".

Example

>>> from torchmetrics.regression import R2Score
>>> target = torch.tensor([3, -0.5, 2, 7])
>>> preds = torch.tensor([2.5, 0.0, 2, 8])
>>> r2score = R2Score()
>>> r2score(preds, target)
tensor(0.9486)

>>> target = torch.tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = torch.tensor([[0, 2], [-1, 2], [8, -5]])
>>> r2score = R2Score(num_outputs=2, multioutput='raw_values')
>>> r2score(preds, target)
tensor([0.9654, 0.9082])

plot(val=None, ax=None)[source]

Plot a single or multiple values from the metric.

Parameters:
Return type:
Returns:

Figure and Axes object

Raises:

ModuleNotFoundError – If matplotlib is not installed

>>> from torch import randn
>>> # Example plotting a single value
>>> from torchmetrics.regression import R2Score
>>> metric = R2Score()
>>> metric.update(randn(10,), randn(10,))
>>> fig_, ax_ = metric.plot()

>>> from torch import randn
>>> # Example plotting multiple values
>>> from torchmetrics.regression import R2Score
>>> metric = R2Score()
>>> values = []
>>> for _ in range(10):
...     values.append(metric(randn(10,), randn(10,)))
>>> fig, ax = metric.plot(values)


## Functional Interface¶

Compute r2 score also known as R2 Score_Coefficient Determination.

$R^2 = 1 - \frac{SS_{res}}{SS_{tot}}$

where $$SS_{res}=\sum_i (y_i - f(x_i))^2$$ is the sum of residual squares, and $$SS_{tot}=\sum_i (y_i - \bar{y})^2$$ is total sum of squares. Can also calculate adjusted r2 score given by

$R^2_{adj} = 1 - \frac{(1-R^2)(n-1)}{n-k-1}$

where the parameter $$k$$ (the number of independent regressors) should be provided as the adjusted argument.

Parameters:
• preds (Tensor) – estimated labels

• target (Tensor) – ground truth labels

• adjusted (int) – number of independent regressors for calculating adjusted r2 score.

• multioutput (str) –

Defines aggregation in the case of multiple output scores. Can be one of the following strings:

• 'raw_values' returns full set of scores

• 'uniform_average' scores are uniformly averaged

• 'variance_weighted' scores are weighted by their individual variances

Raises:
• ValueError – If both preds and targets are not 1D or 2D tensors.

• ValueError – If len(preds) is less than 2 since at least 2 sampels are needed to calculate r2 score.

• ValueError – If multioutput is not one of raw_values, uniform_average or variance_weighted.

• ValueError – If adjusted is not an integer greater than 0.

Return type:

Tensor

Example

>>> from torchmetrics.functional.regression import r2_score
>>> target = torch.tensor([3, -0.5, 2, 7])
>>> preds = torch.tensor([2.5, 0.0, 2, 8])
>>> r2_score(preds, target)
tensor(0.9486)

>>> target = torch.tensor([[0.5, 1], [-1, 1], [7, -6]])
>>> preds = torch.tensor([[0, 2], [-1, 2], [8, -5]])
>>> r2_score(preds, target, multioutput='raw_values')
tensor([0.9654, 0.9082])


© Copyright Copyright (c) 2020-2023, Lightning-AI et al... Revision 520625c3.

Built with Sphinx using a theme provided by Read the Docs.