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.

kfoldPredict

Predecir etiquetas para observaciones no utilizadas para el entrenamiento

Descripción

ejemplo

Label = kfoldPredict(CVMdl) Devuelve las etiquetas de clase predichas por el modelo ECOC validado mediante validación cruzada compuesta de modelos de clasificación lineal.CVMdl Es decir, para cada pliegue, predice las etiquetas de clase para las observaciones que se mantiene cuando se entrena utilizando todas las demás observaciones. aplica los mismos datos que se utilizan para crear (véase).kfoldPredictkfoldPredictCVMdlfitcecoc

Además, contiene etiquetas de clase para cada resistencia de regularización en los modelos de clasificación lineal que componen.LabelCVMdl

ejemplo

Label = kfoldPredict(CVMdl,Name,Value) Devuelve las etiquetas de clase previstas con opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, especifique el método de estimación de probabilidad posterior, el esquema de decodificación o el nivel de verbosidad.

ejemplo

[Label,NegLoss,PBScore] = kfoldPredict(___) Además devuelve, para observaciones en espera y cada fuerza de regularización:

  • Valores negados de la pérdida binaria media por clase ().NegLoss

  • Puntuaciones de clase positiva () para cada alumno binario.PBScore

ejemplo

[Label,NegLoss,PBScore,Posterior] = kfoldPredict(___) Además, devuelve estimaciones de probabilidad de clase posterior para observaciones mantenidas y para cada fuerza de regularización. Para devolver las probabilidades posteriores, los alumnos del modelo de clasificación lineal deben ser modelos de regresión logística.

Argumentos de entrada

expandir todo

Modelo ECOC validado con validación cruzada compuesto por modelos de clasificación lineal, especificados como objeto de modelo.ClassificationPartitionedLinearECOC Puede crear un modelo utilizando y por:ClassificationPartitionedLinearECOCfitcecoc

  1. Especificando cualquiera de los argumentos de la validación cruzada, nombre-valor par, por ejemplo,CrossVal

  2. Establecer el argumento de par nombre-valor o una plantilla de modelo de clasificación lineal devuelta porLearners'linear'templateLinear

Para obtener estimaciones, se aplican los mismos datos utilizados para validar el modelo ECOC (y).kfoldPredictXY

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Función de pérdida binaria de aprendizaje, especificada como el par separado por comas que consta de y un identificador de función o nombre de función de pérdida integrado.'BinaryLoss'

  • Esta tabla contiene nombres y descripciones de las funciones incorporadas, donde yj es una etiqueta de clase para un alumno binario determinado (en el conjunto {-1, 1, 0}), sj es la partitura para la observación, y (jgyj,sj) es la fórmula de pérdida binaria.

    ValorDescripciónPuntuación de dominio(gyj,sj)
    'binodeviance'Desviación binomial(– ∞, ∞)log [1 + exp (– 2yjsj)]/[2log (2)]
    'exponential'Exponencial(– ∞, ∞)exp (–yjsj)/2
    'hamming'Hamming[0, 1] o (– ∞, ∞)[1 – signo (yjsj)]/2
    'hinge'Bisagra(– ∞, ∞)Max (0,1 – yjsj)/2
    'linear'Lineal(– ∞, ∞)1 yjsj)/2
    'logit'Logística(– ∞, ∞)log [1 + exp (–yjsj)]/[2log (2)]
    'quadratic'Cuadrática[0,1]1 yj(2sj – 1)]2/2

    El software normaliza las pérdidas binarias de tal forma que la pérdida es de 0,5 cuando yj = 0. Además, el software calcula la pérdida binaria media para cada clase.

  • Para una función de pérdida binaria personalizada, por ejemplo,, especifique su identificador de función.customFunction'BinaryLoss',@customFunction

    debe tener este formulario donde:customFunction

    bLoss = customFunction(M,s)

    • es la matriz-por-codificación almacenada en.MKLMdl.CodingMatrix

    • es el vector 1 por fila de las puntuaciones de clasificación.sL

    • es la pérdida de clasificación.bLoss Este escalar agrega las pérdidas binarias para cada alumno en una clase determinada. Por ejemplo, puede usar la pérdida binaria media para agregar la pérdida sobre los alumnos de cada clase.

    • es el número de clases.K

    • es el número de estudiantes binarios.L

    Para obtener un ejemplo de cómo pasar una función de pérdida binaria personalizada, consulte.Predecir etiquetas de muestra de prueba de modelo ECOC utilizando la función de pérdida binaria personalizada

