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.

predict

Clasifique las observaciones mediante el clasificador de máquina de vectores de soporte (SVM)

Descripción

ejemplo

label = predict(SVMModel,X) Devuelve un vector de las etiquetas de clase previstas para los Datos predictores de la tabla o matriz, basándose en el modelo de clasificación de máquina de vectores de soporte (SVM) entrenado.XSVMModel El modelo de SVM entrenado puede ser completo o compacto.

ejemplo

[label,score] = predict(SVMModel,X) también devuelve una matriz de scores () que indica la probabilidad de que una etiqueta proviene de una clase determinada.Puntuación En el caso de SVM, las medidas de probabilidad son o clase.puntuaciones de clasificaciónprobabilidades posteriores Para cada observación en, la etiqueta de clase pronosticada corresponde a la puntuación máxima entre todas las clases.X

Ejemplos

contraer todo

Cargue el conjunto de datos.ionosphere

load ionosphere rng(1); % For reproducibility

Entrenar un clasificador SVM. Especifique una muestra de retención de 15% para probar, estandarizar los datos y especificar que es la clase positiva.'g'

CVSVMModel = fitcsvm(X,Y,'Holdout',0.15,'ClassNames',{'b','g'},...     'Standardize',true); CompactSVMModel = CVSVMModel.Trained{1}; % Extract trained, compact classifier testInds = test(CVSVMModel.Partition);   % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:);

es un clasificador.CVSVMModelClassificationPartitionedModel Contiene la propiedad, que es un array de celdas 1 por 1 con un clasificador que el software entrenado usando el conjunto de entrenamiento.TrainedCompactClassificationSVM

Etiquete las observaciones de la muestra de prueba. Visualice los resultados de las primeras 10 observaciones en la muestra de ensayo.

[label,score] = predict(CompactSVMModel,XTest); table(YTest(1:10),label(1:10),score(1:10,2),'VariableNames',...     {'TrueLabel','PredictedLabel','Score'})
ans=10×3 table
    TrueLabel    PredictedLabel     Score  
    _________    ______________    ________

       'b'            'b'           -1.7178
       'g'            'g'            2.0003
       'b'            'b'           -9.6847
       'g'            'g'            2.5619
       'b'            'b'           -1.5481
       'g'            'g'            2.0984
       'b'            'b'           -2.7017
       'b'            'b'          -0.66307
       'g'            'g'            1.6047
       'g'            'g'            1.7731

Etiquete nuevas observaciones mediante un clasificador SVM.

Cargue el conjunto de datos de ionosfera. Supongamos que las últimas 10 observaciones pasan a estar disponibles después de entrenar el clasificador SVM.

load ionosphere rng(1); % For reproducibility n = size(X,1);       % Training sample size  isInds = 1:(n-10);   % In-sample indices  oosInds = (n-9):n;   % Out-of-sample indices

Entrenar un clasificador SVM. Estandarice los datos y especifique que es la clase positiva.'g' Conserve la memoria reduciendo el tamaño del clasificador de SVM entrenado.

SVMModel = fitcsvm(X(isInds,:),Y(isInds),'Standardize',true,...     'ClassNames',{'b','g'}); CompactSVMModel = compact(SVMModel); whos('SVMModel','CompactSVMModel')
  Name                 Size             Bytes  Class                                                 Attributes    CompactSVMModel      1x1              30288  classreg.learning.classif.CompactClassificationSVM                 SVMModel             1x1             137628  ClassificationSVM                                                

El clasificador () utiliza menos espacio que el clasificador () porque almacena los datos.CompactClassificationSVMCompactSVMModelClassificationSVMSVMModelSVMModel

Calcule la función óptima de transformación de la probabilidad de la puntuación a la posterior.

CompactSVMModel = fitPosterior(CompactSVMModel,...     X(isInds,:),Y(isInds))
CompactSVMModel =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: '@(S)sigmoid(S,-1.968351e+00,3.122242e-01)'                     Alpha: [88x1 double]                      Bias: -0.2142          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            SupportVectors: [88x34 double]       SupportVectorLabels: [88x1 double]     Properties, Methods  

La función de transformación de puntuación óptima () es la función sigmoide porque las clases son inseparables.CompactSVMModel.ScoreTransform

Predecir las etiquetas fuera de la muestra y las probabilidades posteriores de clase positiva. Dado que las etiquetas verdaderas están disponibles, compártelos con las etiquetas pronosticadas.

