Main Content

# RegressionEnsemble

Package: classreg.learning.regr
Superclasses: `CompactRegressionEnsemble`

Ensemble regression

## Description

`RegressionEnsemble` combines a set of trained weak learner models and data on which these learners were trained. It can predict ensemble response for new data by aggregating predictions from its weak learners.

## Construction

Create a regression ensemble object using `fitrensemble`.

## Properties

 `BinEdges` Bin edges for numeric predictors, specified as a cell array of p numeric vectors, where p is the number of predictors. Each vector includes the bin edges for a numeric predictor. The element in the cell array for a categorical predictor is empty because the software does not bin categorical predictors.The software bins numeric predictors only if you specify the `'NumBins'` name-value argument as a positive integer scalar when training a model with tree learners. The `BinEdges` property is empty if the `'NumBins'` value is empty (default).You can reproduce the binned predictor data `Xbinned` by using the `BinEdges` property of the trained model `mdl`.```X = mdl.X; % Predictor data Xbinned = zeros(size(X)); edges = mdl.BinEdges; % Find indices of binned predictors. idxNumeric = find(~cellfun(@isempty,edges)); if iscolumn(idxNumeric) idxNumeric = idxNumeric'; end for j = idxNumeric x = X(:,j); % Convert x to array if x is a table. if istable(x) x = table2array(x); end % Group x into bins by using the `discretize` function. xbinned = discretize(x,[-inf; edges{j}; inf]); Xbinned(:,j) = xbinned; end````Xbinned` contains the bin indices, ranging from 1 to the number of bins, for numeric predictors. `Xbinned` values are 0 for categorical predictors. If `X` contains `NaN`s, then the corresponding `Xbinned` values are `NaN`s. `CategoricalPredictors` Categorical predictor indices, specified as a vector of positive integers. `CategoricalPredictors` contains index values indicating that the corresponding predictors are categorical. The index values are between 1 and `p`, where `p` is the number of predictors used to train the model. If none of the predictors are categorical, then this property is empty (`[]`). `CombineWeights` A character vector describing how the ensemble combines learner predictions. `ExpandedPredictorNames` Expanded predictor names, stored as a cell array of character vectors. If the model uses encoding for categorical variables, then `ExpandedPredictorNames` includes the names that describe the expanded variables. Otherwise, `ExpandedPredictorNames` is the same as `PredictorNames`. `FitInfo` A numeric array of fit information. The `FitInfoDescription` property describes the content of this array. `FitInfoDescription` Character vector describing the meaning of the `FitInfo` array. `LearnerNames` Cell array of character vectors with names of the weak learners in the ensemble. The name of each learner appears just once. For example, if you have an ensemble of 100 trees, `LearnerNames` is `{'Tree'}`. `HyperparameterOptimizationResults` Description of the cross-validation optimization of hyperparameters, stored as a `BayesianOptimization` object or a table of hyperparameters and associated values. Nonempty when the `OptimizeHyperparameters` name-value pair is nonempty at creation. Value depends on the setting of the `HyperparameterOptimizationOptions` name-value pair at creation: `'bayesopt'` (default) — Object of class `BayesianOptimization``'gridsearch'` or `'randomsearch'` — Table of hyperparameters used, observed objective function values (cross-validation loss), and rank of observations from lowest (best) to highest (worst) `Method` A character vector with the name of the algorithm `fitrensemble` used for training the ensemble. `ModelParameters` Parameters used in training `ens`. `NumObservations` Numeric scalar containing the number of observations in the training data. `NumTrained` Number of trained learners in the ensemble, a positive scalar. `PredictorNames ` A cell array of names for the predictor variables, in the order in which they appear in `X`. `ReasonForTermination` A character vector describing the reason `fitrensemble` stopped adding weak learners to the ensemble. `Regularization` A structure containing the result of the `regularize` method. Use `Regularization` with `shrink` to lower resubstitution error and shrink the ensemble. `ResponseName` A character vector with the name of the response variable `Y`. `ResponseTransform` Function handle for transforming scores, or character vector representing a built-in transformation function. `'none'` means no transformation; equivalently, `'none'` means `@(x)x`. Add or change a `ResponseTransform` function using dot notation: `ens.ResponseTransform = @function` `Trained` The trained learners, a cell array of compact regression models. `TrainedWeights` A numeric vector of weights the ensemble assigns to its learners. The ensemble computes predicted response by aggregating weighted predictions from its learners. `W` The scaled `weights`, a vector with length `n`, the number of rows in `X`. The sum of the elements of `W` is `1`. `X` The matrix or table of predictor values that trained the ensemble. Each column of `X` represents one variable, and each row represents one observation. `Y` The numeric column vector with the same number of rows as `X` that trained the ensemble. Each entry in `Y` is the response to the data in the corresponding row of `X`.

## Object Functions

 `compact` Reduce size of regression ensemble model `crossval` Cross-validate regression ensemble model `cvshrink` Cross-validate shrinking (pruning) ensemble `gather` Gather properties of Statistics and Machine Learning Toolbox object from GPU `lime` Local interpretable model-agnostic explanations (LIME) `loss` Regression error for regression ensemble model `partialDependence` Compute partial dependence `plotPartialDependence` Create partial dependence plot (PDP) and individual conditional expectation (ICE) plots `predict` Predict responses using ensemble of regression models `predictorImportance` Estimates of predictor importance for regression ensemble of decision trees `regularize` Find optimal weights for learners in regression ensemble model `removeLearners` Remove members of compact regression ensemble `resubLoss` Resubstitution loss for regression ensemble model `resubPredict` Predict response of regression ensemble by resubstitution `resume` Resume training of regression ensemble model `shapley` Shapley values `shrink` Prune regression ensemble

## Copy Semantics

Value. To learn how value classes affect copy operations, see Copying Objects.

## Examples

collapse all

Load the `carsmall` data set. Consider a model that explains a car's fuel economy (`MPG`) using its weight (`Weight`) and number of cylinders (`Cylinders`).

```load carsmall X = [Weight Cylinders]; Y = MPG;```

Train a boosted ensemble of 100 regression trees using the `LSBoost` method. Specify that `Cylinders` is a categorical variable.

```Mdl = fitrensemble(X,Y,'Method','LSBoost',... 'PredictorNames',{'W','C'},'CategoricalPredictors',2)```
```Mdl = RegressionEnsemble PredictorNames: {'W' 'C'} ResponseName: 'Y' CategoricalPredictors: 2 ResponseTransform: 'none' NumObservations: 94 NumTrained: 100 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [100x1 double] FitInfoDescription: {2x1 cell} Regularization: [] ```

`Mdl` is a `RegressionEnsemble` model object that contains the training data, among other things.

`Mdl.Trained` is the property that stores a 100-by-1 cell vector of the trained regression trees (`CompactRegressionTree` model objects) that compose the ensemble.

Plot a graph of the first trained regression tree.

`view(Mdl.Trained{1},'Mode','graph')`

By default, `fitrensemble` grows shallow trees for boosted ensembles of trees.

Predict the fuel economy of 4,000 pound cars with 4, 6, and 8 cylinders.

```XNew = [4000*ones(3,1) [4; 6; 8]]; mpgNew = predict(Mdl,XNew)```
```mpgNew = 3×1 19.5926 18.6388 15.4810 ```

## Tips

For an ensemble of regression trees, the `Trained` property contains a cell vector of `ens.NumTrained` `CompactRegressionTree` model objects. For a textual or graphical display of tree `t` in the cell vector, enter

`view(ens.Trained{t})`

## Version History

Introduced in R2011a