discardSupportVectors

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

Описание

пример

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

  • The 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.8827
         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 для двухклассного обучения. Программное обеспечение перечисляет Alpha на отображении. Модель включает 103 вектора поддержки и 34 предиктора. Если вы отбрасываете векторы поддержки, полученная модель потребляет меньше памяти.

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

Mdl = discardSupportVectors(MdlSV)
Mdl = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
                     Beta: [34x1 double]
                     Bias: -3.8827
         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. The Alpha, SupportVectors, и SupportVectorLabels свойства пусты.

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

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

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.8174

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

Спрогнозируйте метку для случайной строки обучающих данных при помощи CMdl. The 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 - количество предикторов или функций. The Alpha и SupportVectorLabels свойства являются векторами с nsv элементами. Эти свойства могут быть большими для наборов комплексных данных, содержащих много наблюдений или примеров. The 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