exponenta event banner

CompactClassificationSVM

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

Описание

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

Создание

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

Свойства

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

Свойства SVM

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

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

Alpha содержит обученные коэффициенты классификатора из двойной задачи, то есть оцененные множители Лагранжа. При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий всему набору. То есть 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 пуст ([]).

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

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

Член смещения, указанный как скаляр.

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

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

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

ОбластьОписание
Функция

Функция ядра, используемая для вычисления элементов матрицы Gram. Для получения более подробной информации см. '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 содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

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

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

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

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

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

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

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

  • Для двухклассного обучения, 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.

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

Дополнительные сведения см. в разделе Алгоритмы.

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

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

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

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

    Mdl.ScoreTransform = 'function';

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

    СтоимостьОписание
    'doublelogit'1/( 1 + e-2x)
    'invlogit'log (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)
incrementalLearnerПреобразование модели вектора поддержки двоичной классификации (SVM) в инкрементный ученик
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossНайти ошибку классификации для классификатора вспомогательных векторных машин (SVM)
marginПоиск полей классификации для классификатора вспомогательных векторных машин (SVM)
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictКлассифицировать наблюдения с помощью классификатора вспомогательных векторов (SVM)
shapleyЗначения Шапли
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 = 
  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              31058  classreg.learning.classif.CompactClassificationSVM              
  SVMModel             1x1             141148  ClassificationSVM                                               

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

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

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

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

load ionosphere

Подготовка и перекрестная проверка классификатора SVM. Стандартизируйте данные предиктора и укажите порядок классов.

rng(1);  % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Standardize',true,...
    'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = 
  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 = 
  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] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Нью-Йорк: Спрингер, 2008.

[2] Шолкопф, Б., Дж. С. Платт, Дж. С. Шаве-Тейлор, А. Дж. Смола и Р. К. Уильямсон. «Оценка поддержки высокоразмерного распределения». Нейронные вычисления. Том 13, номер 7, 2001, стр. 1443-1471.

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

[4] Шолкопф, Б. и А. Смола. Обучение с ядрами: поддержка векторных машин, регуляризация, оптимизация и далее, адаптивные вычисления и машинное обучение. Кембридж, Массачусетс: MIT Press, 2002.

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

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