discardSupportVectors

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

Синтаксис

mdlOut = discardSupportVectors(mdl)

Описание

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

  • 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 использует 3 601 байт памяти, в то время как полная модель mdl использует 13 727 байтов памяти. Модель mdlOut, то, которое также отбрасывает векторы поддержки, использует 2 305 байтов памяти.

Советы

Для обученной, линейной модели регрессии 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