discardSupportVectors

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

Описание

пример

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.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 изучению 2D класса. Программное обеспечение перечисляет 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. 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. 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