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.

loss

Error de clasificación

Descripción

L = loss(tree,TBL,ResponseVarName) Devuelve un escalar que representa qué tan bien clasifica los datos en, cuando contiene las clasificaciones verdaderas.treeTBLTBL.ResponseVarName

Al calcular la pérdida, normaliza las probabilidades de clase en las probabilidades de clase utilizadas para el entrenamiento, almacenadas en la propiedad de.lossYPriortree

L = loss(tree,TBL,Y) Devuelve un escalar que representa qué tan bien clasifica los datos en, cuando contiene las clasificaciones verdaderas.treeTBLY

L = loss(tree,X,Y) Devuelve un escalar que representa qué tan bien clasifica los datos en, cuando contiene las clasificaciones verdaderas.treeXY

L = loss(___,Name,Value) Devuelve la pérdida con opciones adicionales especificadas por uno o más argumentos de par, utilizando cualquiera de las sintaxis anteriores.Name,Value Por ejemplo, puede especificar la función de pérdida o las ponderaciones de observación.

[L,se,NLeaf,bestlevel] = loss(___) también devuelve el vector de errores estándar de los errores de clasificación (), el vector de números de nodos hoja en los árboles de la secuencia de poda (), y el mejor nivel de poda tal como se define en el par nombre-valor ().seNLeafTreeSizebestlevel

Nota

Devuelve y más salidas sólo cuando el par nombre-valor es el valor predeterminado.lossseLossFun'classiferror'

Argumentos de entrada

expandir todo

Árbol de clasificación entrenado, especificado como un objeto de modelo o.ClassificationTreeCompactClassificationTree Es decir, es un modelo de clasificación entrenado devuelto por otreefitctree compact.

Datos 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.TBLTBLtree No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.

Si contiene la variable de respuesta utilizada para entrenar, no es necesario especificar o.TBLtreeResponseVarNameY

Si entrena con datos de ejemplo contenidos en a, los datos de entrada para este método también deben estar en una tabla.treetable

Tipos de datos: table

Datos para clasificar, especificados como una matriz numérica. Cada fila de representa una observación y cada columna representa un predictor. debe tener el mismo número de columnas que los datos utilizados para entrenar. debe tener el mismo número de filas que el número de elementos.XXtreeXY

Tipos de datos: single | double

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.TBLtreeResponseVarName

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, especifíquese como.TBL.Response'Response' De lo contrario, el software trata todas las columnas de, incluidos, como predictores.TBLTBL.ResponseVarName

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

Etiquetas 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 ser del mismo tipo que la clasificación utilizada para entrenar, y su número de elementos debe ser igual al número de filas de.YtreeX

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

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, 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.'LossFun'

  • La tabla siguiente enumera las funciones de pérdida disponibles. Especifique uno utilizando su vector de caracteres correspondiente o escalar de cadena.

    ValorDescripción
    'binodeviance'Desviación binomial
    'classiferror'Error de clasificación
    'exponential'Exponencial
    'hinge'Bisagra
    'logit'Logística
    'mincost'Costo mínimo previsto de clasificación errónea (para puntuaciones de clasificación que son probabilidades posteriores)
    'quadratic'Cuadrática

    es adecuada para las puntuaciones de clasificación que son probabilidades posteriores.'mincost' Los árboles de clasificación devuelven probabilidades posteriores como puntuaciones de clasificación de forma predeterminada (consulte predict).

  • Especifique su propia función utilizando la notación de identificador de función.

    Supongamos que es el número de observaciones en y ser el número de clases distintas ().nXKnumel(tree.ClassNames) La función debe tener esta firma

    lossvalue = lossfun(C,S,W,Cost)
    Dónde:

    • El argumento de salida es un escalar.lossvalue

    • Elija el nombre de la función (lossfun).

    • es una matriz lógica con filas que indican a qué clase pertenece la observación correspondiente.CnK El orden de las columnas corresponde al orden de la clase.tree.ClassNames

      Construya estableciendo si la observación está en la clase, para cada fila.CC(p,q) = 1pq Establezca todos los demás elementos de la fila en.p0

    • es una matriz numérica de puntuaciones de clasificación.SnK El orden de las columnas corresponde al orden de la clase. es una matriz de puntuaciones de clasificación, similar a la salida de.tree.ClassNamesSPredecir

    • es un vector numérico de pesos de observación de-por-1.Wn Si pasa, el software los normaliza para sumar.W1

    • es una matriz numérica de costes de clasificación errónea.CostoKK Por ejemplo, especifica un coste para la clasificación correcta y para la clasificación errónea.Cost = ones(K) - eye(K)01

    Especifique la función mediante 'LossFun',@lossfun.

Para obtener más información sobre las funciones de pérdida, consulte.Pérdida de clasificación

Tipos de datos: char | string | function_handle

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico de valores positivos o el nombre de una variable en.'Weights'TBL

Si se especifica como un vector numérico, el tamaño de debe ser igual al número de filas en o.WeightsWeightsXTBL

Si especifica como el nombre de una variable en, debe hacerlo como un vector de caracteres o escalar de cadena.WeightsTBL Por ejemplo, si las ponderaciones se almacenan como, a continuación, especifíquese como.TBL.W'W' De lo contrario, el software trata todas las columnas de, incluidos, como predictores.TBLTBL.W