De forma predeterminada, si todos los alumnos binarios son modelos de clasificación lineal utilizando:

  • SVM, entonces esBinaryLoss'hinge'

  • La regresión logística, a continuación, esBinaryLoss'quadratic'

Ejemplo: 'BinaryLoss','binodeviance'

Tipos de datos: char | string | function_handle

Esquema de decodificación que agrega las pérdidas binarias, especificadas como el par separado por comas que consta de y o.'Decoding''lossweighted''lossbased' Para obtener más información, consulte.Pérdida binaria

Ejemplo: 'Decoding','lossbased'

Número de valores iniciales aleatorios para ajustar las probabilidades posteriores mediante la minimización de la divergencia Kullback-Leibler, especificada como el par separado por comas que consta de un entero no negativo.'NumKLInitializations'

Para utilizar esta opción, debe:

  • Devuelve el cuarto argumento de salida ().Posterior

  • Los modelos de clasificación lineal que componen los modelos ECOC deben utilizar alumnos de regresión logística (es decir, deben ser).CVMdl.Trained{1}.BinaryLearners{1}.Learner'logistic'

  • debe ser.PosteriorMethod'kl'

Para obtener más información, consulte.Estimación posterior utilizando la divergencia Kullback-Leibler

Ejemplo: 'NumKLInitializations',5

Tipos de datos: single | double

Opciones de estimación, especificadas como el par separado por comas que consta de una matriz de estructura devuelta por.'Options'statset

Para invocar la computación paralela:

  • Necesitas una licencia.Parallel Computing Toolbox™

  • Especificar.'Options',statset('UseParallel',true)

Método de estimación de probabilidad posterior, especificado como el par separado por comas que consta de y o.'PosteriorMethod''kl''qp'

  • Para utilizar esta opción, debe devolver el cuarto argumento de salida () y los modelos de clasificación lineal que componen los modelos ECOC deben utilizar alumnos de regresión logística (es decir, debe ser).PosteriorCVMdl.Trained{1}.BinaryLearners{1}.Learner'logistic'

  • Si es así, el software estima las probabilidades posteriores multiclase minimizando la divergencia Kullback-Leibler entre las probabilidades posteriores previstas y previstas devueltas por los estudiantes binarios.PosteriorMethod'kl' Para obtener más información, consulte.Estimación posterior utilizando la divergencia Kullback-Leibler

  • Si es así, el software estima las probabilidades posteriores multiclase resolviendo un problema de mínimos cuadrados usando la programación cuadrática.PosteriorMethod'qp' Necesita una licencia para usar esta opción.Optimization Toolbox™ Para obtener más información, consulte.Estimación posterior mediante programación cuadrática

Ejemplo: 'PosteriorMethod','qp'

Nivel de verbosidad, especificado como el par separado por comas que consta de y o. controla el número de mensajes de diagnóstico que el software muestra en la ventana de comandos.'Verbose'01Verbose

Si es, entonces el software no visualiza los mensajes de diagnóstico.Verbose0 De lo contrario, el software muestra mensajes de diagnóstico.

Ejemplo: 'Verbose',1

Tipos de datos: single | double

Argumentos de salida

expandir todo

Etiquetas de clase predichas de validación cruzada, devueltas como una matriz categórica o de caracteres, matriz lógica o numérica, o matriz de celdas de vectores de caracteres.

En la mayoría de los casos, es una-por-matriz del mismo tipo de datos que las etiquetas de clase observadas () que se utilizan para crear.LabelnLYCVMdl (The software treats string arrays as cell arrays of character vectors.) es el número de observaciones en los Datos predictores () y es el número de fortalezas de regularización en los modelos de clasificación lineal que componen el modelo ECOC validado en cruz.nXL Es decir Label(i,j) es la etiqueta de clase pronosticada para la observación i utilizando el modelo ECOC de modelos de clasificación lineal que tiene fuerza de regularización CVMdl.Trained{1}.BinaryLearners{1}.Lambda(j).