[labels,PostProbs] = predict(CompactSVMModel,X(oosInds,:)); table(Y(oosInds),labels,PostProbs(:,2),'VariableNames',...     {'TrueLabels','PredictedLabels','PosClassPosterior'})
ans=10×3 table
    TrueLabels    PredictedLabels    PosClassPosterior
    __________    _______________    _________________

       'g'              'g'               0.98419     
       'g'              'g'               0.95545     
       'g'              'g'               0.67792     
       'g'              'g'               0.94447     
       'g'              'g'               0.98744     
       'g'              'g'                0.9248     
       'g'              'g'                0.9711     
       'g'              'g'               0.96986     
       'g'              'g'               0.97803     
       'g'              'g'               0.94361     

es una matriz de 10 por 2, donde la primera columna es las probabilidades posteriores de clase negativa, y la segunda columna es las probabilidades posteriores de clase positiva que corresponden a las nuevas observaciones.PostProbs

Argumentos de entrada

contraer todo

Modelo de clasificación de SVM, especificado como objeto de modelo o objeto de modelo devuelto por oClassificationSVMCompactClassificationSVMfitcsvm compactRespectivamente.

Datos de predictor que se clasificarán, especificados como una matriz o tabla numérica.

Cada fila de corresponde a una observación, y cada columna corresponde a una variable.X

  • Para una matriz numérica:

    • Las variables de las columnas de deben tener el mismo orden que las variables predictoras que entrenaron.XSVMModel

    • Si entrenó usando una tabla (por ejemplo,) y contiene todas las variables predictoras numéricas, entonces puede ser una matriz numérica.SVMModelTblTblX Para tratar los predictores numéricos como categóricos durante el entrenamiento, identifique los predictores categóricos utilizando el argumento de par nombre-valor de.TblCategoricalPredictorsfitcsvm Si contiene variables predictoras heterogéneas (por ejemplo, tipos de datos numéricos y categóricos) y es una matriz numérica, se produce un error.TblXPredecir

  • Para una tabla:

    • no admite variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.Predecir

    • Si ha entrenado utilizando una tabla (por ejemplo,), todas las variables predictoras en deben tener los mismos nombres de variables y tipos de datos que los que entrenaron (almacenados en).SVMModelTblXSVMModelSVMModel.PredictorNames Sin embargo, el orden de columna de no necesita corresponder al orden de columna de.XTbl Además, y puede contener variables adicionales (variables de respuesta, ponderaciones de observación, etcétera), pero las ignora.TblXPredecir

    • Si entrenó con una matriz numérica, los nombres de los predictores y los nombres de las variables predictoras correspondientes deben ser los mismos.SVMModelSVMModel.PredictorNamesX Para especificar nombres de predictores durante el entrenamiento, vea el argumento de par nombre-valor de.PredictorNamesfitcsvm Todas las variables predictoras en deben ser vectores numéricos. puede contener variables adicionales (variables de respuesta, ponderaciones de observación, etcétera), pero las ignora.XXPredecir

Si se establece en el tren, a continuación, el software estandariza las columnas de uso de los medios correspondientes en y las desviaciones estándar en.'Standardize',truefitcsvmSVMModelXSVMModel.MuSVMModel.Sigma

Tipos de datos: table | double | single

Argumentos de salida

contraer todo

Etiquetas de clase pronosticadas, devueltas como una matriz categórica o de caracteres, Vector lógico o numérico o matriz de celdas de vectores de caracteres.

tiene el mismo tipo de datos que las etiquetas de clase observadas () que entrenaron, y su longitud es igual al número de filas en.EtiquetaYSVMModelX (The software treats string arrays as cell arrays of character vectors.)

Para el aprendizaje de una sola clase, es la clase única representada en las etiquetas de clase observadas.Etiqueta

Clase pronosticada o, devuelta como un vector de columna numérico o matriz numérica.Puntuacionesprobabilidades posteriores

  • Para el aprendizaje de una sola clase, es un vector de columna con el mismo número de filas que las observaciones ().PuntuaciónX Los elementos de son las puntuaciones positivas de la clase para las observaciones correspondientes.Puntuación No puede obtener probabilidades posteriores para el aprendizaje de una sola clase.

  • Para el aprendizaje de dos clases, es una matriz de dos columnas con el mismo número de filas que.PuntuaciónX

    • Si ajusta la función de transformación de la puntuación a la probabilidad posterior óptima utilizando o, a continuación, contiene probabilidades posteriores de clase.fitPosteriorfitSVMPosteriorPuntuación Es decir, si el valor de no es, a continuación, la primera y segunda columnas de contener la clase negativa () y la clase positiva () probabilidades posteriores para las observaciones correspondientes, respectivamente.SVMModel.ScoreTransformnonePuntuaciónSVMModel.ClassNames{1}SVMModel.ClassNames{2}

    • De lo contrario, la primera columna contiene las puntuaciones de clase negativas y la segunda columna contiene las puntuaciones de clase positivas para las observaciones correspondientes.

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

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