Normaliza los pesos de modo que los pesos de observación de cada clase se suman a la probabilidad anterior de esa clase.loss Al suministrar, calcula la pérdida de clasificación ponderada.Weightsloss

Tipos de datos: single | double | char | string

argumentos asociados a los subárboles de poda:Name,Value

Nivel de poda, especificado como el par separado por comas que consta de y un vector de enteros no negativos en orden ascendente o.'Subtrees''all'

Si especifica un vector, todos los elementos deben ser al menos y como máximo. indica el árbol completo, no podado e indica el árbol completamente podado (es decir, sólo el nodo raíz).0max(tree.PruneList)0max(tree.PruneList)

Si especifica,'all' loss opera en todos los subárboles (es decir, toda la secuencia de poda). Esta especificación equivale a usar.0:max(tree.PruneList)

loss ciruelas a cada nivel indicado en y, a continuación, estima los argumentos de salida correspondientes.treeSubtrees El tamaño de determina el tamaño de algunos argumentos de salida.Subtrees

Para invocar, las propiedades y de deben estar no vacías.SubtreesPruneListPruneAlphatree En otras palabras, crece estableciendo, o podando usandotree'Prune','on'tree prune.

Ejemplo: 'Subtrees','all'

Tipos de datos: single | double | char | string

Tamaño de árbol, especificado como el par separado por comas que consta de uno de los siguientes valores:'TreeSize'

  • : devuelve el nivel de poda más alto con pérdida dentro de una desviación estándar del mínimo (+, donde y se relaciona con el valor más pequeño en).'se'lossLseLseSubtrees

  • : devuelve el elemento de menor pérdida, normalmente el elemento más pequeño de.'min'lossSubtreesSubtrees

Argumentos de salida

expandir todo

, devuelto como un vector de la longitud de.La pérdida de clasificaciónSubtrees El significado del error depende de los valores de y.WeightsLossFun

Error estándar de pérdida, devuelto como un vector de la longitud de.Subtrees

Número de hojas (nodos terminales) en los subárboles podados, devueltos como un vector de la longitud de.Subtrees

El mejor nivel de poda como se define en el par nombre-valor, devuelto como un escalar cuyo valor depende de:TreeSizeTreeSize

  • = — Devuelve el nivel de poda más alto con pérdida dentro de una desviación estándar del mínimo (+, donde y se relacionan con el valor más pequeño en).TreeSize'se'lossLseLseSubtrees

  • = — Devuelve el elemento de menor pérdida, normalmente el elemento más pequeño de.TreeSize'min'lossSubtreesSubtrees

Por defecto, es el nivel de poda que da la pérdida dentro de una desviación estándar de pérdida mínima.bestlevel

Ejemplos

expandir todo

Calcule el error de clasificación de reenvío para el conjunto de datos.ionosphere

load ionosphere tree = fitctree(X,Y); L = loss(tree,X,Y)
L = 0.0114 

Los árboles de decisión no podadas tienden a sobreajustarse. Una forma de equilibrar la complejidad del modelo y el rendimiento fuera de la muestra es podar un árbol (o restringir su crecimiento) para que el rendimiento en la muestra y fuera de la muestra sea satisfactorio.

Cargue el conjunto de datos de iris de Fisher. Dividir los datos en formación (50%) y validación (50%) Establece.

load fisheriris n = size(meas,1); rng(1) % For reproducibility idxTrn = false(n,1); idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices  idxVal = idxTrn == false;                  % Validation set logical indices

Cultivar un árbol de clasificación usando el conjunto de entrenamiento.

Mdl = fitctree(meas(idxTrn,:),species(idxTrn));

Ver el árbol de clasificación.

view(Mdl,'Mode','graph');

El árbol de clasificación tiene cuatro niveles de poda. El nivel 0 es el árbol completo, no podado (como se muestra). El nivel 3 es solo el nodo raíz (es decir, sin divisiones).

Examine el error de clasificación de muestra de entrenamiento para cada subárbol (o nivel de poda) excluyendo el nivel más alto.

m = max(Mdl.PruneList) - 1; trnLoss = resubLoss(Mdl,'SubTrees',0:m)
trnLoss = 3×1

    0.0267
    0.0533
    0.3067

  • El árbol completo, no podado, clasifica un 2,7% de las observaciones de entrenamiento.

  • El árbol podado al nivel 1 clasifica erróneamente alrededor del 5,3% de las observaciones de entrenamiento.

  • El árbol podado al nivel 2 (es decir, un muñón) clasifica erróneamente alrededor del 30,6% de las observaciones de entrenamiento.

Examine el error de clasificación de muestra de validación en cada nivel excluyendo el nivel más alto.

valLoss = loss(Mdl,meas(idxVal,:),species(idxVal),'SubTrees',0:m)
valLoss = 3×1

    0.0369
    0.0237
    0.3067

  • El árbol completo, no podado, clasifica un 3,7% de las observaciones de validación.

  • El árbol podado al nivel 1 clasifica erróneamente alrededor del 2,4% de las observaciones de validación.

  • El árbol podado al nivel 2 (es decir, un muñón) clasifica erróneamente alrededor del 30,7% de las observaciones de validación.

Para equilibrar la complejidad del modelo y el rendimiento fuera de la muestra, considere la posibilidad de poda en el nivel 1.Mdl

pruneMdl = prune(Mdl,'Level',1); view(pruneMdl,'Mode','graph')

Más acerca de

expandir todo

Capacidades ampliadas

Consulte también

| | |