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.

CompactClassificationSVM

Máquina de vectores de soporte (SVM) compacta para clasificación binaria y de una clase

Descripción

es una versión compacta del clasificador de la máquina de vectores de soporte (SVM).CompactClassificationSVM El clasificador compacto no incluye los datos utilizados para entrenar el clasificador SVM. Por lo tanto, no puede realizar algunas tareas, como la validación cruzada, mediante el clasificador compacto. Utilice un clasificador SVM compacto para tareas como predecir las etiquetas de nuevos datos.

Creación

Cree un modelo a partir de un clasificador completo y entrenado utilizando.CompactClassificationSVMClassificationSVMcompact

Propiedades

expandir todo

Propiedades de SVM

Esta propiedad es de solo lectura.

Coeficientes de clasificador entrenados, especificados como un vector numérico de-por-1. es el número de vectores de soporte en el clasificador entrenado,.sssum(Mdl.IsSupportVector)

contiene los coeficientes del clasificador entrenado del problema dual, es decir, los multiplicadores de Lagrange estimados.Alpha Si elimina duplicados utilizando el argumento de par nombre-valor de, a continuación, para un conjunto determinado de observaciones duplicadas que son vectores de soporte, contiene un coeficiente correspondiente a todo el conjunto.RemoveDuplicatesfitcsvmAlpha Es decir, atribuye un coeficiente distinto de cero a una observación del conjunto de duplicados y un coeficiente de todas las demás observaciones duplicadas en el conjunto.MATLAB®0

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Coeficientes predictores lineales, especificados como un vector numérico. La longitud de es igual al número de predictores utilizados para entrenar el modelo.Beta

expande las variables categóricas en los Datos predictores utilizando la codificación ficticia completa.MATLAB Es decir, crea una variable ficticia para cada nivel de cada variable categórica. almacena un valor para cada variable predictora, incluidas las variables ficticias.MATLABBeta Por ejemplo, si hay tres predictores, uno de los cuales es una variable categórica con tres niveles, entonces es un vector numérico que contiene cinco valores.Beta

Si es así, entonces la puntuación de clasificación para la observación esKernelParameters.Function'linear'x

f(x)=(x/s)β+b.

almacena, y en las propiedades, y, respectivamente.MdlβbsBetaBiasKernelParameters.Scale

Para estimar manualmente las puntuaciones de clasificación, primero debe aplicar las transformaciones a los Datos predictores que se aplicaron durante el entrenamiento. En concreto, si especifica cuando se utiliza, debe estandarizar los Datos predictores manualmente utilizando la media y la desviación estándar y, a continuación, dividir el resultado por la escala del kernel.'Standardize',truefitcsvmMdl.MuMdl.SigmaMdl.KernelParameters.Scale

Todas las funciones de SVM, como y, aplican cualquier transformación necesaria antes de la estimación.resubPredictPredecir

Si no es así, entonces está vacío ().KernelParameters.Function'linear'Beta[]

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Término de sesgo, especificado como un escalar.

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Parámetros del kernel, especificados como una matriz de estructura. La propiedad de parámetros del kernel contiene los campos enumerados en esta tabla.

CampoDescripción
Función

Función del kernel utilizada para computar los elementos de la.Matriz de Gram Para obtener más información, consulte.'KernelFunction'

Escala

Parámetro de escala del kernel utilizado para escalar todos los elementos de los Datos predictores en los que se entrena el modelo. Para obtener más información, consulte.'KernelScale'

Para mostrar los valores de, utilice la notación de puntos.KernelParameters Por ejemplo, muestra el valor del parámetro de escala del kernel.Mdl.KernelParameters.Scale

El software acepta como entradas y no las modifica.KernelParameters

Tipos de datos: struct

Esta propiedad es de solo lectura.

Admite etiquetas de clase vectorial, especificadas como un vector numérico de-por-1. es el número de vectores de soporte en el clasificador entrenado,.sssum(Mdl.IsSupportVector)

Un valor de in indica que el vector de soporte correspondiente está en la clase positiva ().+1SupportVectorLabelsClassNames{2} Un valor de indica que el vector de soporte correspondiente está en la clase negativa ().–1ClassNames{1}

Si elimina duplicados mediante el argumento de par nombre-valor de, a continuación, para un conjunto determinado de observaciones duplicadas que son vectores de soporte, contiene una etiqueta de vector de soporte único.RemoveDuplicatesfitcsvmSupportVectorLabels

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Admite vectores en el clasificador entrenado, especificado como una matriz numérica. es el número de vectores de soporte en el clasificador entrenado, y es el número de variables predictoras en los Datos predictores.spssum(Mdl.IsSupportVector)p

contiene filas de los Datos predictores que se consideran vectores de soporte.SupportVectorsXMATLAB Si especifica al entrenar el clasificador de SVM con, a continuación, contiene las filas estandarizadas de.'Standardize',truefitcsvmSupportVectorsX

