compact
Reduce size of machine learning model
Description
returns a compact model (CompactMdl
= compact(Mdl
)CompactMdl
), the compact version of the
trained machine learning model Mdl
.
CompactMdl
does not contain the training data, whereas
Mdl
contains the training data in its X
and
Y
properties. Therefore, although you can predict class labels using
CompactMdl
, you cannot perform tasks such as cross-validation with
the compact model.
Examples
Reduce Size of Naive Bayes Classifier
Reduce the size of a full naive Bayes classifier by removing the training data. Full naive Bayes classifiers hold the training data. You can use a compact naive Bayes classifier to improve memory efficiency.
Load the ionosphere
data set. Remove the first two predictors for stability.
load ionosphere
X = X(:,3:end);
Train a naive Bayes classifier using the predictors X
and class labels Y
. A recommended practice is to specify the class names. fitcnb
assumes that each predictor is conditionally and normally distributed.
Mdl = fitcnb(X,Y,'ClassNames',{'b','g'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}
Mdl
is a trained ClassificationNaiveBayes
classifier.
Reduce the size of the naive Bayes classifier.
CMdl = compact(Mdl)
CMdl = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}
CMdl
is a trained CompactClassificationNaiveBayes
classifier.
Display the amount of memory used by each classifier.
whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 16436 classreg.learning.classif.CompactClassificationNaiveBayes Mdl 1x1 112598 ClassificationNaiveBayes
The full naive Bayes classifier (Mdl
) is more than seven times larger than the compact naive Bayes classifier (CMdl
).
To label new observations efficiently, you can remove Mdl
from the MATLAB® Workspace, and then pass CMdl
and new predictor values to predict
.
Reduce Size of SVM Classifier
Reduce the size of a full support vector machine (SVM) classifier by removing the training data. Full SVM classifiers (that is, ClassificationSVM
classifiers) hold the training data. To improve efficiency, use a smaller classifier.
Load the ionosphere
data set.
load ionosphere
Train an SVM classifier. Standardize the predictor data and specify the order of the classes.
SVMModel = fitcsvm(X,Y,'Standardize',true,... 'ClassNames',{'b','g'})
SVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1342 KernelParameters: [1x1 struct] Mu: [0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501 0.1194 0.5118 0.1813 0.4762 0.1550 0.4008 0.0934 0.3442 0.0711 0.3819 -0.0036 0.3594 -0.0240 0.3367 0.0083 0.3625 -0.0574 0.3961 -0.0712 0.5416 -0.0695 0.3784 ... ] (1x34 double) Sigma: [0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927 0.5207 0.5071 0.4839 0.5635 0.4948 0.6222 0.4949 0.6528 0.4584 0.6180 0.4968 0.6263 0.5191 0.6098 0.5182 0.6038 0.5275 0.5785 0.5085 0.5162 0.5500 0.5759 0.5080 ... ] (1x34 double) BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO'
SVMModel
is a ClassificationSVM
classifier.
Reduce the size of the SVM classifier.
CompactSVMModel = compact(SVMModel)
CompactSVMModel = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [90x1 double] Bias: -0.1342 KernelParameters: [1x1 struct] Mu: [0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501 0.1194 0.5118 0.1813 0.4762 0.1550 0.4008 0.0934 0.3442 0.0711 0.3819 -0.0036 0.3594 -0.0240 0.3367 0.0083 0.3625 -0.0574 0.3961 -0.0712 0.5416 -0.0695 0.3784 ... ] (1x34 double) Sigma: [0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927 0.5207 0.5071 0.4839 0.5635 0.4948 0.6222 0.4949 0.6528 0.4584 0.6180 0.4968 0.6263 0.5191 0.6098 0.5182 0.6038 0.5275 0.5785 0.5085 0.5162 0.5500 0.5759 0.5080 ... ] (1x34 double) SupportVectors: [90x34 double] SupportVectorLabels: [90x1 double]
CompactSVMModel
is a CompactClassificationSVM
classifier.
Display the amount of memory used by each classifier.
whos('SVMModel','CompactSVMModel')
Name Size Bytes Class Attributes CompactSVMModel 1x1 30749 classreg.learning.classif.CompactClassificationSVM SVMModel 1x1 140279 ClassificationSVM
The full SVM classifier (SVMModel
) is more than four times larger than the compact SVM classifier (CompactSVMModel
).
To label new observations efficiently, you can remove SVMModel
from the MATLAB® Workspace, and then pass CompactSVMModel
and new predictor values to predict
.
To further reduce the size of the compact SVM classifier, use the discardSupportVectors
function to discard support vectors.
Reduce Size of Generalized Additive Model
Reduce the size of a full generalized additive model (GAM) for regression by removing the training data. Full models hold the training data. You can use a compact model to improve memory efficiency.
Load the carbig
data set.
load carbig
Specify Acceleration
, Displacement
, Horsepower
, and Weight
as the predictor variables (X
) and MPG
as the response variable (Y
).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Train a GAM using X
and Y
.
Mdl = fitrgam(X,Y)
Mdl = RegressionGAM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Intercept: 26.9442 IsStandardDeviationFit: 0 NumObservations: 398
Mdl
is a RegressionGAM
model object.
Reduce the size of the model.
CMdl = compact(Mdl)
CMdl = CompactRegressionGAM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Intercept: 26.9442 IsStandardDeviationFit: 0
CMdl
is a CompactRegressionGAM
model object.
Display the amount of memory used by each regression model.
whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 597222 classreg.learning.regr.CompactRegressionGAM Mdl 1x1 631046 RegressionGAM
The full model (Mdl
) is larger than the compact model (CMdl
).
To efficiently predict responses for new observations, you can remove Mdl
from the MATLAB® Workspace, and then pass CMdl
and new predictor values to predict
.
Input Arguments
Mdl
— Machine learning model
full regression model object | full classification model object
Machine learning model, specified as a full regression or classification model object, as given in the following tables of supported models.
Regression Model Object
Model | Full Regression Model Object |
---|---|
Gaussian process regression (GPR) model | RegressionGP |
Generalized additive model (GAM) | RegressionGAM |
Neural network model | RegressionNeuralNetwork |
Classification Model Object
Model | Full Classification Model Object |
---|---|
Generalized additive model | ClassificationGAM |
Naive Bayes model | ClassificationNaiveBayes |
Neural network model | ClassificationNeuralNetwork |
Support vector machine for one-class and binary classification | ClassificationSVM |
Output Arguments
CompactMdl
— Compact machine learning model
compact regression model object | compact classification model object
Compact machine learning model, returned as one of the compact model objects in the
following tables, depending on the input model Mdl
.
Regression Model Object
Model | Full Model (Mdl ) | Compact Model (CompactMdl ) |
---|---|---|
Gaussian process regression (GPR) model | RegressionGP | CompactRegressionGP |
Generalized additive model | RegressionGAM | CompactRegressionGAM |
Neural network model | RegressionNeuralNetwork | CompactRegressionNeuralNetwork |
Classification Model Object
Model | Full Model (Mdl ) | Compact Model (CompactMdl ) |
---|---|---|
Generalized additive model | ClassificationGAM | CompactClassificationGAM |
Naive Bayes model | ClassificationNaiveBayes | CompactClassificationNaiveBayes |
Neural network model | ClassificationNeuralNetwork | CompactClassificationNeuralNetwork |
Support vector machine for one-class and binary classification | ClassificationSVM | CompactClassificationSVM |
Extended Capabilities
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
This function fully supports GPU arrays for a trained classification model specified as a
ClassificationSVM
orClassificationNeuralNetwork
object.This function fully supports GPU arrays for a trained regression model specified as a
RegressionNeuralNetwork
object.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced in R2014aR2024b: Specify GPU arrays for neural network models (requires Parallel Computing Toolbox)
compact
fully supports GPU arrays for RegressionNeuralNetwork
and ClassificationNeuralNetwork
models.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)