Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

discardSupportVectors

Deseche los vectores de soporte

Sintaxis

mdlOut = discardSupportVectors(mdl)

Descripción

mdlOut = discardSupportVectors(mdl) Devuelve el modelo de regresión de máquina de vectores de soporte lineal (SVM) entrenado, que es similar al modelo de regresión SVM lineal entrenado, excepto:mdlOutmdl

  • Las propiedades y están vacías ().AlphaSupportVectors[]

  • Si se visualiza, el software enumera la propiedad en lugar de la propiedad.mdlOutBetaAlpha

Argumentos de entrada

expandir todo

Modelo de regresión SVM entrenado y lineal, especificado como un modelo o.RegressionSVMCompactRegressionSVM

Si entrena el modelo utilizando una función de kernel que no es lineal (es decir, si el campo es algo distinto a), el software devuelve un error.mdl.KernelFunction'linear' Solo puede descartar vectores de soporte para modelos lineales.

Argumentos de salida

expandir todo

Modelo de regresión SVM entrenado y lineal, devuelto como un modelo o. es el mismo tipo que.RegressionSVMCompactRegressionSVMmdlOutmdl

Después de descartar los vectores de soporte, las propiedades y están vacías ().AlphaSupportVectors[] El software enumera la propiedad en su pantalla y no muestra la propiedad.BetaAlpha el predict Y resubPredict métodos computan las respuestas pronosticadas utilizando los coeficientes almacenados en la propiedad.Beta

Ejemplos

expandir todo

Este modelo muestra cómo reducir el espacio en disco utilizado por un modelo de regresión SVM lineal entrenado descartando los vectores de soporte y otros parámetros relacionados.

Cargue el conjunto de datos.carsmall Especifique y como las variables predictoras () y como variable de respuesta ().HorsepowerWeightXMPGY

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

Entrenar un modelo de regresión SVM lineal, estandarizando los datos. Mostrar el número de vectores de soporte.

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 

De forma predeterminada, entrena un modelo de regresión SVM lineal.fitrsvm Las listas de software en la pantalla.Alpha El modelo tiene 77 vectores de soporte.

Tenga en cuenta que las variables de predictor y respuesta contienen varios valores.NaN Al entrenar un modelo, eliminará las filas que contengan valores de los datos de predictor y de respuesta.fitrsvmNaN Como resultado, el modelo entrenado utiliza sólo 93 de las 100 observaciones totales contenidas en los datos de la muestra.

Descarte los vectores de soporte y otros parámetros relacionados.

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 =       []

El software se enumera en la pantalla en lugar de.BetaAlpha Las propiedades y están vacías.AlphaSupportVectors

Compare los tamaños de los modelos.

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

consume menos memoria que porque no almacena los vectores de soporte.mdlOutmdl

En este ejemplo se muestra cómo reducir el consumo de memoria de un modelo de regresión SVM completo y entrenado mediante la compactación del modelo y el descarte de los vectores de soporte.

Cargue los datos de ejemplo.carsmall

load carsmall rng default  % for reproducibility

Entrenar un modelo de regresión SVM lineal utilizando como variable predictora y como variable de respuesta.WeightMPG Estandarizar los datos.

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

Tenga en cuenta que contiene varios valores.MPGNaN Al entrenar un modelo, eliminará las filas que contengan valores de los datos de predictor y de respuesta.fitrsvmNaN Como resultado, el modelo entrenado utiliza sólo 94 de las 100 observaciones totales contenidas en los datos de la muestra.

Compacte el modelo de regresión para descartar los datos de entrenamiento y cierta información relacionada con el proceso de entrenamiento.

compactMdl = compact(mdl);

es un modelo que tiene los mismos parámetros, vectores de soporte y estimaciones relacionadas que, pero ya no almacena los datos de entrenamiento.compactMdlCompactRegressionSVMmdl

Descarte los vectores de soporte y las estimaciones relacionadas para el modelo compactado.

mdlOut = discardSupportVectors(compactMdl);

es un modelo que tiene los mismos parámetros que y, pero ya no almacena los vectores de soporte y las estimaciones relacionadas.mdlOutCompactRegressionSVMmdlcompactMdl

Compare los tamaños de los tres modelos de regresión de SVM, y.compactMdlmdlmdlOut

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

El modelo compactado consume 3601 bytes de memoria, mientras que el modelo completo consume 13727 bytes de memoria.compactMdlmdl El modelo, que también descarta los vectores de soporte, consume 2305 bytes de memoria.mdlOut

Sugerencias

Para un modelo de regresión SVM lineal entrenado, la propiedad es unSupportVectors Nsv-por-matriz.p Nsv es el número de vectores de soporte (como máximo el tamaño de la muestra de entrenamiento) y es el número de variables predictoras.p Si alguno de los predictores es categórico, incluye el número de variables ficticias necesarias para tener en cuenta todos los niveles de predictor categóricos.p La propiedad es un vector conAlpha Nsv Elementos.

Las propiedades y pueden ser grandes para conjuntos de datos complejos que contienen muchas observaciones o ejemplos.SupportVectorsAlpha Sin embargo, la propiedad es un vector con elementos, que pueden ser considerablemente más pequeños.Betap Puede usar un modelo de regresión de SVM entrenado para predecir valores de respuesta incluso si descarta los vectores de soporte porque el predict Y resubPredict métodos utilizan para calcular las respuestas previstas.Beta

Si el modelo de regresión de SVM entrenado y lineal tiene muchos vectores de soporte, utilírelos para reducir la cantidad de espacio en disco que consume el modelo de regresión SVM lineal entrenado.discardSupportVectors Puede mostrar el tamaño de la matriz de vectores de soporte introduciendo.size(mdlIn.SupportVectors)

Algoritmos

el predict Y resubPredict estimar los valores de respuesta utilizando la fórmula

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

Dónde:

  • β es el valor beta, almacenado como.mdl.Beta

  • Β0 es el valor de sesgo, almacenado como.mdl.Bias

  • son los datos de entrenamiento.X

  • es el valor de escala del kernel, almacenado como.Smdl.KernelParameters.Scale

De esta manera, el software puede utilizar el valor de para hacer predicciones incluso después de descartar los vectores de soporte.mdl.Beta

Introducido en R2015b