edge
Classification edge for Gaussian kernel classification model
Syntax
Description
returns the classification edge for the trained kernel classifier
e
= edge(Mdl
,Tbl
,ResponseVarName
)Mdl
using the predictor data in table
Tbl
and the class labels in
Tbl.ResponseVarName
.
returns the weighted classification edge using the observation weights supplied
in e
= edge(___,'Weights'
,weights
)weights
. Specify the weights after any of the input
argument combinations in previous syntaxes.
Note
If the predictor data X
or the predictor variables in
Tbl
contain any missing values, the
edge
function can return NaN. For more
details, see edge can return NaN for predictor data with missing values.
Examples
Estimate Test-Set Edge
Load the ionosphere
data set. This data set has 34 predictors and 351 binary responses for radar returns, either bad ('b'
) or good ('g'
).
load ionosphere
Partition the data set into training and test sets. Specify a 15% holdout sample for the test set.
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.15); trainingInds = training(Partition); % Indices for the training set testInds = test(Partition); % Indices for the test set
Train a binary kernel classification model using the training set.
Mdl = fitckernel(X(trainingInds,:),Y(trainingInds));
Estimate the training-set edge and the test-set edge.
eTrain = edge(Mdl,X(trainingInds,:),Y(trainingInds))
eTrain = 2.1703
eTest = edge(Mdl,X(testInds,:),Y(testInds))
eTest = 1.5643
Feature Selection Using Test-Set Edges
Perform feature selection by comparing test-set edges from multiple models. Based solely on this criterion, the classifier with the highest edge is the best classifier.
Load the ionosphere
data set. This data set has 34 predictors and 351 binary responses for radar returns, either bad ('b'
) or good ('g'
).
load ionosphere
Partition the data set into training and test sets. Specify a 15% holdout sample for the test set.
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.15); trainingInds = training(Partition); % Indices for the training set XTrain = X(trainingInds,:); YTrain = Y(trainingInds); testInds = test(Partition); % Indices for the test set XTest = X(testInds,:); YTest = Y(testInds);
Randomly choose half of the predictor variables.
p = size(X,2); % Number of predictors
idxPart = randsample(p,ceil(0.5*p));
Train two binary kernel classification models: one that uses all of the predictors, and one that uses half of the predictors.
Mdl = fitckernel(XTrain,YTrain); PMdl = fitckernel(XTrain(:,idxPart),YTrain);
Mdl
and PMdl
are ClassificationKernel
models.
Estimate the test-set edge for each classifier.
fullEdge = edge(Mdl,XTest,YTest)
fullEdge = 1.6335
partEdge = edge(PMdl,XTest(:,idxPart),YTest)
partEdge = 2.0205
Based on the test-set edges, the classifier that uses half of the predictors is the better model.
Input Arguments
Mdl
— Binary kernel classification model
ClassificationKernel
model object
Binary kernel classification model, specified as a ClassificationKernel
model object. You can create a
ClassificationKernel
model object using fitckernel
.
Y
— Class labels
categorical array | character array | string array | logical vector | numeric vector | cell array of character vectors
Class labels, specified as a categorical, character, or string array; logical or numeric vector; or cell array of character vectors.
The data type of
Y
must be the same as the data type ofMdl.ClassNames
. (The software treats string arrays as cell arrays of character vectors.)The distinct classes in
Y
must be a subset ofMdl.ClassNames
.If
Y
is a character array, then each element must correspond to one row of the array.The length of
Y
must be equal to the number of observations inX
orTbl
.
Data Types: categorical
| char
| string
| logical
| single
| double
| cell
Tbl
— Sample data
table
Sample data used to train the model, specified as a table. Each row of
Tbl
corresponds to one observation, and each column corresponds
to one predictor variable. Optionally, Tbl
can contain additional
columns for the response variable and observation weights. Tbl
must
contain all the predictors used to train Mdl
. Multicolumn variables
and cell arrays other than cell arrays of character vectors are not allowed.
If Tbl
contains the response variable used to train Mdl
, then you do not need to specify ResponseVarName
or Y
.
If you train Mdl
using sample data contained in a table, then the input
data for edge
must also be in a table.
ResponseVarName
— Response variable name
name of variable in Tbl
Response variable name, specified as the name of a variable in Tbl
. If Tbl
contains the response variable used to train Mdl
, then you do not need to specify ResponseVarName
.
If you specify ResponseVarName
, then you must specify it as a character
vector or string scalar. For example, if the response variable is stored as
Tbl.Y
, then specify ResponseVarName
as
'Y'
. Otherwise, the software treats all columns of
Tbl
, including Tbl.Y
, as predictors.
The response variable must be a categorical, character, or string array; a logical or numeric vector; or a cell array of character vectors. If the response variable is a character array, then each element must correspond to one row of the array.
Data Types: char
| string
weights
— Observation weights
ones(size(X,1),1)
(default) | numeric vector | name of variable in Tbl
Observation weights, specified as a numeric vector or the name of a
variable in Tbl
.
If
weights
is a numeric vector, then the size ofweights
must be equal to the number of rows inX
orTbl
.If
weights
is the name of a variable inTbl
, you must specifyweights
as a character vector or string scalar. For example, if the weights are stored asTbl.W
, then specifyweights
as'W'
. Otherwise, the software treats all columns ofTbl
, includingTbl.W
, as predictors.
If you supply weights, edge
computes the weighted
classification edge. The software weights the observations in
each row of X
or Tbl
with the
corresponding weights in weights
.
edge
normalizes weights
to sum
up to the value of the prior probability in the respective class.
Data Types: single
| double
| char
| string
Output Arguments
e
— Classification edge
numeric scalar
Classification edge, returned as a numeric scalar.
More About
Classification Edge
The classification edge is the weighted mean of the classification margins.
One way to choose among multiple classifiers, for example to perform feature selection, is to choose the classifier that yields the greatest edge.
Classification Margin
The classification margin for binary classification is, for each observation, the difference between the classification score for the true class and the classification score for the false class.
The software defines the classification margin for binary classification as
x is an observation. If the true label of x is the positive class, then y is 1, and –1 otherwise. f(x) is the positive-class classification score for the observation x. The classification margin is commonly defined as m = yf(x).
If the margins are on the same scale, then they serve as a classification confidence measure. Among multiple classifiers, those that yield greater margins are better.
Classification Score
For kernel classification models, the raw classification score for classifying the observation x, a row vector, into the positive class is defined by
is a transformation of an observation for feature expansion.
β is the estimated column vector of coefficients.
b is the estimated scalar bias.
The raw classification score for classifying x into the negative class is −f(x). The software classifies observations into the class that yields a positive score.
If the kernel classification model consists of logistic regression learners, then the
software applies the 'logit'
score transformation to the raw
classification scores (see ScoreTransform
).
Extended Capabilities
Tall Arrays
Calculate with arrays that have more rows than fit in memory.
The
edge
function supports tall arrays with the following usage
notes and limitations:
edge
does not support talltable
data.
For more information, see Tall Arrays.
Version History
Introduced in R2017bR2022a: edge
returns a different value for a model with a nondefault cost matrix
If you specify a nondefault cost matrix when you train the input model object, the edge
function returns a different value compared to previous releases.
The edge
function uses the prior
probabilities stored in the Prior
property to normalize the observation
weights of the input data. The way the function uses the Prior
property
value has not changed. However, the property value stored in the input model object has changed
for a model with a nondefault cost matrix, so the function can return a different value.
For details about the property value change, see Cost property stores the user-specified cost matrix.
If you want the software to handle the cost matrix, prior
probabilities, and observation weights in the same way as in previous releases, adjust the prior
probabilities and observation weights for the nondefault cost matrix, as described in Adjust Prior Probabilities and Observation Weights for Misclassification Cost Matrix. Then, when you train a
classification model, specify the adjusted prior probabilities and observation weights by using
the Prior
and Weights
name-value arguments, respectively,
and use the default cost matrix.
R2022a: edge
can return NaN for predictor data with missing values
The edge
function no longer omits an observation with a
NaN score when computing the weighted mean of the classification margins. Therefore,
edge
can now return NaN when the predictor data
X
or the predictor variables in Tbl
contain any missing values. In most cases, if the test set observations do not contain
missing predictors, the edge
function does not return
NaN.
This change improves the automatic selection of a classification model when you use
fitcauto
.
Before this change, the software might select a model (expected to best classify new
data) with few non-NaN predictors.
If edge
in your code returns NaN, you can update your code
to avoid this result. Remove or replace the missing values by using rmmissing
or fillmissing
, respectively.
The following table shows the classification models for which the
edge
object function might return NaN. For more details,
see the Compatibility Considerations for each edge
function.
Model Type | Full or Compact Model Object | edge Object Function |
---|---|---|
Discriminant analysis classification model | ClassificationDiscriminant , CompactClassificationDiscriminant | edge |
Ensemble of learners for classification | ClassificationEnsemble , CompactClassificationEnsemble | edge |
Gaussian kernel classification model | ClassificationKernel | edge |
k-nearest neighbor classification model | ClassificationKNN | edge |
Linear classification model | ClassificationLinear | edge |
Neural network classification model | ClassificationNeuralNetwork , CompactClassificationNeuralNetwork | edge |
Support vector machine (SVM) classification model | edge |
See Also
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)