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.
Los márgenes de clasificación para el modelo de códigos de salida de corrección de errores multiclase (ECOC)
Devuelve el () para el modelo entrenado multiclase de códigos de salida de corrección de errores (ECOC) utilizando los datos del predictor en la tabla y las etiquetas de clase en.márgenes de clasificaciónm
= margin(Mdl
,tbl
,ResponseVarName
)m
Mdl
tbl
tbl.ResponseVarName
especifica opciones utilizando uno o más argumentos de par nombre-valor además de cualquiera de las combinaciones de argumento de entrada en sintaxis anteriores. Por ejemplo, puede especificar un esquema de decodificación, una función de pérdida binaria de aprendizaje y un nivel de detalle.m
= margin(___,Name,Value
)
Calcule los márgenes de clasificación de muestra de prueba de un modelo ECOC con estudiantes binarios de SVM.
Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor, los datos de respuesta y el orden de las clases.X
Y
Y
load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y); % Class order rng(1) % For reproducibility
Entrenar un modelo ECOC utilizando clasificadores binarios SVM. Especifique una muestra de retención de 30%, estandarice los predictores mediante una plantilla de SVM y especifique el orden de la clase.
t = templateSVM('Standardize',true); PMdl = fitcecoc(X,Y,'Holdout',0.30,'Learners',t,'ClassNames',classOrder); Mdl = PMdl.Trained{1}; % Extract trained, compact classifier
es un modelo.PMdl
ClassificationPartitionedECOC
Tiene la propiedad, una matriz de 1 por 1 celda que contiene el modelo que el software entrenado utilizando el conjunto de entrenamiento.Trained
CompactClassificationECOC
Calcule los márgenes de clasificación de la muestra de prueba. Visualice la distribución de los márgenes utilizando una gráfica de caja.
testInds = test(PMdl.Partition); % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:); m = margin(Mdl,XTest,YTest); boxplot(m) title('Test-Sample Margins')
El margen de clasificación de una observación es la pérdida negada de clase positiva menos la pérdida negada de clase negativa máxima. Elija clasificadores que produzcan márgenes relativamente grandes.
Realice la selección de características comparando los márgenes de muestra de prueba de varios modelos. Basado únicamente en esta comparación, el modelo con los márgenes más grandes es el mejor modelo.
Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor, los datos de respuesta y el orden de las clases.X
Y
Y
load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y); % Class order rng(1); % For reproducibility
Particionar el conjunto de datos en conjuntos de entrenamiento y prueba. Especifique una muestra de retención del 30% para las pruebas.
Partition = cvpartition(Y,'Holdout',0.30); testInds = test(Partition); % Indices for the test set XTest = X(testInds,:); YTest = Y(testInds,:);
define la partición del conjunto de datos.Partition
Defina estos dos conjuntos de datos:
contiene los cuatro predictores.fullX
sólo contiene las mediciones del sépalo.partX
fullX = X; partX = X(:,1:2);
Entrenar un modelo ECOC utilizando clasificadores binarios SVM para cada conjunto de predictor. Especifique la definición de la partición, estandarice los predictores utilizando una plantilla SVM y defina el orden de la clase.
t = templateSVM('Standardize',true); fullPMdl = fitcecoc(fullX,Y,'CVPartition',Partition,'Learners',t,... 'ClassNames',classOrder); partPMdl = fitcecoc(partX,Y,'CVPartition',Partition,'Learners',t,... 'ClassNames',classOrder); fullMdl = fullPMdl.Trained{1}; partMdl = partPMdl.Trained{1};
y son modelos.fullPMdl
partPMdl
ClassificationPartitionedECOC
Cada modelo tiene la propiedad, una matriz de celdas 1 por 1 que contiene el modelo que el software entrenado utilizando el conjunto de entrenamiento correspondiente.Trained
CompactClassificationECOC
Calcule los márgenes de muestra de prueba para cada clasificador. Para cada modelo, visualice la distribución de los márgenes utilizando una gráfica de caja.
fullMargins = margin(fullMdl,XTest,YTest); partMargins = margin(partMdl,XTest(:,1:2),YTest); boxplot([fullMargins partMargins],'Labels',{'All Predictors','Two Predictors'}) title('Boxplots of Test-Sample Margins')
La distribución del margen de está situada más alta y tiene menos variabilidad que la distribución del margen de.fullMdl
partMdl
Mdl
— Modelo ECOC multiclase completo o compactoClassificationECOC
| objeto de modeloCompactClassificationECOC
Modelo ECOC multiclase completo o compacto, especificado como objeto o modelo.ClassificationECOC
CompactClassificationECOC
Para crear un modelo ECOC completo o compacto, consulte o.ClassificationECOC
CompactClassificationECOC
tbl
— Datos de ejemploDatos de ejemplo, especificados como una tabla. Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.tbl
Opcionalmente, puede contener columnas adicionales para la variable de respuesta y ponderaciones de observación. debe contener todos los predictores utilizados para entrenar.tbl
tbl
Mdl
No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.
Si entrena con datos de ejemplo contenidos en a, los datos de entrada paraMdl
table
margin
también debe estar en una tabla.
Si contiene modelos de clasificación de kernel o lineales (o objetos de modelo), no puede especificar datos de ejemplo en un.Mdl.BinaryLearners
ClassificationLinear
ClassificationKernel
table
En su lugar, pase una matriz () y etiquetas de clase ().X
Y
Cuando se entrena, suponga que establece para un objeto de plantilla especificado en el argumento de par nombre-valor de.Mdl
'Standardize',true
'Learners'
fitcecoc
En este caso, para el aprendizaje binario correspondiente, el software estandariza las columnas de los nuevos Datos predictores utilizando los medios correspondientes y las desviaciones estándar en.j
Mdl.BinaryLearner{j}.Mu
Mdl.BinaryLearner{j}.Sigma
Tipos de datos: table
ResponseVarName
— Nombre de variable de respuestatbl
Nombre de variable de respuesta, especificado como el nombre de una variable en.tbl
Si contiene la variable de respuesta utilizada para entrenar, no es necesario especificar.tbl
Mdl
ResponseVarName
Si especifica, debe hacerlo como un vector de caracteres o un escalar de cadena.ResponseVarName
Por ejemplo, si la variable de respuesta se almacena como, a continuación, especifique as.tbl.y
ResponseVarName
'y'
De lo contrario, el software trata todas las columnas de, incluidos, como predictores.tbl
tbl.y
La variable de respuesta debe ser una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Si la variable de respuesta es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.
Tipos de datos: char
| string
X
— Los Datos predictoresDatos de predictor, especificados como una matriz numérica.
Cada fila de corresponde a una observación, y cada columna corresponde a una variable.X
Las variables en las columnas de deben ser las mismas que las variables que entrenaron al clasificador.X
Mdl
El número de filas en debe ser igual al número de filas en.X
Y
Cuando se entrena, suponga que establece para un objeto de plantilla especificado en el argumento de par nombre-valor de.Mdl
'Standardize',true
'Learners'
fitcecoc
En este caso, para el aprendizaje binario correspondiente, el software estandariza las columnas de los nuevos Datos predictores utilizando los medios correspondientes y las desviaciones estándar en.j
Mdl.BinaryLearner{j}.Mu
Mdl.BinaryLearner{j}.Sigma
Tipos de datos: double
| single
Y
— Las etiquetas de claseEtiquetas de clase, especificadas como una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. debe tener el mismo tipo de datos que.Y
Mdl.ClassNames
(The software treats string arrays as cell arrays of character vectors.)
El número de filas en debe ser igual al número de filas en o.Y
tbl
X
Tipos de datos: categorical
| char
| string
| logical
| single
| double
| cell
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,Value
Name
Value
Name
Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN
margin(Mdl,tbl,'y','BinaryLoss','exponential')
'BinaryLoss'
— Función binaria de pérdida de aprendizaje'hamming'
| 'linear'
| 'logit'
| 'exponential'
| 'binodeviance'
| 'hinge'
| 'quadratic'
| identificador de funciónFunción de pérdida binaria de aprendizaje, especificada como el par separado por comas que consta de un nombre de función de pérdida incorporada o un identificador de función.'BinaryLoss'
Esta tabla describe 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.
Valor | Descripción | Puntuació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 para que la pérdida es 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
tiene este formulario: donde:customFunction
bLoss = customFunction(M,s)
es la matriz-por-codificación almacenada en.M
KLMdl.CodingMatrix
es el vector 1 por fila de las puntuaciones de clasificación.s
L
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
El valor predeterminado depende de los rangos de puntuación devueltos por los alumnos binarios.BinaryLoss
Esta tabla describe algunos valores predeterminados basados en las suposiciones dadas.BinaryLoss
presunción | Valor predeterminado |
---|---|
Todos los alumnos binarios son SVMs o modelos de clasificación de kernel o lineales de alumnos de SVM. | 'hinge' |
Todos los estudiantes binarios son conjuntos entrenados por o.AdaboostM1 GentleBoost | 'exponential' |
Todos los estudiantes binarios son conjuntos entrenados por.LogitBoost | 'binodeviance' |
Todos los estudiantes binarios son modelos lineales o de clasificación de kernel de los estudiantes de regresión logística. O, especifique para predecir las probabilidades posteriores de clase estableciendo en.'FitPosterior',true fitcecoc | 'quadratic' |
Para comprobar el valor predeterminado, utilice la notación de puntos para mostrar la propiedad del modelo entrenado en la línea de comandos.BinaryLoss
Ejemplo: 'BinaryLoss','binodeviance'
Tipos de datos: char
| string
| function_handle
'Decoding'
— Esquema de decodificación'lossweighted'
(predeterminado) | 'lossbased'
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'
'ObservationsIn'
— La dimensión de observación de Datos predictores'rows'
(predeterminado) | 'columns'
Dimensión de observación de Datos predictores, especificada como el par separado por comas que consta de y o. deben contener modelos.'ObservationsIn'
'columns'
'rows'
Mdl.BinaryLearners
ClassificationLinear
Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de ejecución.'ObservationsIn','columns'
'Options'
— Las opciones de estimación[]
(predeterminado) | matriz de estructura devuelta porstatset
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)
'Verbose'
— Nivel de verbosidad0
(predeterminado) | 1
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'
0
1
Verbose
Si es, entonces el software no visualiza los mensajes de diagnóstico.Verbose
0
De lo contrario, el software muestra mensajes de diagnóstico.
Ejemplo: 'Verbose',1
Tipos de datos: single
| double
m
— Los márgenes de clasificación, devuelto como un vector de columna numérico o una matriz numérica.Los márgenes de clasificación
Si contiene modelos, entonces es un-por-Vector, donde es el número de observaciones en y es el número de fortalezas de regularización en los modelos de clasificación lineal ().Mdl.BinaryLearners
ClassificationLinear
m
nLnX
Lnumel(Mdl.BinaryLearners{1}.Lambda)
El valor es el margen de observación para el modelo entrenado utilizando la fuerza de regularización.m(i,j)
i
Mdl.BinaryLearners{1}.Lambda(j)
De lo contrario, es un vector de columna de longitud.m
n
A es una función de la puntuación de clase y clasificación que determina qué tan bien un alumno binario clasifica una observación en la clase.pérdida binaria
Supongamos lo siguiente:
Mkj es Element (,) de la matriz de diseño de codificación (es decir, el código correspondiente a la clase de aprendizaje binario).kjMkj
sj es la puntuación de aprendizaje binario para una observación.j
es la función de pérdida binaria.g
es la clase pronosticada para la observación.
En, la clase que produce la suma mínima de las pérdidas binarias sobre los estudiantes binarios determina la clase pronosticada de una observación, es decir,decodificación basada en pérdidas[Escalera et al.]
En, la clase que produce el promedio mínimo de las pérdidas binarias sobre los estudiantes binarios determina la clase pronosticada de una observación, es decir,decodificación ponderada por pérdida[Escalera et al.]
sugieren que la decodificación ponderada por pérdida mejora la precisión de la clasificación manteniendo los valores de pérdida para todas las clases en el mismo rango dinámico.Allwein et al.
En esta tabla se resumen las funciones de pérdida admitidas, 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).
Valor | Descripción | Puntuació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 y agregados con el promedio de los alumnos binarios.[Allwein et al.]
No confunda la pérdida binaria con la pérdida de clasificación general (especificada por el argumento de par nombre-valor de las funciones de objeto y), que mide qué tan bien se comporta un clasificador ECOC como un todo.'LossFun'
loss
Predecir
El es, para cada observación, la diferencia entre la pérdida negativa para la clase verdadera y la pérdida negativa máxima entre las clases falsas.margen de clasificación Si los márgenes están en la misma escala, entonces sirven como una medida de confianza de clasificación. Entre los clasificadores múltiples, los que producen mayores márgenes son mejores.
Para comparar los márgenes o los bordes de varios clasificadores ECOC, utilice objetos de plantilla para especificar una función de transformación de puntuación común entre los clasificadores durante el entrenamiento.
[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] 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.
[3] 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.
Esta función es totalmente compatible con matrices altas. Para obtener más información, consulte.Arreglos altos (MATLAB)
Para ejecutar en paralelo, establezca la opción en.'UseParallel'
true
Establezca el campo de la estructura de opciones en Using y especifique el argumento de par nombre-valor en la llamada a esta función.'UseParallel'
true
statset
'Options'
Por ejemplo:'Options',statset('UseParallel',true)
Para obtener más información, vea el argumento de par nombre-valor.'Options'
Para obtener más información general sobre la computación paralela, consulte.Run MATLAB Functions with Automatic Parallel Support (Parallel Computing Toolbox)
Borde
| ClassificationECOC
| CompactClassificationECOC
| Predecir
| fitcecoc
| loss
| resubMargin
A modified version of this example exists on your system. Do you want to open this version instead? (es)
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.