CompactClassificationSVM

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

Описание

CompactClassificationSVM компактная версия классификатора машины опорных векторов (SVM). Компактный классификатор не включает данные, используемые в обучении классификатор SVM. Поэтому вы не можете выполнить некоторые задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный классификатор SVM в задачах, таких как предсказание меток новых данных.

Создание

Создайте CompactClassificationSVM модель от полного, обученного ClassificationSVM классификатор при помощи compact.

Свойства

развернуть все

Свойства SVM

Это свойство доступно только для чтения.

Обученные коэффициенты классификатора, заданные как s-by-1 числовой вектор. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector).

Alpha содержит обученные коэффициенты классификатора от двойной проблемы, то есть, предполагаемых множителей Лагранжа. Если вы удаляете копии при помощи RemoveDuplicates аргумент пары "имя-значение" fitcsvm, затем для данного набора дублирующихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий целому набору. That is, MATLAB® приписывает ненулевой коэффициент одному наблюдению от набора копий и коэффициент 0 ко всем другим дублирующимся наблюдениям в наборе.

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

Это свойство доступно только для чтения.

Линейные коэффициенты предиктора, заданные как числовой вектор. Длина Beta равно количеству предикторов, используемых, чтобы обучить модель.

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

Если KernelParameters.Function 'linear', затем счет классификации к наблюдению x

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

Mdl хранилища β, b и s в свойствах Beta, Bias, и KernelParameters.Scale, соответственно.

Чтобы оценить баллы классификации вручную, необходимо сначала применить любые преобразования к данным о предикторе, которые были применены во время обучения. А именно, если вы задаете 'Standardize',true при использовании fitcsvm, затем необходимо стандартизировать данные о предикторе вручную при помощи среднего Mdl.Mu и стандартное отклонение Mdl.Sigma, и затем разделите результат на шкалу ядра в Mdl.KernelParameters.Scale.

Все функции SVM, такие как resubPredict и predict, примените любое необходимое преобразование перед оценкой.

Если KernelParameters.Function не 'linear', затем Beta isempty).

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

Это свойство доступно только для чтения.

Сместите термин, заданный как скаляр.

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

Это свойство доступно только для чтения.

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

Поле Описание
Функция

Функция ядра использовалась для расчета элементов матрицы Грамма. Для получения дополнительной информации смотрите 'KernelFunction'.

Шкала

Масштабный коэффициент ядра раньше масштабировал все элементы данных о предикторе, на которых обучена модель. Для получения дополнительной информации смотрите 'KernelScale'.

Отобразить значения KernelParameters, используйте запись через точку. Например, Mdl.KernelParameters.Scale отображает значение масштабного коэффициента ядра.

Программное обеспечение принимает KernelParameters как входные параметры и не изменяет их.

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

Это свойство доступно только для чтения.

Поддержите векторные метки класса, заданные как s-by-1 числовой вектор. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector).

Значение +1 в SupportVectorLabels указывает, что соответствующий вектор поддержки находится в положительном классе (ClassNames{2}). Значение –1 указывает, что соответствующий вектор поддержки находится в отрицательном классе (ClassNames{1}).

Если вы удаляете копии при помощи RemoveDuplicates аргумент пары "имя-значение" fitcsvm, затем для данного набора дублирующихся наблюдений, которые являются векторами поддержки, SupportVectorLabels содержит одну уникальную метку вектора поддержки.

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

Это свойство доступно только для чтения.

Поддержите векторы в обученном классификаторе, заданном как s-by-p числовая матрица. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector), и p является количеством переменных предикторов в данных о предикторе.

SupportVectors содержит строки данных о предикторе X тот MATLAB считает векторами поддержки. Если вы задаете 'Standardize',true когда обучение классификатор SVM с помощью fitcsvm, затем SupportVectors содержит стандартизированные строки X.

