imp = predictorImportance(ens)
[imp,ma]
= predictorImportance(ens)
computes
estimates of predictor importance for imp
= predictorImportance(ens
)ens
by summing
these estimates over all weak learners in the ensemble. imp
has
one element for each input predictor in the data used to train this
ensemble. A high value indicates that this predictor is important
for ens
.
[
returns
a imp
,ma
]
= predictorImportance(ens
)P
byP
matrix with predictive
measures of association for P
predictors, when
the learners in ens
contain surrogate splits. See Definitions.

A classification ensemble created by 

A row vector with the same number of elements as the number
of predictors (columns) in 

A 
predictorImportance
computes estimates of predictor
importance for ens
by summing changes in the risk due
to splits on every predictor and dividing the sum by the number of
branch nodes. If ens
is grown without surrogate
splits, this sum is taken over best splits found at each branch node.
If ens
is grown with surrogate splits, this sum
is taken over all splits at each branch node including surrogate splits. imp
has
one element for each input predictor in the data used to train ens
.
Predictor importance associated with this split is computed as the
difference between the risk for the parent node and the total risk
for the two children.
ClassificationTree
splits
nodes based on either impurity or node
error.
Impurity means one of several things, depending on your choice
of the SplitCriterion
namevalue pair argument:
Gini's Diversity Index (gdi
) —
The Gini index of a node is
$$1{\displaystyle \sum _{i}{p}^{2}(i)},$$
where the sum is over the classes i at the
node, and p(i) is the observed
fraction of classes with class i that reach the
node. A node with just one class (a pure node)
has Gini index 0
; otherwise the Gini index is positive.
So the Gini index is a measure of node impurity.
Deviance ('deviance'
) —
With p(i) defined the same as
for the Gini index, the deviance of a node is
$${\displaystyle \sum _{i}p(i)\mathrm{log}p(i)}.$$
A pure node has deviance 0
; otherwise, the
deviance is positive.
Twoing rule ('twoing'
) —
Twoing is not a purity measure of a node, but is a different measure
for deciding how to split a node. Let L(i)
denote the fraction of members of class i in the
left child node after a split, and R(i)
denote the fraction of members of class i in the
right child node after a split. Choose the split criterion to maximize
$$P(L)P(R){\left({\displaystyle \sum _{i}\leftL(i)R(i)\right}\right)}^{2},$$
where P(L) and P(R) are the fractions of observations that split to the left and right respectively. If the expression is large, the split made each child node purer. Similarly, if the expression is small, the split made each child node similar to each other, and hence similar to the parent node, and so the split did not increase node purity.
Node error — The node error is the fraction of misclassified classes at a node. If j is the class with the largest number of training samples at a node, the node error is
1 – p(j).
The predictive measure of association between the optimal split on variable i and a surrogate split on variable j is:
$${\lambda}_{i,j}=\frac{\text{min}\left({P}_{L},{P}_{R}\right)\left(1{P}_{{L}_{i}{L}_{j}}{P}_{{R}_{i}{R}_{j}}\right)}{\text{min}\left({P}_{L},{P}_{R}\right)}.$$
Here
P_{L} and P_{R} are the node probabilities for the optimal split of node i into Left and Right nodes respectively.
$${P}_{{L}_{i}{L}_{j}}$$ is the probability that both (optimal) node i and (surrogate) node j send an observation to the Left.
$${P}_{{R}_{i}{R}_{j}}$$ is the probability that both (optimal) node i and (surrogate) node j send an observation to the Right.
Clearly, λ_{i,j} lies from –∞ to 1. Variable j is a worthwhile surrogate split for variable i if λ_{i,j} > 0.
Element ma(i,j)
is the predictive measure
of association averaged over surrogate splits on predictor j
for
which predictor i
is the optimal split predictor.
This average is computed by summing positive values of the predictive
measure of association over optimal splits on predictor i
and
surrogate splits on predictor j
and dividing by
the total number of optimal splits on predictor i
,
including splits for which the predictive measure of association between
predictors i
and j
is negative.
Estimate the predictor importance for all variables in the Fisher iris data:
load fisheriris ens = fitensemble(meas,species,'AdaBoostM2',100,'Tree'); imp = predictorImportance(ens) imp = 0.0001 0.0005 0.0384 0.0146
The first two predictors are not very important in ens
.
Estimate the predictor importance for all variables in the Fisher iris data for an ensemble where the trees contain surrogate splits:
load fisheriris surrtree = templateTree('Surrogate','on'); ens2 = fitensemble(meas,species,'AdaBoostM2',100,surrtree); [imp2,ma] = predictorImportance(ens2) imp2 = 0.0224 0.0142 0.0525 0.0508 ma = 1.0000 0 0.0001 0.0001 0.0115 1.0000 0.0023 0.0054 0.2810 0.1747 1.0000 0.5372 0.0789 0.0463 0.2339 1.0000
The first two predictors show much more importance than in the previous example.