margin

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

Описание

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

m возвращается как числовой вектор с той же длиной, что и Y. Программное обеспечение оценивает каждую запись m использование обученного классификатора SVM SVMModel, соответствующую строку Xи истинную метку класса Y.

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

пример

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

Примеры

свернуть все

Загрузите 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 the trained, compact classifier
testInds = test(CVSVMModel.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);

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

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

m = margin(CompactSVMModel,XTest,YTest);
m(10:20)
ans = 11×1

    3.5459
    5.5940
    4.9946
    4.5610
   -4.7964
    5.5123
   -2.8773
    1.8671
    9.4992
    9.5024
      ⋮

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

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

Загрузите 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 классификатор, который программное обеспечение обучило с использованием набора обучающих данных.

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

fullM = margin(FCSVMModel,XTest,YTest);
partM = margin(PCSVMModel,XTest(:,end-20:end),YTest);
n = size(XTest,1);
p = sum(fullM < partM)/n
p = 0.2500

Приблизительно 25% запасов от полной модели меньше, чем от модели с меньшим количеством предикторов. Этот результат говорит о том, что модель, обученная со всеми предикторами, лучше.

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

свернуть все

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

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

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

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

Если вы задаете '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.

Подробнее о

свернуть все

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

Этот 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