exponenta event banner

discardSupportVectors

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

Описание

пример

Mdl = discardSupportVectors(MdlSV) возвращает обученную модель линейного вектора поддержки (SVM) Mdl. Оба 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 для двухклассного обучения. Списки программного обеспечения 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