Title: | Performance Measures for Statistical Learning |
---|---|
Description: | Provides the biggest amount of statistical measures in the whole R world. Includes measures of regression, (multiclass) classification and multilabel classification. The measures come mainly from the 'mlr' package and were programed by several 'mlr' developers. |
Authors: | Philipp Probst [aut, cre] |
Maintainer: | Philipp Probst <[email protected]> |
License: | GPL-3 |
Version: | 0.3 |
Built: | 2025-02-28 05:47:34 UTC |
Source: | https://github.com/philipppro/measures |
Defined as: mean(response == truth)
ACC(truth, response)
ACC(truth, response)
truth |
vector of true values |
response |
vector of predicted values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) ACC(truth, response)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) ACC(truth, response)
Defined as: 1 - (1 - rsq) * (p / (n - p - 1L)). Adjusted R-squared is only defined for normal linear regression.
ARSQ(truth, response, n, p)
ARSQ(truth, response, n, p)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n |
[numeric] number of observations |
p |
[numeric] number of predictors |
n = 20 p = 5 set.seed(123) truth = rnorm(n) response = rnorm(n) ARSQ(truth, response, n, p)
n = 20 p = 5 set.seed(123) truth = rnorm(n) response = rnorm(n) ARSQ(truth, response, n, p)
Integral over the graph that results from computing fpr and tpr for many different thresholds.
AUC(probabilities, truth, negative, positive)
AUC(probabilities, truth, negative, positive)
probabilities |
[numeric] vector of predicted probabilities |
truth |
vector of true values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 AUC(probabilities, truth, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 AUC(probabilities, truth, negative, positive)
Mean of true positive rate and true negative rate.
BAC(truth, response, negative, positive)
BAC(truth, response, negative, positive)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 BAC(truth, response, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 BAC(truth, response, negative, positive)
Mean of misclassification error rates on all individual classes.
BER(truth, response)
BER(truth, response)
truth |
vector of true values |
response |
vector of predicted values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) BER(truth, response)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) BER(truth, response)
The Brier score is defined as the quadratic difference between the probability and the value (1,0) for the class. That means we use the numeric representation 1 and 0 for our target classes. It is similiar to the mean squared error in regression. multiclass.brier is the sum over all one vs. all comparisons and for a binary classifcation 2 * brier.
Brier(probabilities, truth, negative, positive)
Brier(probabilities, truth, negative, positive)
probabilities |
[numeric] vector of predicted probabilities |
truth |
vector of true values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 Brier(probabilities, truth, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 Brier(probabilities, truth, negative, positive)
Brier score scaled to [0,1], see http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3575184/.
BrierScaled(probabilities, truth, negative, positive)
BrierScaled(probabilities, truth, negative, positive)
probabilities |
[numeric] vector of predicted probabilities |
truth |
vector of true values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 BrierScaled(probabilities, truth, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 BrierScaled(probabilities, truth, negative, positive)
Similar to RSQ (R-squared). Defined as explained_sum_of_squares / total_sum_of_squares.
EXPVAR(truth, response)
EXPVAR(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) EXPVAR(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) EXPVAR(truth, response)
Defined as: 2 * tp/ (sum(truth == positive) + sum(response == positive))
F1(truth, response, positive)
F1(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 F1(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 F1(truth, response, positive)
Defined as: fp / (tp + fp)
FDR(truth, response, positive)
FDR(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 FDR(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 FDR(truth, response, positive)
Sum of misclassified observations in the negative class. Also called misses.
FN(truth, response, negative)
FN(truth, response, negative)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 FN(truth, response, negative)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 FN(truth, response, negative)
Percentage of misclassified observations in the negative class.
FNR(truth, response, negative, positive)
FNR(truth, response, negative, positive)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 FNR(truth, response, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 FNR(truth, response, negative, positive)
Sum of misclassified observations in the positive class. Also called false alarms.
FP(truth, response, positive)
FP(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 FP(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 FP(truth, response, positive)
Percentage of misclassified observations in the positive class. Also called false alarm rate or fall-out.
FPR(truth, response, negative, positive)
FPR(truth, response, negative, positive)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 FPR(truth, response, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 FPR(truth, response, negative, positive)
Geometric mean of recall and specificity.
GMEAN(truth, response, negative, positive)
GMEAN(truth, response, negative, positive)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
positive |
positive class |
He, H. & Garcia, E. A. (2009) *Learning from Imbalanced Data.* IEEE Transactions on Knowledge and Data Engineering, vol. 21, no. 9. pp. 1263-1284.
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 GMEAN(truth, response, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 GMEAN(truth, response, negative, positive)
Defined as: sqrt(ppv * tpr)
GPR(truth, response, positive)
GPR(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 GPR(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 GPR(truth, response, positive)
Defined as: 1 - (1 - p0) / (1 - pe). With: p0 = 'observed frequency of agreement' and pe = 'expected agremeent frequency under independence
KAPPA(truth, response)
KAPPA(truth, response)
truth |
vector of true values |
response |
vector of predicted values n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, repla KAPPA(truth, response) |
Defined as: Kendall's tau correlation between truth and response. Only looks at the order. See Rosset et al.: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.1398&rep=rep1&type=pdf.
KendallTau(truth, response)
KendallTau(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) KendallTau(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) KendallTau(truth, response)
Lists all measures that are available in the package with their corresponding task.
listAllMeasures()
listAllMeasures()
Dataframe with all available measures and the correspoding task
listAllMeasures()
listAllMeasures()
Defined as: -mean(log(p_i)), where p_i is the predicted probability of the true class of observation i. Inspired by https://www.kaggle.com/wiki/MultiClassLogLoss.
Logloss(probabilities, truth)
Logloss(probabilities, truth)
probabilities |
[numeric] vector (or matrix with column names of the classes) of predicted probabilities |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) Logloss(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) Logloss(probabilities, truth)
Defined as: mean(log(p_i)), where p_i is the predicted probability of the true class of observation i. This scoring rule is the same as the negative logloss, self-information or surprisal. See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.
LSR(probabilities, truth)
LSR(probabilities, truth)
probabilities |
[numeric] vector (or matrix with column names of the classes) of predicted probabilities |
truth |
vector of true values n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) LSR(probabilities, truth) |
Defined as: mean(abs(response - truth))
MAE(truth, response)
MAE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MAE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MAE(truth, response)
Defined as the abs(truth_i - response_i) / truth_i. Won't work if any truth value is equal to zero. In this case the output will be NA.
MAPE(truth, response)
MAPE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MAPE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MAPE(truth, response)
Defined as (tp * tn - fp * fn) / sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)), denominator set to 1 if 0.
MCC(truth, response, negative, positive)
MCC(truth, response, negative, positive)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 MCC(truth, response, negative, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 negative = 0 MCC(truth, response, negative, positive)
Defined as: median(abs(response - truth)).
MEDAE(truth, response)
MEDAE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MEDAE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MEDAE(truth, response)
Defined as: median((response - truth)^2).
MEDSE(truth, response)
MEDSE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MEDSE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MEDSE(truth, response)
Defined as: mean(response != truth)
MMCE(truth, response)
MMCE(truth, response)
truth |
vector of true values |
response |
vector of predicted values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) MMCE(truth, response)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, replace = TRUE)) MMCE(truth, response)
Defined as: mean((response - truth)^2)
MSE(truth, response)
MSE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MSE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) MSE(truth, response)
Defined as: mean((log(response + 1, exp(1)) - log(truth + 1, exp(1)))^2). This is mostly used for count data, note that all predicted and actual target values must be greater or equal '-1' to compute the mean squared logarithmic error.
MSLE(truth, response)
MSLE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = abs(rnorm(n)) response = abs(rnorm(n)) MSLE(truth, response)
n = 20 set.seed(123) truth = abs(rnorm(n)) response = abs(rnorm(n)) MSLE(truth, response)
Computes AUC of c(c - 1) binary classifiers while considering the a priori distribution of the classes. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.
multiclass.AU1P(probabilities, truth)
multiclass.AU1P(probabilities, truth)
probabilities |
[numeric] matrix of predicted probabilities with columnnames of the classes |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AU1P(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AU1P(probabilities, truth)
Computes AUC of c(c - 1) binary classifiers (all possible pairwise combinations) while considering uniform distribution of the classes. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.
multiclass.AU1U(probabilities, truth)
multiclass.AU1U(probabilities, truth)
probabilities |
[numeric] matrix of predicted probabilities with columnnames of the classes |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AU1U(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AU1U(probabilities, truth)
Computes the AUC treating a c-dimensional classifier as c two-dimensional classifiers, taking into account the prior probability of each class. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.
multiclass.AUNP(probabilities, truth)
multiclass.AUNP(probabilities, truth)
probabilities |
[numeric] matrix of predicted probabilities with columnnames of the classes |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AUNP(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AUNP(probabilities, truth)
Computes the AUC treating a c-dimensional classifier as c two-dimensional classifiers, where classes are assumed to have uniform distribution, in order to have a measure which is independent of class distribution change. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.
multiclass.AUNU(probabilities, truth)
multiclass.AUNU(probabilities, truth)
probabilities |
[numeric] matrix of predicted probabilities with columnnames of the classes |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AUNU(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.AUNU(probabilities, truth)
Defined as: (1/n) sum_i sum_j (y_ij - p_ij)^2, where y_ij = 1 if observation i has class j (else 0), and p_ij is the predicted probability of observation i for class j. From http://docs.lib.noaa.gov/rescue/mwr/078/mwr-078-01-0001.pdf.
multiclass.Brier(probabilities, truth)
multiclass.Brier(probabilities, truth)
probabilities |
[numeric] matrix of predicted probabilities with columnnames of the classes |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.Brier(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) multiclass.Brier(probabilities, truth)
Averaged proportion of correctly predicted labels with respect to the total number of labels for each instance, following the definition by Charte and Charte: https: / /journal.r-project.org / archive / 2015 - 2 / charte-charte.pdf. Fractions where the denominator becomes 0 are replaced with 1 before computing the average across all instances.
MultilabelACC(truth, response)
MultilabelACC(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelACC(truth, response) |
Harmonic mean of precision and recall on a per instance basis (Micro-F1), following the definition by Montanes et al.: http: / /www.sciencedirect.com / science / article / pii / S0031320313004019. Fractions where the denominator becomes 0 are replaced with 1 before computing the average across all instances.
MultilabelF1(truth, response)
MultilabelF1(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelF1(truth, response) |
Proportion of labels that are predicted incorrectly, following the definition by Charte and Charte: https://journal.r-project.org/archive/2015-2/charte-charte.pdf.
MultilabelHamloss(truth, response)
MultilabelHamloss(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values |
n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelHamloss(truth, response)
n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelHamloss(truth, response)
Also called precision. Averaged ratio of correctly predicted labels for each instance, following the definition by Charte and Charte: https: / /journal.r-project.org / archive / 2015 - 2 / charte-charte.pdf. Fractions where the denominator becomes 0 are ignored in the average calculation.
MultilabelPPV(truth, response)
MultilabelPPV(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelPPV(truth, response) |
Proportion of observations where the complete multilabel set (all 0-1-labels) is predicted incorrectly, following the definition by Charte and Charte: https://journal.r-project.org/archive/2015-2/charte-charte.pdf.
MultilabelSubset01(truth, response)
MultilabelSubset01(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values |
n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelSubset01(truth, response)
n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelSubset01(truth, response)
Also called recall. Averaged proportion of predicted labels which are relevant for each instance, following the definition by Charte and Charte: https: / /journal.r-project.org / archive / 2015 - 2 / charte-charte.pdf. Fractions where the denominator becomes 0 are ignored in the average calculation.
MultilabelTPR(truth, response)
MultilabelTPR(truth, response)
truth |
matrix of true values |
response |
matrix of predicted values n = 20 set.seed(122) truth = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) response = matrix(sample(c(0,1), 60, replace = TRUE), 20, 3) MultilabelTPR(truth, response) |
Defined as: tn / (tn + fn).
NPV(truth, response, negative)
NPV(truth, response, negative)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 NPV(truth, response, negative)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 NPV(truth, response, negative)
Defined as: tp / (tp + fp). Also called precision. If the denominator is 0, PPV is set to be either 1 or 0 depending on whether the highest probability prediction is positive (1) or negative (0).
PPV(truth, response, positive, probabilities = NULL)
PPV(truth, response, positive, probabilities = NULL)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
probabilities |
[numeric] vector of predicted probabilities |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 PPV(truth, response, positive, probabilities = NULL)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 PPV(truth, response, positive, probabilities = NULL)
Defined as: 1 - (1/n) sum_i sum_j (y_ij - p_ij)^2, where y_ij = 1 if observation i has class j (else 0), and p_ij is the predicted probablity of observation i for class j. This scoring rule is the same as 1 - multiclass.brier. See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.
QSR(probabilities, truth)
QSR(probabilities, truth)
probabilities |
[numeric] vector (or matrix with column names of the classes) of predicted probabilities |
truth |
vector of true values n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) QSR(probabilities, truth) |
Defined as sum_of_absolute_errors / mean_absolute_deviation. Undefined for single instances and when every truth value is identical. In this case the output will be NA.
RAE(truth, response)
RAE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RAE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RAE(truth, response)
The RMSE is aggregated as sqrt(mean(rmse.vals.on.test.sets^2))
RMSE(truth, response)
RMSE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RMSE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RMSE(truth, response)
Definition taken from: https: / /www.kaggle.com / wiki / RootMeanSquaredLogarithmicError. This is mostly used for count data, note that all predicted and actual target values must be greater or equal '-1' to compute the root mean squared logarithmic error.
RMSLE(truth, response)
RMSLE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = abs(rnorm(n)) response = abs(rnorm(n)) RMSLE(truth, response)
n = 20 set.seed(123) truth = abs(rnorm(n)) response = abs(rnorm(n)) RMSLE(truth, response)
Defined as sqrt (sum_of_squared_errors / total_sum_of_squares). Undefined for single instances and when every truth value is identical. In this case the output will be NA.
RRSE(truth, response)
RRSE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RRSE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RRSE(truth, response)
Also called R-squared, which is 1 - residual_sum_of_squares / total_sum_of_squares.
RSQ(truth, response)
RSQ(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RSQ(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) RSQ(truth, response)
Defined as: sum(abs(response - truth))"
SAE(truth, response)
SAE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SAE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SAE(truth, response)
Defined as: Spearman's rho correlation between truth and response. Only looks at the order. See Rosset et al.: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.1398&rep=rep1&type=pdf.
SpearmanRho(truth, response)
SpearmanRho(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SpearmanRho(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SpearmanRho(truth, response)
Defined as: sum((response - truth)^2)
SSE(truth, response)
SSE(truth, response)
truth |
[numeric] vector of true values |
response |
[numeric] vector of predicted values |
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SSE(truth, response)
n = 20 set.seed(123) truth = rnorm(n) response = rnorm(n) SSE(truth, response)
Defined as: mean(p_i(sum_j(p_ij))), where p_i is the predicted probability of the true class of observation i and p_ij is the predicted probablity of observation i for class j. See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.
SSR(probabilities, truth)
SSR(probabilities, truth)
probabilities |
[numeric] vector (or matrix with column names of the classes) of predicted probabilities |
truth |
vector of true values |
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) SSR(probabilities, truth)
n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) probabilities = matrix(runif(60), 20, 3) probabilities = probabilities/rowSums(probabilities) colnames(probabilities) = c(1,2,3) SSR(probabilities, truth)
Sum of correctly classified observations in the negative class. Also called correct rejections.
TN(truth, response, negative)
TN(truth, response, negative)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 TN(truth, response, negative)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 TN(truth, response, negative)
Percentage of correctly classified observations in the negative class. Also called specificity.
TNR(truth, response, negative)
TNR(truth, response, negative)
truth |
vector of true values |
response |
vector of predicted values |
negative |
negative class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 TNR(truth, response, negative)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) negative = 0 TNR(truth, response, negative)
Sum of all correctly classified observations in the positive class.
TP(truth, response, positive)
TP(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 TP(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 TP(truth, response, positive)
Percentage of correctly classified observations in the positive class. Also called hit rate or recall or sensitivity.
TPR(truth, response, positive)
TPR(truth, response, positive)
truth |
vector of true values |
response |
vector of predicted values |
positive |
positive class |
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 TPR(truth, response, positive)
n = 20 set.seed(125) truth = as.factor(sample(c(1,0), n, replace = TRUE)) probabilities = runif(n) response = as.factor(as.numeric(probabilities > 0.5)) positive = 1 TPR(truth, response, positive)
Defined as: 1 - sum(weights * conf.mat) / sum(weights * expected.mat), the weight matrix measures seriousness of disagreement with the squared euclidean metric.
WKAPPA(truth, response)
WKAPPA(truth, response)
truth |
vector of true values |
response |
vector of predicted values n = 20 set.seed(122) truth = as.factor(sample(c(1,2,3), n, replace = TRUE)) response = as.factor(sample(c(1,2,3), n, repla WKAPPA(truth, response) |