Если вы удаляете копии при помощи RemoveDuplicates аргумент пары "имя-значение" fitcsvm, затем для данного набора дублирующихся наблюдений, которые являются векторами поддержки, SupportVectors содержит один уникальный вектор поддержки.

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

Другие свойства классификации

Это свойство доступно только для чтения.

Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

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

Это свойство доступно только для чтения.

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

Типы данных: single | double | logical | char | cell | categorical

Это свойство доступно только для чтения.

Misclassification стоят, заданный как числовая квадратная матрица, где Cost(i,j) стоимость классификации точки в класс j если его истинным классом является i.

Во время обучения обновлений программного обеспечения априорные вероятности путем слияния штрафов описаны в матрице стоимости.

  • Для изучения 2D класса, Cost всегда имеет эту форму: Cost(i,j) = 1 если i ~= j, и Cost(i,j) = 0 если i = j. Строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.

  • Для изучения одного класса, Cost = 0.

Для получения дополнительной информации см. Алгоритмы.

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

Это свойство доступно только для чтения.

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

Если модель использует фиктивное переменное кодирование в категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames совпадает с PredictorNames.

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

Это свойство доступно только для чтения.

Средние значения предиктора, заданные как числовой вектор. Если вы задаете 'Standardize',1 или 'Standardize',true когда вы обучаете классификатор SVM с помощью fitcsvm, затем длина Mu равно количеству предикторов.

MATLAB расширяет категориальные переменные в данных о предикторе с помощью полного фиктивного кодирования. Таким образом, MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Mu хранилища одно значение для каждого переменного предиктора, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, которые содержат категориальные переменные.

Если вы устанавливаете 'Standardize',false когда вы обучаете классификатор SVM с помощью fitcsvm, затем Mu пустой вектор ([]).

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

Априорные вероятности для каждого класса, заданного как числовой вектор. Порядок элементов Prior соответствует элементам Mdl.ClassNames.

Для изучения 2D класса, если вы задаете матрицу стоимости, затем обновления программного обеспечения априорные вероятности путем слияния штрафов, описанных в матрице стоимости.

Для получения дополнительной информации см. Алгоритмы.

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

Выиграйте преобразование, заданное как вектор символов или указатель на функцию. ScoreTransform представляет встроенную функцию преобразования или указатель на функцию для преобразования предсказанных баллов классификации.

Чтобы изменить преобразование счета функционируют к function, например, используйте запись через точку.

  • Для встроенной функции введите вектор символов.

    Mdl.ScoreTransform = 'function';

    Эта таблица описывает доступные встроенные функции.

    ЗначениеОписание
    'doublelogit'1/(1 + e –2x)
    'invlogit'журнал (x / (1 – x))
    'ismax'Устанавливает счет к классу с самым большим счетом к 1, и устанавливает музыку ко всем другим классам к 0
    'logit'1/(1 + e x)
    'none' или 'identity'x (никакое преобразование)
    'sign'– 1 для x <0
    0 для x = 0
    1 для x> 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает счет к классу с самым большим счетом к 1, и устанавливает музыку ко всем другим классам к –1
    'symmetriclogit'2/(1 + e x) – 1

  • Для функции MATLAB или функции, которую вы задаете, введите ее указатель на функцию.

    Mdl.ScoreTransform = @function;

    function должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).

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

Это свойство доступно только для чтения.

Стандартные отклонения предиктора, заданные как числовой вектор.

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

MATLAB расширяет категориальные переменные в данных о предикторе с помощью полного фиктивного кодирования. Таким образом, MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Sigma хранилища одно значение для каждого переменного предиктора, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, которые содержат категориальные переменные.

Если вы устанавливаете 'Standardize',false когда вы обучаете классификатор SVM с помощью fitcsvm, затем Sigma пустой вектор ([]).

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

Функции объекта