Si es una matriz de caracteres y > 1, entonces es una matriz de celdas de etiquetas de clase.YLLabel

El software asigna la etiqueta pronosticada correspondiente a la clase con el mayor, negated, pérdida binaria promedio (), o, equivalentemente, la menor pérdida binaria promedio.NegLoss

Pérdidas binarias de validación cruzada, negadas y medias, devueltas como matrices o matrices de-por-numérico. es el número de clases distintas en los datos de entrenamiento y las columnas corresponden a las clases en.nKLKCVMdl.ClassNames Por y, mira.nLLabel NegLoss(i,k,j) es la pérdida binaria negada y promedio para clasificar la observación i en la clase k utilizando el modelo de clasificación lineal que tiene fuerza de regularización CVMdl.Trained{1}.BinaryLoss{1}.Lambda(j).

Puntuaciones con validación cruzada y de clase positiva, devueltas como una matriz numérica. es el número de alumnos binarios en el modelo ECOC validado en cruz y las columnas corresponden a los alumnos binarios en.nBLBCVMdl.Trained{1}.BinaryLearners Por y, mira.nLLabel PBScore(i,b,j) es la puntuación de clase positiva de aprendizaje binario para clasificar la observaciónb i en su clase positiva, utilizando el modelo de clasificación lineal que tiene fuerza de regularización CVMdl.Trained{1}.BinaryLearners{1}.Lambda(j).

Si la matriz de codificación varía entre pliegues (es decir, si el esquema de codificación es o), entonces está vacío ().sparserandomdenserandomPBScore[]

Probabilidades de clases posteriores validadas en Cruz, devueltas como una matriz numérica.nKL Para las definiciones de dimensión, consulte.NegLoss Posterior(i,k,j) es la probabilidad posterior de clasificar la observación i en la clase k utilizando el modelo de clasificación lineal que tiene fuerza de regularización CVMdl.Trained{1}.BinaryLearners{1}.Lambda(j).

Para devolver las probabilidades posteriores, debe ser.CVMdl.Trained{1}.BinaryLearner{1}.Learner'logistic'

Ejemplos

expandir todo

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY

Valide de forma cruzada un modelo ECOC de modelos de clasificación lineal.

rng(1); % For reproducibility  CVMdl = fitcecoc(X,Y,'Learner','linear','CrossVal','on');

es un modelo.CVMdlClassificationPartitionedLinearECOC De forma predeterminada, el software implementa la validación cruzada de 10 veces.

Predecir etiquetas para las observaciones que no se emplearon en el entrenamiento de los pliegues.fitcecoc

label = kfoldPredict(CVMdl);

Dado que hay una fuerza de regularización en, es un vector de columna de predicciones que contiene tantas filas como observaciones.CVMdlEtiquetaX

Construya una matriz de confusión.

cm = confusionchart(Y,label);

Cargue el conjunto de datos NLP. Transponer los Datos predictores.

load nlpdata X = X';

Para simplificar, utilice la etiqueta ' otros ' para todas las observaciones que no sean, o.Y'simulink''dsp''comm'

Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';

Cree una plantilla de modelo de clasificación lineal que especifique la optimización de la función objetivo mediante SpaRSA.

t = templateLinear('Solver','sparsa');

Valide de forma cruzada un modelo ECOC de modelos de clasificación lineal utilizando la validación cruzada de 5 veces. Especifique que las observaciones de predictor corresponden a columnas.

rng(1); % For reproducibility  CVMdl = fitcecoc(X,Y,'Learners',t,'KFold',5,'ObservationsIn','columns'); CMdl1 = CVMdl.Trained{1}
CMdl1 =    classreg.learning.classif.CompactClassificationECOC       ResponseName: 'Y'         ClassNames: [comm    dsp    simulink    others]     ScoreTransform: 'none'     BinaryLearners: {6x1 cell}       CodingMatrix: [4x6 double]     Properties, Methods  

es un modelo.CVMdlClassificationPartitionedLinearECOC Contiene la propiedad, que es un array de celdas de 5 por 1 sosteniendo un modelo que el software entrenado usando el conjunto de entrenamiento de cada pliegue.TrainedCompactClassificationECOC