Si quita los duplicados mediante el argumento de par nombre-valor de, a continuación, para un conjunto determinado de observaciones duplicadas que son vectores de soporte, contiene un vector de soporte único.RemoveDuplicatesfitcsvmSupportVectors

Tipos de datos: single | double

Otras propiedades de clasificación

Esta propiedad es de solo lectura.

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces esta propiedad está vacía ().[]

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Etiquetas de clase únicas utilizadas en el entrenamiento del modelo, especificadas como una matriz categórica o de caracteres, Vector lógico o numérico o matriz de celdas de vectores de caracteres.

Tipos de datos: single | double | logical | char | cell | categorical

Esta propiedad es de solo lectura.

Costo de clasificación errónea, especificado como una matriz cuadrada numérica, donde es el costo de clasificar un punto en la clase si su clase verdadera es.Cost(i,j)ji

Durante el entrenamiento, el software actualiza las probabilidades previas incorporando las sanciones descritas en la matriz de costos.

  • Para el aprendizaje de dos clases, siempre tiene este formulario: Si, y si.CostoCost(i,j) = 1i ~= jCost(i,j) = 0i = j Las filas corresponden a la clase true y las columnas corresponden a la clase pronosticada. El orden de las filas y columnas corresponde al orden de las clases en.CostoClassNames

  • Para el aprendizaje de una clase,.Cost = 0

Para obtener más información, consulte.Algoritmos

Tipos de datos: double

Esta propiedad es de solo lectura.

Nombres de predictores ampliados, especificados como una matriz de vectores de caracteres de celda.

Si el modelo utiliza la codificación de variable ficticia para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es el mismo que.ExpandedPredictorNamesPredictorNames

Tipos de datos: cell

Esta propiedad es de solo lectura.

Predictor significa, especificado como un vector numérico. Si especifica o cuando entrena un clasificador SVM usando, entonces la longitud de es igual al número de predictores.'Standardize',1'Standardize',truefitcsvmMu

expande las variables categóricas en los Datos predictores utilizando la codificación ficticia completa.MATLAB Es decir, crea una variable ficticia para cada nivel de cada variable categórica. almacena un valor para cada variable predictora, incluidas las variables ficticias.MATLABMu Sin embargo, no estandariza las columnas que contienen variables categóricas.MATLAB

Si se establece cuando se entrena el clasificador SVM utilizando, entonces es un vector vacío ().'Standardize',falsefitcsvmMu[]

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Nombres de variables predictoras, especificadas como una matriz de vectores de caracteres. El orden de los elementos corresponde al orden en el que aparecen los nombres de predictor en los datos de entrenamiento.PredictorNames

Tipos de datos: cell

Esta propiedad es de solo lectura.

Probabilidades previas para cada clase, especificadas como un vector numérico. El orden de los elementos corresponde a los elementos de.PriorMdl.ClassNames

Para el aprendizaje de dos clases, si especifica una matriz de costes, el software actualiza las probabilidades previas incorporando las sanciones descritas en la matriz de costes.

Para obtener más información, consulte.Algoritmos

Tipos de datos: single | double

Transformación de puntuación, especificada como un controlador de función o vector de caracteres. representa una función de transformación integrada o un identificador de función para transformar las puntuaciones de clasificación previstas.ScoreTransform

Para cambiar la función de transformación de puntuación a function, por ejemplo, utilice la notación de puntos.

  • Para una función incorporada, introduzca un vector de caracteres.

    Mdl.ScoreTransform = 'function';

    En esta tabla se describen las funciones integradas disponibles.

    ValorDescripción
    'doublelogit'1/(1 +e–2x)
    'invlogit'log (/(1 –))xx
    'ismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para10
    'logit'1/(1 +ex)
    O'none''identity'(sin transformación)x
    'sign'– 1 para < 0 0 para = 0 1 para > 0x
    x
    x
    'symmetric'2 – 1x
    'symmetricismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para1–1
    'symmetriclogit'2/(1 +ex) – 1

  • Para una función o una función que defina, introduzca su manejador de funciones.MATLAB

    Mdl.ScoreTransform = @function;

    function debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Tipos de datos: char | function_handle

Esta propiedad es de solo lectura.

Desviaciones estándar del predictor, especificadas como un vector numérico.

Si especifica cuando se entrena el clasificador SVM utilizando, entonces la longitud de es igual al número de variables predictoras.'Standardize',truefitcsvmSigma

expande las variables categóricas en los Datos predictores utilizando la codificación ficticia completa.MATLAB Es decir, crea una variable ficticia para cada nivel de cada variable categórica. almacena un valor para cada variable predictora, incluidas las variables ficticias.MATLABSigma Sin embargo, no estandariza las columnas que contienen variables categóricas.MATLAB

Si se establece cuando se entrena el clasificador SVM utilizando, entonces es un vector vacío ().'Standardize',falsefitcsvmSigma[]

