exponenta event banner

край

Найти край классификации для классификатора вспомогательных векторных машин (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 объект модели или CompactClassificationSVM объект модели, возвращенный 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

Подробнее

свернуть все

Край классификации

Край - это средневзвешенное значение полей классификации.

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

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

Маржа классификации

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

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

m = 2yf (x).

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

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

Оценка классификации

Показатель классификации SVM для классификации наблюдения 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 = yjf (xj).

Ссылки

[1] Кристианини, Н. и Дж. К. Шаве-Тейлор. Введение в поддержку векторных машин и других методов обучения на основе ядра. Кембридж, Великобритания: Cambridge University Press, 2000.

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

Представлен в R2014a