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

Clasificar las observaciones utilizando el clasificador de máquina vectorial de soporte (SVM)

Descripción

ejemplo

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

ejemplo

[label,score] = predict(SVMModel,X) también devuelve una matriz de puntuaciones ( ) que indica la probabilidad de que una etiqueta proviene de una clase determinada.score Para SVM, las medidas de probabilidad son o clase .puntuaciones de clasificaciónprobabilidades posteriores Para cada observación en , la etiqueta de clase predicha 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

Entrene un clasificador SVM. Especifique un ejemplo de retención del 15% para las pruebas, estandarice los datos y especifique 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 clasificador.CVSVMModelClassificationPartitionedModel Contiene la propiedad , que es una matriz de celdas 1 por 1 que contiene un clasificador que el software entrenó mediante el conjunto de entrenamiento.TrainedCompactClassificationSVM

Etiquete las observaciones de la muestra de prueba. Muestre los resultados de las primeras 10 observaciones de la muestra de prueba.

[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.7175
      {'g'}          {'g'}           2.0001
      {'b'}          {'b'}          -9.6841
      {'g'}          {'g'}           2.5614
      {'b'}          {'b'}          -1.5479
      {'g'}          {'g'}           2.0983
      {'b'}          {'b'}          -2.7013
      {'b'}          {'b'}         -0.66323
      {'g'}          {'g'}           1.6048
      {'g'}          {'g'}           1.7731

Etiquete nuevas observaciones mediante un clasificador SVM.

Cargue el conjunto de datos de ionosfera. Suponga que las últimas 10 observaciones están 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

Entrene un clasificador SVM. Estandarice los datos y especifique que es la clase positiva.'g' Conserve la memoria reduciendo el tamaño del clasificador 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              30498  classreg.learning.classif.CompactClassificationSVM                 SVMModel             1x1             137838  ClassificationSVM                                                

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

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

CompactSVMModel = fitPosterior(CompactSVMModel,...     X(isInds,:),Y(isInds))
CompactSVMModel =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: '@(S)sigmoid(S,-1.968452e+00,3.121267e-01)'                     Alpha: [88x1 double]                      Bias: -0.2143          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 sigmoid porque las clases son inseparables.CompactSVMModel.ScoreTransform

Predecir las etiquetas fuera de muestra y las probabilidades posteriores de clase positiva. Dado que las etiquetas true están disponibles, compárelas con las etiquetas predichas.

[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.94448     
      {'g'}            {'g'}              0.98744     
      {'g'}            {'g'}              0.92482     
      {'g'}            {'g'}              0.97111     
      {'g'}            {'g'}              0.96986     
      {'g'}            {'g'}              0.97803     
      {'g'}            {'g'}              0.94361     

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

Argumentos de entrada

contraer todo

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

Datos del predictor que se van a clasificar, 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ó utilizando una tabla (por ejemplo, ) y contiene todas las variables predictoras numéricas, puede ser una matriz numérica.SVMModelTblTblX Para tratar los predictores numéricos como categóricos durante el entrenamiento, identifique los predictores categóricos mediante 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, produce un error.TblXpredict

  • Para una tabla:

    • no admite variables multicolumna y matrices de celdas que no sean matrices de celdas de vectores de caracteres.predict

    • Si entrenó utilizando una tabla (por ejemplo, ), todas las variables predictoras en deben tener los mismos nombres de variable 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, puede contener variables adicionales (variables de respuesta, ponderaciones de observación, etc.), pero las ignora.TblXpredict

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

Si se configura para entrenar , el software estandariza las columnas de utilizar las medias 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 previstas, devueltas como una matriz categórica o de caracteres, un vector lógico o numérico o una 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 clase, es la clase representada en las etiquetas de clase observadas.Etiqueta

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

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

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

    • Si se ajusta a la función de transformación de puntuación a posterior óptima mediante o , contiene probabilidades posteriores de clase.fitPosteriorfitSVMPosteriorscore Es decir, si el valor de no es , entonces la primera y segunda columnas de contienen la clase negativa ( ) y la clase positiva ( ) probabilidades posteriores para las observaciones correspondientes, respectivamente.SVMModel.ScoreTransformnonescoreSVMModel.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 , entonces la puntuación de clasificación para la observación esSVMModel.KernelParameters.Function'linear'x

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

stores , , y en las propiedades , , y , respectivamente.SVMModelβbsBetaBiasKernelParameters.Scale

Para estimar las puntuaciones de clasificación manualmente, primero debe aplicar las transformaciones a los datos del predictor que se aplicaron durante el entrenamiento. Específicamente, si especifica al utilizar , debe estandarizar los datos del predictor manualmente utilizando la media y la desviación estándar y, a continuación, dividir el resultado por la escala del kernel en .'Standardize',truefitcsvmSVMModel.MuSVMModel.SigmaSVMModel.KernelParameters.Scale

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

Si no lo es , 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 de - a + .puntuación de clasificaciónxx Una puntuación positiva para una clase indica que se prevé que esté 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 SVM entrenada. f(x) es también la respuesta numérica y predicha 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 de SVM estimados, G(xj,x) es el producto punto en el espacio predictor entre y los vectores de soporte, y la suma incluye las observaciones del conjunto de entrenamiento.x La puntuación de clasificación de clase negativa para , o la puntuación para predecir en la clase negativa, es – ( ).xxfx

Si (GXj, ) =x Xj(el núcleo lineal), a continuación, la función de puntuación se reduce ax

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

es la escala del núcleo y es el vector de los coeficientes lineales ajustados.sβ

Para obtener más información, consulte .Comprender las máquinas vectoriales 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 de la puntuación ( ) que la observación está en la clase de 1,1o.Psjk

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

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

    Dónde:

    • sj es la puntuación de 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 interceptación, respectivamente.AB

Probabilidad previa

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

Sugerencias

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

Algoritmos

  • De forma predeterminada e independientemente de la función del núcleo del modelo, utiliza la representación dual de la función de puntuación para clasificar las observaciones basadas en modelos SVM entrenados, específicamenteMATLAB®

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

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

  • De forma predeterminada, el software calcula las probabilidades posteriores óptimas utilizando el método de Platt:[1]

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

    2. Ajuste los parámetros de la función sigmoid a las puntuaciones devueltas por 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 SVM durante el entrenamiento.

  • Para SVM, y clasificar las observaciones en la clase que produce la puntuación más grande (la mayor probabilidad posterior).predictresubPredict El software tiene en cuenta los costos de clasificación errónea aplicando la corrección de costo promedio antes de capacitar al 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 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