Tipos de datos: single | double

Funciones del objeto

compareHoldoutCompare las precisiones de dos modelos de clasificación utilizando nuevos datos
discardSupportVectorsDescarte vectores de soporte para clasificador de máquina de vectores de soporte lineal (SVM)
BordeBusque el borde de clasificación para el clasificador de la máquina de vectores de soporte (SVM)
fitPosteriorAjuste las probabilidades posteriores para clasificador de máquina de vectores de soporte compacto (SVM)
lossBuscar error de clasificación para el clasificador de máquina de vectores de soporte (SVM)
MargenEncuentre márgenes de clasificación para el clasificador de máquina de vectores de soporte (SVM)
PredecirClasifique las observaciones mediante el clasificador de máquina de vectores de soporte (SVM)
updateActualice los parámetros del modelo para la generación de código

Ejemplos

contraer todo

Reduzca el tamaño de un clasificador SVM completo eliminando los datos de entrenamiento. Los clasificadores SVM completos (es decir, clasificadores) tienen los datos de entrenamiento.ClassificationSVM Para mejorar la eficiencia, utilice un clasificador más pequeño.

Cargue el conjunto de datos.ionosphere

load ionosphere

Entrenar un clasificador SVM. Estandarice los Datos predictores y especifique el orden de las clases.

SVMModel = fitcsvm(X,Y,'Standardize',true,...     'ClassNames',{'b','g'})
SVMModel =    ClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'           NumObservations: 351                     Alpha: [89x1 double]                      Bias: -0.1341          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            BoxConstraints: [351x1 double]           ConvergenceInfo: [1x1 struct]           IsSupportVector: [351x1 logical]                    Solver: 'SMO'     Properties, Methods  

es un clasificador.SVMModelClassificationSVM

Reduzca el tamaño del clasificador SVM.

CompactSVMModel = compact(SVMModel)
CompactSVMModel =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'                     Alpha: [89x1 double]                      Bias: -0.1341          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            SupportVectors: [89x34 double]       SupportVectorLabels: [89x1 double]     Properties, Methods  

es un clasificador.CompactSVMModelCompactClassificationSVM

Muestra la cantidad de memoria que utiliza cada clasificador.

whos('SVMModel','CompactSVMModel')
  Name                 Size             Bytes  Class                                                 Attributes    CompactSVMModel      1x1              30576  classreg.learning.classif.CompactClassificationSVM                 SVMModel             1x1             140906  ClassificationSVM                                                

El clasificador SVM completo () es más de cuatro veces más grande que el clasificador SVM compacto ().SVMModelCompactSVMModel

Para etiquetar las nuevas observaciones de forma eficaz, puede eliminarlas del área de trabajo de MATLAB® y, a continuación, pasar y nuevos valores predictores.SVMModelCompactSVMModelPredecir

Para reducir aún más el tamaño del clasificador compacto de SVM, utilice la función para descartar vectores de soporte.discardSupportVectors

Cargue el conjunto de datos.ionosphere

load ionosphere

Entrenar y validar de forma cruzada un clasificador SVM. Estandarice los Datos predictores y especifique el orden de las clases.

rng(1);  % For reproducibility CVSVMModel = fitcsvm(X,Y,'Standardize',true,...     'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel =    classreg.learning.partition.ClassificationPartitionedModel     CrossValidatedModel: 'SVM'          PredictorNames: {1x34 cell}            ResponseName: 'Y'         NumObservations: 351                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: {'b'  'g'}          ScoreTransform: 'none'     Properties, Methods  

es un clasificador SVM con validación cruzada.CVSVMModelClassificationPartitionedModel De forma predeterminada, el software implementa la validación cruzada de 10 veces.

Como alternativa, puede validar de forma cruzada un clasificador entrenado al pasarlo a.ClassificationSVMcrossval

Inspeccione uno de los pliegues entrenados utilizando la notación de puntos.

CVSVMModel.Trained{1}
ans =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'                     Alpha: [78x1 double]                      Bias: -0.2209          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            SupportVectors: [78x34 double]       SupportVectorLabels: [78x1 double]     Properties, Methods  

Cada pliegue es un clasificador entrenado en el 90% de los datos.CompactClassificationSVM

Calcule el error de generalización.

genError = kfoldLoss(CVSVMModel)
genError = 0.1168 

En promedio, el error de generalización es de aproximadamente 12%.

Referencias

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.

[2] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. “Estimating the Support of a High-Dimensional Distribution.” Neural Computation. Vol. 13, Number 7, 2001, pp. 1443–1471.

[3] Christianini, N., and J. C. Shawe-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge, UK: Cambridge University Press, 2000.

[4] Scholkopf, B., and A. Smola. Learning with Kernels: Support Vector Machines, Regularization, Optimization and Beyond, Adaptive Computation and Machine Learning. Cambridge, MA: The MIT Press, 2002.

Capacidades ampliadas

Introducido en R2014a