almacena, y en las propiedades, y, respectivamente.SVMModelβ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',truefitcsvmSVMModel.MuSVMModel.SigmaSVMModel.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 ().SVMModel.KernelParameters.Function'linear'Beta[]

Más acerca de

contraer todo

Puntuación de clasificación

La SVM para clasificar la observación es la distancia firmada desde el límite de decisión que va desde-∞ hasta + ∞.puntuación de clasificaciónxx Una puntuación positiva para una clase indica que se predice que estará en esa clase.x Una puntuación negativa indica lo contrario.

La puntuación de clasificación de clase positiva f(x) es la función de clasificación de SVM entrenada. f(x) es también la respuesta numérica, pronosticada para, o la puntuación para predecir en la clase positiva.xx

f(x)=j=1nαjyjG(xj,x)+b,

Dónde (α1,...,αn,b) son los parámetros SVM estimados, G(xj,x) es el producto escalar en el espacio predictor entre y los vectores de soporte, y la suma incluye las observaciones del conjunto de formación.x La puntuación de clasificación de clase negativa para, o la puntuación para predecir en la clase negativa, es – ().xxfx

SiGXj, ) =x Xj′ (el kernel lineal), la función de puntuación se reduce ax

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

es la escala del kernel y es el vector de los coeficientes lineales ajustados.sβ

Para obtener más información, consulte.Entender las máquinas de vectores de soporte

Probabilidad posterior

Es la probabilidad de que una observación pertenezca a una clase determinada, dados los datos.probabilidad posterior

Para SVM, la probabilidad posterior es una función del score () que la observación está en la clase = {-1, 1}.Psjk

  • Para las clases separables, la probabilidad posterior es la función Step

    P(sj)={0;s<maxyk=1skπ;maxyk=1sksjminyk=+1sk1;sj>minyk=+1sk,

    Dónde:

    • sj es la puntuación de la observación.j

    • + 1 y – 1 denotan las clases positivas y negativas, respectivamente.

    • es la probabilidad previa de que una observación esté en la clase positiva.π

  • Para las clases inseparables, la probabilidad posterior es la función sigmoide

    P(sj)=11+exp(Asj+B),

    donde los parámetros y son los parámetros de pendiente e intercepción, respectivamente.AB

Probabilidad previa

La de una clase es la frecuencia relativa que se cree con la que las observaciones de esa clase se producen en una población.probabilidad previa

Sugerencias

  • Si utiliza un modelo de SVM lineal para la clasificación y el modelo tiene muchos vectores de soporte, el uso del método de predicción puede ser lento.Predecir Para clasificar eficazmente las observaciones basadas en un modelo de SVM lineal, quite los vectores de soporte del objeto de modelo mediante.discardSupportVectors

Algoritmos

  • De forma predeterminada y con independencia de la función del kernel del modelo, utiliza la representación dual de la función score para clasificar las observaciones basadas en modelos de SVM capacitados, específicamenteMATLAB®

    f^(x)=j=1nα^jyjG(x,xj)+b^.

    Este método de predicción requiere los vectores de soporte técnico entrenado y los coeficientes (consulte las propiedades del modelo SVM).αSupportVectorsAlpha

  • Por defecto, el software computa las probabilidades posteriores óptimas usando el método de Platt:[1]

    1. Realice una validación cruzada de 10 veces.

    2. Ajuste los parámetros de la función sigmoide a las puntuaciones devueltas de la validación cruzada.

    3. Calcule las probabilidades posteriores introduciendo las puntuaciones de validación cruzada en la función sigmoide ajustada.

  • El software incorpora probabilidades previas en la función objetivo del SVM durante el entrenamiento.

  • Para SVM, y clasificar las observaciones en la clase que produce la mayor puntuación (la mayor probabilidad posterior).PredecirresubPredict El software cuenta los costes de clasificación errónea aplicando la corrección de coste medio antes de entrenar el clasificador. Es decir, dado el vector anterior de la clase, la matriz de costes de clasificación errónea y el vector de peso de observación, el software define un nuevo vector de pesos de observación () de tal forma quePCwW

    Wj=wjPjk=1KCjk.

Referencias

[1] Platt, J. “Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods.” Advances in Large Margin Classifiers. MIT Press, 1999, pages 61–74.

Capacidades ampliadas

Introducido en R2014a