exponenta event banner

discardSupportVectors

Отбросить векторы поддержки

Синтаксис

mdlOut = discardSupportVectors(mdl)

Описание

mdlOut = discardSupportVectors(mdl) возвращает модель регрессии обученного линейного вектора поддержки (SVM) mdlOut, которая аналогична обученной линейной регрессионной модели SVM mdl, за исключением:

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

  • При отображении mdlOut, программное обеспечение перечисляет Beta свойство вместо Alpha собственность.

Входные аргументы

развернуть все

Обученная линейная регрессионная модель SVM, указанная как RegressionSVM или CompactRegressionSVM модель.

При обучении модели с использованием функции ядра, которая не является линейной (т.е. если поле mdl.KernelFunction является чем-то иным, чем 'linear'), программа возвращает ошибку. Можно отменить только векторы поддержки для линейных моделей.

Выходные аргументы

развернуть все

Обученная линейная регрессионная модель SVM, возвращенная как RegressionSVM или CompactRegressionSVM модель. mdlOut имеет тот же тип, что и mdl.

После отбрасывания векторов поддержки свойства Alpha и SupportVectors пусты ([]). Программное обеспечение перечисляет свойство Beta в его отображении и не перечисляет свойство Alpha. predict и resubPredict методы вычисляют предсказанные отклики с использованием коэффициентов, хранящихся в Beta собственность.

Примеры

развернуть все

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

Загрузить carsmall набор данных. Определить Horsepower и Weight в качестве переменных предиктора (X), и MPG в качестве переменной ответа (Y).

load carsmall
X = [Horsepower,Weight];
Y = MPG;

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

mdl = fitrsvm(X,Y,'Standardize',true)
numSV = size(mdl.SupportVectors,1)
mdl = 

  RegressionSVM
           PredictorNames: {'x1'  'x2'}
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                    Alpha: [77x1 double]
                     Bias: 22.9131
         KernelParameters: [1x1 struct]
                       Mu: [109.3441 2.9625e+03]
                    Sigma: [45.3545 805.9668]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods


numSV =

    77

По умолчанию fitrsvm обучает модель линейной регрессии SVM. Списки программного обеспечения Alpha на дисплее. Модель имеет 77 векторов поддержки.

Обратите внимание, что предиктор и переменные ответа содержат несколько NaN значения. При обучении модели fitrsvm удалит строки, содержащие NaN значения как из данных предиктора, так и из данных ответа. В результате обученная модель использует только 93 из 100 общих наблюдений, содержащихся в данных выборки.

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

mdlOut = discardSupportVectors(mdl)
mdlOut.Alpha
mdlOut.SupportVectors
mdlOut = 

  RegressionSVM
           PredictorNames: {'x1'  'x2'}
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                     Beta: [2x1 double]
                     Bias: 22.9131
         KernelParameters: [1x1 struct]
                       Mu: [109.3441 2.9625e+03]
                    Sigma: [45.3545 805.9668]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods


ans =

     []


ans =

     []

Списки программного обеспечения Beta на дисплее вместо Alpha. Alpha и SupportVectors свойства пусты.

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

vars = whos('mdl','mdlOut');
[vars(1).bytes,vars(2).bytes]
ans =

       15004       13156

mdlOut потребляет меньше памяти, чем mdl поскольку в нем не хранятся векторы поддержки.

В этом примере показано, как уменьшить потребление памяти полной, обученной модели регрессии SVM путем уплотнения модели и отбрасывания векторов поддержки.

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

load carsmall
rng default  % for reproducibility

Обучение модели линейной регрессии SVM с использованием Weight в качестве предикторной переменной и MPG в качестве переменной ответа. Стандартизация данных.

mdl = fitrsvm(Weight,MPG,'Standardize',true);

Обратите внимание, что MPG содержит несколько NaN значения. При обучении модели fitrsvm удалит строки, содержащие NaN значения как из данных предиктора, так и из данных ответа. В результате обученная модель использует только 94 из 100 общих наблюдений, содержащихся в данных выборки.

Скомпонуйте регрессионную модель, чтобы отбросить обучающие данные и некоторую информацию, связанную с процессом обучения.

compactMdl = compact(mdl);

compactMdl является CompactRegressionSVM модель, которая имеет те же параметры, векторы поддержки и связанные оценки, что и mdl, но больше не сохраняет данные обучения.

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

mdlOut = discardSupportVectors(compactMdl);

mdlOut является CompactRegressionSVM модель, которая имеет те же параметры, что и mdl и compactMdl, но больше не хранит векторы поддержки и связанные оценки.

Сравните размеры трех регрессионных моделей SVM, compactMdl, mdl, и mdlOut.

vars = whos('compactMdl','mdl','mdlOut');
[vars(1).bytes,vars(2).bytes,vars(3).bytes]
ans =

        3601       13727        2305

Уплотненная модель compactMdl потребляет 3601 байт памяти, в то время как полная модель mdl потребляет 13727 байт памяти. Модель mdlOut, которая также отбрасывает векторы поддержки, потребляет 2305 байт памяти.

Совет

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

SupportVectors и Alpha свойства могут быть большими для сложных наборов данных, содержащих множество наблюдений или примеров. Тем не менее, Beta свойство является вектором с p-элементами, который может быть значительно меньше. Можно использовать обученную регрессионную модель SVM для прогнозирования значений ответа, даже если отбросить векторы поддержки, потому что predict и resubPredict использование методов Beta для вычисления прогнозируемых откликов.

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

Алгоритмы

predict и resubPredict оценить значения ответа по формуле

f (x) = (XS) β + β0,

где:

  • β - бета-значение, хранящееся в виде mdl.Beta.

  • β0 - значение смещения, сохраненное как mdl.Bias.

  • X - данные обучения.

  • S - значение шкалы ядра, сохраненное как mdl.KernelParameters.Scale.

Таким образом, программное обеспечение может использовать значение mdl.Beta делать прогнозы даже после отбрасывания векторов поддержки.

Представлен в R2015b