De forma predeterminada, los modelos de clasificación lineal que componen los modelos ECOC utilizan SVMs. Las puntuaciones SVM son distancias firmadas desde la observación hasta el límite de decisión. Por lo tanto, el dominio es

<math display="block">
<mrow>
<mo stretchy="false">(</mo>
<mo>-</mo>
<mo></mo>
<mo>,</mo>
<mo></mo>
<mo stretchy="false">)</mo>
</mrow>
</math>
. Cree una función de pérdida binaria personalizada que:

  • Asigna la matriz de diseño de codificación () y las puntuaciones de clasificación de clase positiva () para cada alumno a la pérdida binaria para cada observaciónMs

  • Utiliza la pérdida lineal

  • Agrega la pérdida binaria del alumno mediante la mediana.

Puede crear una función independiente para la función de pérdida binaria y, a continuación, guardarla en la ruta de acceso de MATLAB®. O puede especificar una función de pérdida binaria anónima.

customBL = @(M,s)nanmedian(1 - bsxfun(@times,M,s),2)/2;

Predecir etiquetas de validación cruzada y estimar la pérdida binaria mediana por clase. Imprima la mediana de pérdidas binarias negativas por clase para un conjunto aleatorio de 10 observaciones fuera de pliegue.

[label,NegLoss] = kfoldPredict(CVMdl,'BinaryLoss',customBL);  idx = randsample(numel(label),10); table(Y(idx),label(idx),NegLoss(idx,1),NegLoss(idx,2),NegLoss(idx,3),...     NegLoss(idx,4),'VariableNames',[{'True'};{'Predicted'};...     categories(CVMdl.ClassNames)])
ans=10×6 table
      True      Predicted      comm         dsp       simulink    others 
    ________    _________    _________    ________    ________    _______

    others      others         -1.2319     -1.0488    0.048758     1.6175
    simulink    simulink       -16.407     -12.218      21.531     11.218
    dsp         dsp            -0.7387    -0.11534    -0.88466    -0.2613
    others      others         -0.1251     -0.8749    -0.99766    0.14517
    dsp         dsp             2.5867      6.4187     -3.5867    -4.4165
    others      others       -0.025358     -1.2287    -0.97464    0.19747
    others      others         -2.6725    -0.56708    -0.51092     2.7453
    others      others         -1.1605    -0.88321    -0.11679    0.43504
    others      others         -1.9511     -1.3175     0.24735    0.95111
    simulink    others          -7.848     -5.8203      4.8203     6.8457

El software predice la etiqueta en función de la pérdida máxima negada.

Los modelos ECOC compuestos de modelos de clasificación lineal devuelven probabilidades posteriores para los estudiantes de regresión logística solamente. Este ejemplo requiere la caja de herramientas de computación paralela™ y la caja de herramientas de optimización™

Cargue el conjunto de datos NLP y preprocese los datos como en.Especifique la pérdida binaria personalizada

load nlpdata X = X'; Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others'; 

Cree un conjunto de 5 puntos fuertes de regularización logarmicamente espaciados de a través de .

Lambda = logspace(-6,-0.5,5); 

Cree una plantilla de modelo de clasificación lineal que especifique la optimización de la función objetivo mediante SpaRSA y que utilice los alumnos de regresión logística.

t = templateLinear('Solver','sparsa','Learner','logistic','Lambda',Lambda); 

Valide de forma cruzada un modelo ECOC de modelos de clasificación lineal utilizando la validación cruzada de 5 veces. Especifique que las observaciones del predictor corresponden a las columnas y que utilicen la computación paralela.

rng(1); % For reproducibility Options = statset('UseParallel',true); CVMdl = fitcecoc(X,Y,'Learners',t,'KFold',5,'ObservationsIn','columns',...     'Options',Options); 
Starting parallel pool (parpool) using the 'local' profile ... connected to 6 workers. 

Pronostique las probabilidades de clase posterior validadas en cruz. Especifique para utilizar la computación paralela y para estimar las probabilidades posteriores utilizando la programación cuadrática.

[label,~,~,Posterior] = kfoldPredict(CVMdl,'Options',Options,...     'PosteriorMethod','qp'); size(label) label(3,4) size(Posterior) Posterior(3,:,4) 
 ans =         31572           5   ans =     categorical       others    ans =         31572           4           5   ans =      0.0293    0.0373    0.1738    0.7596  

