CompactClassificationSVM

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

Описание

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

Создание

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

Свойства

расширить все

Свойства SVM

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

Обученные коэффициенты классификатора, заданные как s-на-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

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

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

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

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

Шкала

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

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

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

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

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

Поддерживайте метки класса вектора, заданные как числовой вектор s -на 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 если его класс true 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'журнал (x/( 1 - x))
    'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
    'logit'1/(1 + ex)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2 x – 1
    'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
    'symmetriclogit'2/(1 + ex) – 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Значения Shapley
updateОбновите параметры модели для генерации кода

Примеры

свернуть все

Уменьшите размер классификатора полной машины опорных векторов (SVM) путем удаления обучающих данных. Классификаторы Full 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] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. Оценка поддержки высокомерного распределения. Нейронные расчеты. Том 13, № 7, 2001, стр. 1443-1471.

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

[4] Scholkopf, B., and A. Smola. Обучение с ядерными ядрами: Машины опорных векторов, регуляризация, оптимизация и далее, адаптивные расчеты и машинное обучение. Cambridge, MA: The MIT Press, 2002.

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

.
Введенный в R2014a