# 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 of`Mdl.ClassNames`

. (The software treats string arrays as cell arrays of character vectors.)The distinct classes in

`Y`

must be a subset of`Mdl.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 in`X`

or`Tbl`

.

**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 of`weights`

must be equal to the number of rows in`X`

or`Tbl`

.If

`weights`

is the name of a variable in`Tbl`

, you must specify`weights`

as a character vector or string scalar. For example, if the weights are stored as`Tbl.W`

, then specify`weights`

as`'W'`

. Otherwise, the software treats all columns of`Tbl`

, including`Tbl.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

$$m=2yf\left(x\right).$$

*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* =
*y**f*(*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

$$f\left(x\right)=T(x)\beta +b.$$

$$T(\xb7)$$ 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.

Usage notes and limitations:

`edge`

does not support tall`table`

data.

For more information, see Tall Arrays.

## Version History

**Introduced in R2017b**

### R2022a: `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 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

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## 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)