Main Content


Class: RegressionSVM

Resubstitution loss for support vector machine regression model


L = resubLoss(mdl)
L = resubLoss(mdl,Name,Value)


L = resubLoss(mdl) returns the resubstitution loss for the support vector machine (SVM) regression model mdl, using the training data stored in mdl.X and corresponding response values stored in mdl.Y.

L = resubLoss(mdl,Name,Value) specifies additional options using one or more name-value arguments. For example, specify the loss function to use for the resubstitution loss computation.

Input Arguments

expand all

Full, trained SVM regression model, specified as a RegressionSVM model returned by fitrsvm.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: resubLoss(Mdl,"LossFun","epsiloninsensitive") specifies to use the epsilon-insensitive loss function to compute the resubstitution loss.

Loss function, specified as "mse", "epsiloninsensitive", or a function handle.

  • The following table lists the available loss functions. Specify one using its corresponding value.

    ValueLoss Function
    "mse"Mean Squared Error
    "epsiloninsensitive"Epsilon-Insensitive Loss Function
  • Specify your own function using function handle notation.

    Suppose that n = size(X,1) is the sample size. Your function must have the signature lossvalue = lossfun(Y,Yfit,W), where:

    • The output argument lossvalue is a numeric value.

    • You choose the function name (lossfun).

    • Y is an n-by-1 numeric vector of observed response values.

    • Yfit is an n-by-1 numeric vector of predicted response values, calculated using the corresponding predictor values in X (similar to the output of predict).

    • W is an n-by-1 numeric vector of observation weights.

    Specify your function using "LossFun",@lossfun.

Example: "LossFun","epsiloninsensitive"

Data Types: char | string | function_handle

Since R2023b

Predicted response value to use for observations with missing predictor values, specified as "median", "mean", "omitted", or a numeric scalar.

"median"resubLoss uses the median of the observed response values in the training data as the predicted response value for observations with missing predictor values.
"mean"resubLoss uses the mean of the observed response values in the training data as the predicted response value for observations with missing predictor values.
"omitted"resubLoss excludes observations with missing predictor values from the loss computation.
Numeric scalarresubLoss uses this value as the predicted response value for observations with missing predictor values.

If an observation is missing an observed response value or an observation weight, then resubLoss does not use the observation in the loss computation.

Example: "PredictionForMissingValue","omitted"

Data Types: single | double | char | string

Output Arguments

expand all

Resubstitution loss, returned as a scalar value.

The resubstitution loss is the loss calculated between the response training data and the model’s predicted response values based on the input training data.

Resubstitution loss can be an overly optimistic estimate of the predictive error on new data. If the resubstitution loss is high, the model’s predictions are not likely to be very good. However, having a low resubstitution loss does not guarantee good predictions for new data.

To better assess the predictive accuracy of your model, cross validate the model using crossval.


expand all

This example shows how to train an SVM regression model, then calculate the resubstitution loss using mean square error (MSE) and epsilon-insensitive loss.

This example uses the abalone data from the UCI Machine Learning Repository. Download the data and save it in your current directory with the name ''.

Read the data into a table.

tbl = readtable('','Filetype','text', ...
rng default  % for reproducibility

The sample data contains 4177 observations. All of the predictor variables are continuous except for sex, which is a categorical variable with possible values 'M' (for males), 'F' (for females), and 'I' (for infants). The goal is to predict the number of rings on the abalone, and thereby determine its age, using physical measurements.

Train an SVM regression model to the data, using a Gaussian kernel function with an automatic kernel scale. Standardize the data.

mdl = fitrsvm(tbl,'Var9','KernelFunction','gaussian', ...

Calculate the resubstitution loss using mean square error (MSE).

mse_loss = resubLoss(mdl)
mse_loss =


Calculate the epsilon-insensitive loss.

eps_loss = resubLoss(mdl,'LossFun','epsiloninsensitive')
eps_loss =


More About

expand all


[1] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. "The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait." Sea Fisheries Division, Technical Report No. 48, 1994.

[2] Waugh, S. "Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-forward Supervised Artificial Neural Networks." University of Tasmania Department of Computer Science thesis, 1995.

[3] Clark, D., Z. Schreter, A. Adams. "A Quantitative Comparison of Dystal and Backpropagation." submitted to the Australian Conference on Neural Networks, 1996.

[4] Lichman, M. UCI Machine Learning Repository, []. Irvine, CA: University of California, School of Information and Computer Science.

Extended Capabilities

Version History

Introduced in R2015b

expand all