Porque hay cinco fortalezas de regularización:

  • es una matriz categórica de 31572 por 5. es la etiqueta predicha y validada para la observación 3 utilizando el modelo entrenado con fuerza de regularización.Etiquetalabel(3,4)Lambda(4)

  • es una matriz 31572-by-4-by-5. es el vector de todas las probabilidades de clase posterior estimadas para la observación 3 utilizando el modelo entrenado con la fuerza de regularización.PosteriorPosterior(3,:,4)Lambda(4) El orden de la segunda dimensión corresponde a.CVMdl.ClassNames Muestra un conjunto aleatorio de 10 probabilidades de clase posterior.

Muestre una muestra aleatoria de etiquetas validadas en cruz y probabilidades posteriores para el modelo entrenado usando.Lambda(4)

idx = randsample(size(label,1),10); table(Y(idx),label(idx,4),Posterior(idx,1,4),Posterior(idx,2,4),...     Posterior(idx,3,4),Posterior(idx,4,4),...     'VariableNames',[{'True'};{'Predicted'};categories(CVMdl.ClassNames)]) 
 ans =    10×6 table        True      Predicted       comm          dsp        simulink     others       ________    _________    __________    __________    ________    _________      others      others         0.030309      0.022454     0.10401      0.84323     simulink    simulink     3.5104e-05    4.3154e-05     0.99877    0.0011543     dsp         others          0.15837       0.25784     0.18567      0.39811     others      others         0.093212      0.063752     0.12927      0.71376     dsp         dsp           0.0057401       0.89678    0.014939     0.082538     others      others         0.085715      0.054451    0.083765      0.77607     others      others        0.0061121     0.0057884     0.02409      0.96401     others      others         0.066741      0.074103       0.168      0.69115     others      others          0.05236      0.025631     0.13245      0.78956     simulink    simulink     0.00039812    0.00045575     0.73724       0.2619  

Más acerca de

expandir todo

Algoritmos

expandir todo

El software puede estimar las probabilidades posteriores de clase al minimizar la divergencia Kullback-Leibler o mediante la programación cuadrática. Para las siguientes descripciones de los algoritmos de estimación posterior, suponga que:

  • Mkj es el elemento (,) de la matriz de diseño de codificación.kjM

  • es la función indicadora.I

  • p^k es la estimación de probabilidad posterior de clase para la clase de una observación, = 1,...,.kkK

  • Rj es la probabilidad posterior de clase positiva para el aprendizaje binario.j Es decir Rj es la probabilidad de que el alumno binario clasifique una observación en la clase positiva, dados los datos de entrenamiento.j

Referencias

[1] Allwein, E., R. Schapire, and Y. Singer. “Reducing multiclass to binary: A unifying approach for margin classifiers.” Journal of Machine Learning Research. Vol. 1, 2000, pp. 113–141.

[2] Dietterich, T., and G. Bakiri. “Solving Multiclass Learning Problems Via Error-Correcting Output Codes.” Journal of Artificial Intelligence Research. Vol. 2, 1995, pp. 263–286.

[3] Escalera, S., O. Pujol, and P. Radeva. “On the decoding process in ternary error-correcting output codes.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 32, Issue 7, 2010, pp. 120–134.

[4] Escalera, S., O. Pujol, and P. Radeva. “Separability of ternary codes for sparse designs of error-correcting output codes.” Pattern Recogn. Vol. 30, Issue 3, 2009, pp. 285–297.

[5] Hastie, T., and R. Tibshirani. “Classification by Pairwise Coupling.” Annals of Statistics. Vol. 26, Issue 2, 1998, pp. 451–471.

[6] Wu, T. F., C. J. Lin, and R. Weng. “Probability Estimates for Multi-Class Classification by Pairwise Coupling.” Journal of Machine Learning Research. Vol. 5, 2004, pp. 975–1005.

[7] Zadrozny, B. “Reducing Multiclass to Binary by Coupling Probability Estimates.” NIPS 2001: Proceedings of Advances in Neural Information Processing Systems 14, 2001, pp. 1041–1048.

Capacidades ampliadas

Introducido en R2016a