View source: R/num-huber_loss.R
| huber_loss | R Documentation |
Calculate the Huber loss, a loss function used in robust regression. This
loss function is less sensitive to outliers than rmse(). This function is
quadratic for small residual values and linear for large residual values.
huber_loss(data, ...)
## S3 method for class 'data.frame'
huber_loss(
data,
truth,
estimate,
delta = 1,
na_rm = TRUE,
case_weights = NULL,
...
)
huber_loss_vec(
truth,
estimate,
delta = 1,
na_rm = TRUE,
case_weights = NULL,
...
)
data |
A |
... |
Not currently used. |
truth |
The column identifier for the true results
(that is |
estimate |
The column identifier for the predicted
results (that is also |
delta |
A single |
na_rm |
A |
case_weights |
The optional column identifier for case weights. This
should be an unquoted column name that evaluates to a numeric column in
|
Huber loss is a metric that should be minimized. The output ranges from 0 to Inf, with 0 indicating perfect predictions.
The formula for Huber loss is:
L_\delta = \begin{cases} \frac{1}{2} a^2 & \text{if } |a| \le \delta \\ \delta (|a| - \frac{1}{2} \delta) & \text{otherwise} \end{cases}
where a = \text{truth}_i - \text{estimate}_i.
A tibble with columns .metric, .estimator,
and .estimate and 1 row of values.
For grouped data frames, the number of rows returned will be the same as the number of groups.
For huber_loss_vec(), a single numeric value (or NA).
James Blair
Huber, P. (1964). Robust Estimation of a Location Parameter. Annals of Statistics, 53 (1), 73-101.
All numeric metrics
Other numeric metrics:
ccc(),
gini_coef(),
huber_loss_pseudo(),
iic(),
mae(),
mape(),
mase(),
mpe(),
msd(),
mse(),
poisson_log_loss(),
rmse(),
rmse_relative(),
rpd(),
rpiq(),
rsq(),
rsq_trad(),
smape()
Other accuracy metrics:
ccc(),
huber_loss_pseudo(),
iic(),
mae(),
mape(),
mase(),
mpe(),
msd(),
mse(),
poisson_log_loss(),
rmse(),
rmse_relative(),
smape()
# Supply truth and predictions as bare column names
huber_loss(solubility_test, solubility, prediction)
library(dplyr)
set.seed(1234)
size <- 100
times <- 10
# create 10 resamples
solubility_resampled <- bind_rows(
replicate(
n = times,
expr = sample_n(solubility_test, size, replace = TRUE),
simplify = FALSE
),
.id = "resample"
)
# Compute the metric by group
metric_results <- solubility_resampled |>
group_by(resample) |>
huber_loss(solubility, prediction)
metric_results
# Resampled mean estimate
metric_results |>
summarise(avg_estimate = mean(.estimate))
# Using a different value of 'delta'... if you are adding the metric to a
# metric set, you can create a new metric function with the updated argument
# value:
huber_loss_2 <- metric_tweak("huber_loss_2", huber_loss, delta = 2)
multi_metrics <- metric_set(huber_loss, huber_loss_2)
multi_metrics(solubility_test, solubility, prediction)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.