edge

Найдите ребро классификации для классификатора машины опорных векторов (SVM)

Описание

e = edge(SVMModel,TBL,ResponseVarName) возвращает ребро классификации (e) для классификатора машины опорных векторов (SVM) SVMModel использование данных предиктора в таблице TBL и метки классов в TBL.ResponseVarName.

Классификационное ребро (e) - скалярное значение, которое представляет средневзвешенное значение классификационных полей.

e = edge(SVMModel,TBL,Y) возвращает ребро классификации (e) для классификатора SVM SVMModel использование данных предиктора в таблице TBL и метки классов в Y.

пример

e = edge(SVMModel,X,Y) возвращает ребро классификации для SVMModel использование данных предиктора в матричных X и метки классов в Y.

пример

e = edge(___,'Weights',weights) вычисляет ребро для весов наблюдений, представленных в weights использование любого из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Загрузите ionosphere набор данных.

load ionosphere
rng(1); % For reproducibility

Обучите классификатор SVM. Укажите 15% -ную выборку для проверки, стандартизируйте данные и укажите, что 'g' - положительный класс.

CVSVMModel = fitcsvm(X,Y,'Holdout',0.15,'ClassNames',{'b','g'},...
    'Standardize',true);
CompactSVMModel = CVSVMModel.Trained{1}; % Extract trained, compact classifier
testInds = test(CVSVMModel.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);

CVSVMModel является ClassificationPartitionedModel классификатор. Оно содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationSVM классификатор, который программное обеспечение обучило с использованием набора обучающих данных.

Оцените ребро тестовой выборки.

e = edge(CompactSVMModel,XTest,YTest)
e = 5.0765

Запас среднее значение тестовой выборки составляет приблизительно 5.

Предположим, что наблюдения в наборе данных измеряются последовательно, и что последние 150 наблюдений имеют лучшее качество из-за обновления технологии. Включите это продвижение путем взвешивания лучших качественных наблюдений больше, чем других наблюдений.

Загрузите ionosphere набор данных.

load ionosphere
rng(1); % For reproducibility

Задайте вектор веса, который взвешивает наблюдения лучшего качества в два раза больше, чем другие наблюдения.

n = size(X,1);
weights = [ones(n-150,1);2*ones(150,1)];

Обучите классификатор SVM. Укажите схему взвешивания и 15% -ную выборку удержания для проверки. Также стандартизируйте данные и задайте, что 'g' - положительный класс.

CVSVMModel = fitcsvm(X,Y,'Weights',weights,'Holdout',0.15,...
    'ClassNames',{'b','g'},'Standardize',true);
CompactSVMModel = CVSVMModel.Trained{1};
testInds = test(CVSVMModel.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);
wTest = weights(testInds,:);

CVSVMModel является обученным ClassificationPartitionedModel классификатор. Оно содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationSVM классификатор, который программное обеспечение обучило с использованием набора обучающих данных.

Оцените взвешенное ребро тестовой выборки с помощью схемы взвешивания.

e = edge(CompactSVMModel,XTest,YTest,'Weights',wTest)
e = 4.8341

Средневзвешенный запас тестовой выборки составляет приблизительно 5.

Выполните выбор признаков путем сравнения ребер тестовой выборки из нескольких моделей. Основываясь исключительно на этом сравнении, классификатор с самым высоким ребром является лучшим классификатором.

Загрузите ionosphere набор данных.

load ionosphere
rng(1); % For reproducibility

Разделите набор данных на наборы для обучения и тестирования. Укажите 15% -ная выборка удержания для проверки.

Partition = cvpartition(Y,'Holdout',0.15);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds,:);

Partition определяет раздел набора данных.

Задайте эти два набора данных:

  • fullX содержит все предикторы (кроме удаленного столбца 0s).

  • partX содержит последние 20 предикторов.

fullX = X;
partX = X(:,end-20:end);

Обучите классификаторы SVM для каждого набора предикторов. Задайте определение раздела.

FullCVSVMModel = fitcsvm(fullX,Y,'CVPartition',Partition);
PartCVSVMModel = fitcsvm(partX,Y,'CVPartition',Partition);
FCSVMModel = FullCVSVMModel.Trained{1};
PCSVMModel = PartCVSVMModel.Trained{1};

FullCVSVMModel и PartCVSVMModel являются ClassificationPartitionedModel классификаторы. Они содержат свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationSVM классификатор, который программное обеспечение обучило с использованием набора обучающих данных.

Оцените ребро тестовой выборки для каждого классификатора.

fullEdge = edge(FCSVMModel,XTest,YTest)
fullEdge = 2.8320
partEdge = edge(PCSVMModel,XTest(:,end-20:end),YTest)
partEdge = 1.5539

Ребро для классификатора, обученного на полном наборе данных, больше, что позволяет предположить, что классификатор, обученный со всеми предикторами, лучше.

Входные параметры

свернуть все

SVM классификационная модель, заданная как ClassificationSVMобъект модели объект модели, возвращенный fitcsvm или compact, соответственно.

Выборочные данные, заданный как таблица. Каждая строка TBL соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально TBL может содержать дополнительные столбцы для переменной отклика и весов наблюдений. TBL должны содержать все предикторы, используемые для обучения SVMModel. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.