compareHoldoutСравните точность двух моделей классификации с помощью новых данных
discardSupportVectorsОтбросьте векторы поддержки для линейного классификатора машины опорных векторов (SVM)
edgeНайдите ребро классификации для классификатора машины опорных векторов (SVM)
fitPosteriorПодходящие апостериорные вероятности для компактного классификатора машины опорных векторов (SVM)
lossНайдите ошибку классификации для классификатора машины опорных векторов (SVM)
marginНайдите поля классификации для классификатора машины опорных векторов (SVM)
predictКлассифицируйте наблюдения с помощью классификатора машины опорных векторов (SVM)
updateОбновите параметры модели для генерации кода

Примеры

свернуть все

Уменьшайте размер полного классификатора SVM путем удаления обучающих данных. Полные классификаторы SVM (то есть, ClassificationSVM классификаторы), содержат обучающие данные. Чтобы повысить эффективность, используйте меньший классификатор.

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

load ionosphere

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

SVMModel = fitcsvm(X,Y,'Standardize',true,...
    'ClassNames',{'b','g'})
SVMModel = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
                    Alpha: [90x1 double]
                     Bias: -0.1343
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           BoxConstraints: [351x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [351x1 logical]
                   Solver: 'SMO'


  Properties, Methods

SVMModel ClassificationSVM классификатор.

Уменьшайте размер классификатора SVM.

CompactSVMModel = compact(SVMModel)
CompactSVMModel = 
  classreg.learning.classif.CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [90x1 double]
                     Bias: -0.1343
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           SupportVectors: [90x34 double]
      SupportVectorLabels: [90x1 double]


  Properties, Methods

CompactSVMModel CompactClassificationSVM классификатор.

Отобразите объем памяти каждый классификатор использование.

whos('SVMModel','CompactSVMModel')
  Name                 Size             Bytes  Class                                                 Attributes

  CompactSVMModel      1x1              31074  classreg.learning.classif.CompactClassificationSVM              
  SVMModel             1x1             141404  ClassificationSVM                                               

Полный классификатор SVM (SVMModel) больше чем в четыре раза больше, чем компактный классификатор SVM (CompactSVMModel).

Чтобы пометить новые наблюдения эффективно, можно удалить SVMModel от MATLAB® Workspace, и затем передают CompactSVMModel и новые значения предиктора к predict.

Чтобы далее уменьшать размер вашего компактного классификатора SVM, используйте discardSupportVectors функционируйте, чтобы отбросить векторы поддержки.

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

load ionosphere

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

rng(1);  % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Standardize',true,...
    'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'SVM'
         PredictorNames: {1x34 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVSVMModel ClassificationPartitionedModel перекрестный подтвержденный классификатор SVM. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.

В качестве альтернативы можно перекрестный подтвердить обученный ClassificationSVM классификатор путем передачи его crossval.

Смотрите один из обученных сгибов с помощью записи через точку.

CVSVMModel.Trained{1}
ans = 
  classreg.learning.classif.CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [78x1 double]
                     Bias: -0.2209
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           SupportVectors: [78x34 double]
      SupportVectorLabels: [78x1 double]


  Properties, Methods

Каждым сгибом является CompactClassificationSVM классификатор, обученный на 90% данных.

Оцените ошибку обобщения.

genError = kfoldLoss(CVSVMModel)
genError = 0.1168

В среднем ошибка обобщения составляет приблизительно 12%.

Ссылки

[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.

[2] Scholkopf, B., Дж. К. Платт, Дж. К. Шейв-Тейлор, А. Дж. Смола и Р. К. Уильямсон. “Оценивая Поддержку Высоко-размерного Распределения”. Нейронный Расчет. Издание 13, Номер 7, 2001, стр 1443–1471.

[3] Christianini, N. и Дж. К. Шейв-Тейлор. Введение в машины опорных векторов и другое основанное на ядре изучение методов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.

[4] Scholkopf, B. и A. Смола. Изучение с ядрами: машины опорных векторов, регуляризация, оптимизация и вне, адаптивный расчет и машинное обучение. Кембридж, MA: нажатие MIT, 2002.

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

Введенный в R2014a