discardSupportVectors

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

Синтаксис

Mdl = discardSupportVectors(MdlSV)

Описание

пример

Mdl = discardSupportVectors(MdlSV) возвращает обученную, линейную модель Mdl машины вектора поддержки (SVM). И Mdl и обученная, линейная модель SVM MdlSV являются тем же типом объекта. Таким образом, они оба - или объекты ClassificationSVM или объекты CompactClassificationSVM. Однако Mdl и MdlSV отличаются следующими способами:

  • Alpha, SupportVectors и свойства SupportVectorLabels пусты ([]) в Mdl.

  • Если вы отображаете Mdl, программное обеспечение перечисляет свойство Beta вместо Alpha.

Примеры

свернуть все

Создайте линейную модель SVM, которая более эффективна памятью путем отбрасывания векторов поддержки и других связанных параметров.

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

load ionosphere

Обучите линейную модель SVM с помощью целого набора данных.

MdlSV = fitcsvm(X,Y)
MdlSV = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
                    Alpha: [103x1 double]
                     Bias: -3.8828
         KernelParameters: [1x1 struct]
           BoxConstraints: [351x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [351x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Отобразите количество векторов поддержки в MdlSV.

numSV = size(MdlSV.SupportVectors,1)
numSV = 103

Отобразите количество переменных прогноза в X.

p = size(X,2)
p = 34

По умолчанию fitcsvm обучает линейную модель SVM изучению 2D класса. Программное обеспечение перечисляет Alpha в отображении. Модель включает 103 вектора поддержки и 34 предиктора. Если вы отбрасываете векторы поддержки, получившаяся модель использует меньше памяти.

Отбросьте векторы поддержки и другие связанные параметры.

Mdl = discardSupportVectors(MdlSV)
Mdl = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
                     Beta: [34x1 double]
                     Bias: -3.8828
         KernelParameters: [1x1 struct]
           BoxConstraints: [351x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [351x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Отобразите коэффициенты в Mdl.

Mdl.Alpha
ans =

     []

Отобразите векторы поддержки в Mdl.

Mdl.SupportVectors
ans =

     []

Отобразите метки класса вектора поддержки в Mdl.

Mdl.SupportVectorLabels
ans =

     []

Программное обеспечение перечисляет Beta в отображении вместо Alpha. Alpha, SupportVectors и свойства SupportVectorLabels пусты.

Сравните размеры моделей.

vars = whos('MdlSV','Mdl');
100*(1 - vars(1).bytes/vars(2).bytes)
ans = 20.5438

Mdl приблизительно на 20% меньше, чем MdlSV.

Удалите MdlSV из рабочей области.

clear MdlSV

Уплотните модель SVM путем отбрасывания сохраненных векторов поддержки и других связанных оценок. Предскажите метку для строки данных тренировки при помощи уплотненной модели.

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

load ionosphere
rng(1); % For reproducibility

Обучите модель SVM с помощью опций по умолчанию.

MdlSV = fitcsvm(X,Y);

MdlSV является моделью ClassificationSVM, содержащей непустые значения для ее Alpha, SupportVectors и свойств SupportVectorLabels.

Уменьшайте размер модели SVM путем отбрасывания данных тренировки, поддержите векторы и связанные оценки.

CMdlSV = compact(MdlSV);               % Discard training data
CMdl = discardSupportVectors(CMdlSV);  % Discard support vectors

CMdl является моделью CompactClassificationSVM.

Сравните размеры моделей SVM MdlSV и CMdl.

vars = whos('MdlSV','CMdl');
100*(1 - vars(1).bytes/vars(2).bytes)
ans = 96.9528

Уплотненная модель CMdl использует намного меньше памяти, чем полная модель.

Предскажите метку для случайной строки данных тренировки при помощи CMdl. Функция predict принимает уплотненные модели SVM, и, для линейных моделей SVM, не требует Alpha, SupportVectors и свойств SupportVectorLabels предсказать метки для новых наблюдений.

idx = randsample(size(X,1),1)
idx = 147
predictedLabel = predict(CMdl,X(idx,:))
predictedLabel = 1x1 cell array
    {'b'}

trueLabel = Y(idx)
trueLabel = 1x1 cell array
    {'b'}

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

свернуть все

Обученная, линейная модель SVM, заданная как модель ClassificationSVM или CompactClassificationSVM.

Если полем MdlSV.KernelParameters.Function не является 'linear' (то есть, MdlSV не является линейной моделью SVM), программное обеспечение возвращает ошибку.

Советы

  • Для обученной, линейной модели SVM свойством SupportVectors является nsv-by-p матрица. nsv является количеством векторов поддержки (самое большее учебный объем выборки), и p является количеством предикторов или функциями. Свойства Alpha и SupportVectorLabels являются векторами с элементами nsv. Эти свойства могут быть большими для наборов комплексных данных, содержащих много наблюдений или примеров. Свойство Beta является вектором с элементами p.

  • Если обученная модель SVM имеет много векторов поддержки, используйте discardSupportVectors, чтобы уменьшать сумму места, занимавшего обученной, линейной моделью SVM. Можно отобразить размер матрицы вектора поддержки путем ввода size(MdlSV.SupportVectors).

Алгоритмы

predict и resubPredict оценивают очки SVM f (x), и впоследствии маркируют и оценивают использование апостериорных вероятностей

f(x)=xβ+b.

β является Mdl.Beta, и b является Mdl.Bias, то есть, свойства Beta и Bias Mdl, соответственно. Для получения дополнительной информации смотрите Машины Вектора Поддержки для Бинарной Классификации.

Представленный в R2015a