Если TBL содержит переменную отклика, используемую для обучения SVMModel, тогда вам не нужно указывать ResponseVarName или Y.

Если вы тренировались SVMModel используя выборочные данные, содержащуюся в таблице, затем входные данные для edge также должно быть в таблице.

Если вы задаете 'Standardize',true в fitcsvm при обучении SVMModelзатем программное обеспечение стандартизирует столбцы данных предиктора с помощью соответствующего средства в SVMModel.Mu и стандартные отклонения в SVMModel.Sigma.

Типы данных: table

Данные предиктора, заданные как числовая матрица.

Каждая строка X соответствует одному наблюдению (также известному как образец или пример), и каждый столбец соответствует одной переменной (также известной как функция). Переменные в столбцах X должно быть таким же, как переменные, которые обучили SVMModel классификатор.

Длина Y и количество строк в X должно быть равным.

Если вы задаете 'Standardize',true в fitcsvm для обучения SVMModel, затем программное обеспечение стандартизирует столбцы X использование соответствующих средств в SVMModel.Mu и стандартные отклонения в SVMModel.Sigma.

Типы данных: double | single

Имя переменной отклика, заданное как имя переменной в TBL. Если TBL содержит переменную отклика, используемую для обучения SVMModel, тогда вам не нужно указывать ResponseVarName.

Если вы задаете ResponseVarName, тогда вы должны сделать это как вектор символов или строковый скаляр. Для примера, если переменная отклика сохранена как TBL.Response, затем задайте ResponseVarName как 'Response'. В противном случае программное обеспечение обрабатывает все столбцы TBL, включая TBL.Response, как предикторы.

Переменная отклика должна быть категориальными символьными или строковыми массивами, логическим или числовым вектором или массивом ячеек из векторов символов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Типы данных: char | string

Метки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов. Y должно совпадать с типом данных SVMModel.ClassNames. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)

Длина Y должно равняться количеству строк в TBL или количество строк в X.

Веса наблюдений, заданные как числовой вектор или имя переменной в TBL.

Если вы задаете weights в виде числового вектора, затем размера weights должно быть равно количеству строк в X или TBL.

Если вы задаете weights как имя переменной в TBL, вы должны сделать это как вектор символов или строковый скаляр. Для примера, если веса сохранены как TBL.W, затем задайте weights как 'W'. В противном случае программное обеспечение обрабатывает все столбцы TBL, включая TBL.W, как предикторы.

Если вы поставляете веса, edge вычисляет взвешенное ребро классификации. Программа взвешивает наблюдения в каждой строке X или TBL с соответствующим весом в weights.

Пример: 'Weights','W'

Типы данных: single | double | char | string

Подробнее о

свернуть все

Классификационное ребро

Этот edge является средневзвешенным значением classification margins.

Веса являются вероятностями предыдущего класса. Если вы поставляете веса, то программное обеспечение нормализует их, чтобы суммировать с предыдущими вероятностями в соответствующих классах. Программа использует ренормализованные веса, чтобы вычислить взвешенное среднее.

Один из способов выбрать один из нескольких классификаторов, например, для выбора признаков, - выбрать классификатор, который дает наивысшее ребро.

Классификационное поле

Для каждого наблюдения classification margin двоичной классификации является различие между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.

Программное обеспечение определяет классификационный запас для двоичной классификации как

m=2yf(x).

x является наблюдением. Если истинная метка x является положительным классом, то y равен 1, и -1 в противном случае. f (x) является классификационной оценкой положительного класса для x наблюдений. Классификационное поле обычно определяется как m = y f (x).

Если поля находятся в одной шкале, то они служат классификационной доверительной мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.

Классификационная оценка

SVM- classification score для классификации x наблюдений является подписанным расстоянием от x до контура принятия решения в диапазоне от - ∞ до +∞. Положительный счет для класса указывает, что x, по прогнозам, находится в этом классе. Отрицательный счет указывает на обратное.

Положительный класс классификационной оценки f(x) - это обученная функция классификации SVM. f(x) является также численным предсказанным ответом для x или счетом для предсказания x в положительный класс.

f(x)=j=1nαjyjG(xj,x)+b,

где (α1,...,αn,b) являются оцененными параметрами SVM, G(xj,x) является скалярным произведением в пространстве предикторов между x и поддерживающими векторами, и сумма включает наблюдения обучающего набора. Отрицательная классификационная оценка для x или балл для предсказания x в отрицательный класс равен - f (x).

Если G (xj, x) = xj − x (линейное ядро), то функция оценки уменьшается до

f(x)=(x/s)β+b.

s - шкала ядра, а β - вектор подгоняемых линейных коэффициентов.

Для получения дополнительной информации смотрите Общие сведения о машинах опорных векторов.

Алгоритмы

Для двоичной классификации программное обеспечение определяет поле для j наблюдений, mj как

mj=2yjf(xj),

где yj ∊ {-1,1} и f (xj) является предсказанным счетом j наблюдений для положительного класса. Однако mj = yj f (xj) обычно используется для определения запаса.

Ссылки

[1] Christianini, N., and J. C. Shawe-Taylor. Введение в машины опорных векторов и других основанных на ядре методов обучения. Кембридж, Великобритания: Cambridge University Press, 2000.

Расширенные возможности

Введенный в R2014a