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.

ClassificationTree clase

Superclases: CompactClassificationTree

Árbol de decisión binaria para clasificación

Descripción

Un objeto representa un árbol de decisión con divisiones binarias para la clasificación.ClassificationTree Un objeto de esta clase puede predecir las respuestas de los datos nuevos mediante el predict Método. El objeto contiene los datos utilizados para el entrenamiento, por lo que también puede calcular las predicciones de reenvío.

Construcción

Cree un objeto mediante.ClassificationTreefitctree

Propiedades

BinEdges

Aristas de ubicación para los predictores numéricos, especificados como una matriz de celdas de vectores numéricos, donde es el número de predictores.pp Cada vector incluye los bordes de la papelera para un predictor numérico. El elemento en la matriz de celdas para un predictor categórico está vacío porque el software no bin predictores categóricos.

Los predictores numéricos de bins de software solo si especifica el argumento de par nombre-valor como un escalar entero positivo al entrenar un modelo con alumnos de árbol.'NumBins' La propiedad está vacía si el valor está vacío (valor predeterminado).BinEdges'NumBins'

Puede reproducir los datos de predictor en binned utilizando la propiedad del modelo entrenado.XbinnedBinEdgesmdl

X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x) 
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]); 
    Xbinned(:,j) = xbinned;
end
contiene los índices de ubicación, que van desde 1 hasta el número de bins, para los predictores numéricos. valores son 0 para los predictores categóricos.XbinnedXbinned Si contiene s, los valores correspondientes son s.XNaNXbinnedNaN

CategoricalPredictors

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces esta propiedad está vacía ().[]

CategoricalSplit

Matriz de celdas an-by-2, donde es el número de divisiones categóricas en.nntree Cada fila en da los valores izquierdo y derecho para una división categórica.CategoricalSplits Para cada nodo de bifurcación con división categórica basada en una variable predictora categórica, se elige el hijo izquierdo si está en y se elige el secundario correcto si está en.jzzCategoricalSplits(j,1)zCategoricalSplits(j,2) Las divisiones están en el mismo orden que los nodos del árbol. Encuentre los nodos para estas divisiones seleccionando cortes de arriba a abajo en la propiedad.'categorical'CutType

Children

Matriz an-by-2 que contiene los números de los nodos secundarios para cada nodo en, donde es el número de nodos.ntreen Los nodos hoja tienen un nodo secundario.0

ClassCount

Una-por-matriz de recuentos de clases para los nodos en, donde es el número de nodos y es el número de clases.nktreenk Para cualquier número de nodo, los recuentos de clases son recuentos de observaciones (de los datos utilizados para ajustar el árbol) de cada clase que satisfacen las condiciones para el nodo.iClassCount(i,:)i

ClassNames

Lista de los elementos con duplicados eliminados. puede ser una matriz categórica, una matriz de vectores de caracteres, una matriz de caracteres, un vector lógico o un vector numérico. tiene el mismo tipo de datos que los datos del argumento.YClassNamesClassNamesY (The software treats string arrays as cell arrays of character vectors.)

ClassProbability

Una-por-matriz de probabilidades de clase para los nodos en, donde es el número de nodos y es el número de clases.nktreenk Para cualquier número de nodo, las probabilidades de clase son las probabilidades estimadas para cada clase para un punto que satisfaga las condiciones para el nodo.iClassProbability(i,:)i

Cost

Matriz cuadrada, donde es el costo de clasificar un punto en la clase si su clase verdadera es (las filas corresponden a la clase true y las columnas corresponden a la clase pronosticada).Cost(i,j)ji El orden de las filas y columnas corresponde al orden de las clases en.CostoClassNames El número de filas y columnas en es el número de clases únicas en la respuesta.Costo Esta propiedad es de solo lectura.

CutCategories

Matriz de celdas a-by-2 de las categorías utilizadas en las ramas, donde es el número de nodos.ntreen Para cada nodo de rama basado en una variable predictora categórica, se elige el hijo izquierdo si está entre las categorías enumeradas en, y se elige el secundario correcto si está entre los enumerados en.iXXCutCategories{i,1}XCutCategories{i,2} Ambas columnas están vacías para nodos de bifurcación basados en predictores continuos y para nodos hoja.CutCategories

contiene los puntos de corte para cortes y contiene el conjunto de categorías.CutPoint'continuous'CutCategories

CutPoint

Un vector de elemento de los valores utilizados como puntos de corte en, donde es el número de nodos.ntreen Para cada nodo de bifurcación basado en una variable predictora continua, se elige el secundario izquierdo si se elige el secundario correcto si. es para nodos de bifurcación basados en predictores categóricos y para nodos hoja.iXX<CutPoint(i)X>=CutPoint(i)CutPointNaN

contiene los puntos de corte para cortes y contiene el conjunto de categorías.CutPoint'continuous'CutCategories

CutType

Matriz de celdas de un elemento que indica el tipo de corte en cada nodo, donde está el número de nodos.ntreen Para cada nodo, es:iCutType{i}

  • : Si el corte se define en el formulario para una variable y un punto de corte.'continuous'X < vXv

  • : Si el corte se define por si una variable toma un valor en un conjunto de categorías.'categorical'X

  • — Si es un nodo hoja.''i

contiene los puntos de corte para cortes y contiene el conjunto de categorías.CutPoint'continuous'CutCategories

CutPredictor

Matriz de celdas de un elemento de los nombres de las variables utilizadas para la ramificación en cada nodo, donde está el número de nodos.ntreen Estas variables a veces se conocen como .cut variables Para los nodos hoja, contiene un vector de caracteres vacío.CutPredictor

contiene los puntos de corte para cortes y contiene el conjunto de categorías.CutPoint'continuous'CutCategories

ExpandedPredictorNames

Nombres de predictores ampliados, almacenados como una matriz de vectores de caracteres de celda.

Si el modelo utiliza codificación para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es el mismo que.ExpandedPredictorNamesPredictorNames

HyperparameterOptimizationResults

Descripción de la optimización de validación cruzada de los hiperparámetros, almacenada como un objeto o una tabla de hiperparámetros y valores asociados.BayesianOptimization No vacía cuando el par nombre-valor no está vacío en la creación.OptimizeHyperparameters El valor depende de la configuración del par nombre-valor en la creación:HyperparameterOptimizationOptions

  • (valor predeterminado) — objeto de la clase'bayesopt'BayesianOptimization

  • o — tabla de hiperparámetros utilizados, valores de función objetiva observados (pérdida de validación cruzada) y rango de observaciones de menor (mejor) a mayor (peor)'gridsearch''randomsearch'

IsBranchNode

Vector lógico de un elemento que es para cada nodo de bifurcación y para cada nodo hoja de.ntruefalsetree

ModelParameters

Parámetros utilizados en la formación.tree Para mostrar todos los valores de parámetro, escriba.tree.ModelParameters Para acceder a un parámetro determinado, utilice la notación de puntos.

NumObservations

Número de observaciones en los datos de entrenamiento, un escalar numérico. puede ser menor que el número de filas de datos de entrada cuando faltan valores o respuestas.NumObservationsXXY

NodeClass

Matriz de celdas de un elemento con los nombres de las clases más probables en cada nodo de, donde es el número de nodos en el árbol.ntreen Cada elemento de esta matriz es un vector de caracteres igual a uno de los nombres de clase en.ClassNames

NodeError

Un vector de elemento de los errores de los nodos en, donde es el número de nodos. es la probabilidad de clasificación errónea para el nodo.ntreenNodeError(i)i

NodeProbability

Un vector de elemento de las probabilidades de los nodos en, donde es el número de nodos.ntreen La probabilidad de un nodo se calcula como la proporción de observaciones de los datos originales que satisfacen las condiciones del nodo. Esta proporción se ajusta para cualquier probabilidad previa asignada a cada clase.

NodeRisk

Un vector de elemento del riesgo de los nodos en el árbol, donde es el número de nodos.nn El riesgo para cada nodo es la medida de impureza (índice o desviación de Gini) para este nodo ponderado por la probabilidad de nodo. Si el árbol se cultiva por dos, el riesgo para cada nodo es cero.

NodeSize

Un vector de elemento de los tamaños de los nodos en, donde es el número de nodos.ntreen El tamaño de un nodo se define como el número de observaciones de los datos utilizados para crear el árbol que satisfacen las condiciones del nodo.

NumNodes

El número de nodos en.tree

Parent

Un vector de elemento que contiene el número del nodo primario para cada nodo en, donde es el número de nodos.ntreen El elemento primario del nodo raíz es.0

PredictorNames

Matriz de vectores de caracteres que contiene los nombres del predictor, en el orden en el que aparecen.X

Prior

Vector numérico de probabilidades previas para cada clase. El orden de los elementos corresponde al orden de las clases en.PriorClassNames El número de elementos de es el número de clases únicas en la respuesta.Prior Esta propiedad es de solo lectura.

PruneAlpha

Vector numérico con un elemento por nivel de poda. Si el nivel de poda oscila entre 0 y, a continuación, tiene + 1 elementos ordenados en orden ascendente. es para el nivel de poda 0 (sin poda), es para el nivel de poda 1, y así sucesivamente.MPruneAlphaMPruneAlpha(1)PruneAlpha(2)

PruneList

Vector numérico de un elemento con los niveles de poda en cada nodo de, donde es el número de nodos.ntreen Los niveles de poda van desde 0 (sin poda) a, donde es la distancia entre la hoja más profunda y el nodo raíz.MM

ResponseName

Un vector de caracteres que especifica el nombre de la variable de respuesta ().Y

RowsUsed

Vector lógico de un elemento que indica qué filas de los Datos predictores originales () se utilizaron en el ajuste.nX Si el software utiliza todas las filas de, entonces es un array vacío ().XRowsUsed[]

ScoreTransform

Identificador de función para transformar las puntuaciones de clasificación previstas o el vector de caracteres que representa una función de transformación integrada.

significa que no hay transformación, o.none@(x)x

Para cambiar la función de transformación de partitura a, por ejemplo, function, utilice la notación de puntos.

  • Para las funciones disponibles (véase), introduzcafitctree

    Mdl.ScoreTransform = 'function';
  • Puede establecer un identificador de función para una función disponible, o una función que defina usted mismo introduciendo

    tree.ScoreTransform = @function;

SurrogateCutCategories

Una matriz de celdas de elemento de las categorías utilizadas para el suplente se divide en, donde es el número de nodos en.ntreentree Para cada nodo, es una matriz de celdas.kSurrogateCutCategories{k} La longitud de es igual al número de predictores suplentes encontrados en este nodo.SurrogateCutCategories{k} Cada elemento de es un vector de carácter vacío para un predictor suplente continuo, o es una matriz de celdas de dos elementos con categorías para un predictor suplente categórico.SurrogateCutCategories{k} El primer elemento de esta matriz de celdas de dos elementos enumera las categorías asignadas al secundario izquierdo por esta división suplente y el segundo elemento de esta matriz de celdas de dos elementos enumera las categorías asignadas al secundario correcto por esta división suplente. El orden de las variables de división sustitutas en cada nodo se corresponde con el orden de las variables en.SurrogateCutPredictor La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una celda vacía.SurrogateCutCategories

SurrogateCutFlip

Matriz de celdas de un elemento de las asignaciones de corte numérico que se usa para las divisiones de suplentes, donde está el número de nodos.ntreentree Para cada nodo, es un vector numérico.kSurrogateCutFlip{k} La longitud de es igual al número de predictores suplentes encontrados en este nodo.SurrogateCutFlip{k} Cada elemento de es cero para un predictor suplente categórico o una asignación de corte numérico para un predictor suplente continuo.SurrogateCutFlip{k} La asignación de corte numérico puede ser – 1 o + 1. Para cada división sustituta con un corte numérico basado en una variable predictora continua, se elige el hijo izquierdo siCZ Z<C y la asignación de corte para esta división suplente es + 1, o si ZC y la asignación de corte para esta división suplente es – 1. Del mismo modo, se elige al niño adecuado si ZC y la asignación de corte para esta división suplente es + 1, o si Z<C y la asignación de corte para esta división suplente es – 1. El orden de las variables de división sustitutas en cada nodo se corresponde con el orden de las variables en.SurrogateCutPredictor La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una matriz vacía.SurrogateCutFlip

SurrogateCutPoint

Matriz de celdas de un elemento de los valores numéricos utilizados para el suplente se divide en, donde es el número de nodos en.ntreentree Para cada nodo, es un vector numérico.kSurrogateCutPoint{k} La longitud de es igual al número de predictores suplentes encontrados en este nodo.SurrogateCutPoint{k} Cada elemento de es para un predictor suplente categórico, o un corte numérico para un predictor suplente continuo.SurrogateCutPoint{k}NaN Para cada división sustituta con un corte numérico basado en una variable predictora continua, se elige el hijo izquierdo siCZ Z<C y para esta división suplente es + 1, o siSurrogateCutFlip ZC y para esta división suplente es – 1.SurrogateCutFlip Del mismo modo, se elige al niño adecuado si ZC y para esta división suplente es + 1, o siSurrogateCutFlip Z<C y para esta división suplente es – 1.SurrogateCutFlip El orden de las variables de división sustitutas en cada nodo coincide con el orden de las variables devueltas por.SurrogateCutPredictor La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una celda vacía.SurrogateCutPoint

SurrogateCutType

Matriz de celdas de un elemento que indica los tipos de divisiones sustitutas en cada nodo, donde se encuentra el número de nodos.ntreentree Para cada nodo, es una matriz de celdas con los tipos de las variables de división sustitutas en este nodo.kSurrogateCutType{k} Las variables se ordenan por la medida predictiva de asociación con el predictor óptimo en el orden descendente, y solo se incluyen las variables con la medida predictiva positiva. El orden de las variables de división sustitutas en cada nodo se corresponde con el orden de las variables en.SurrogateCutPredictor La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una celda vacía.SurrogateCutType Un tipo de división suplente puede ser si el corte se define en el formulario < para una variable y un punto de corte o si el corte se define por si toma un valor en un conjunto de categorías.'continuous'ZVZV'categorical'Z

SurrogateCutPredictor

Matriz de celdas de un elemento de los nombres de las variables utilizadas para las divisiones sustitutas en cada nodo, donde está el número de nodos.ntreentree Cada elemento de es una matriz de celdas con los nombres de las variables de división sustitutas en este nodo.SurrogateCutPredictor Las variables se ordenan por la medida predictiva de asociación con el predictor óptimo en el orden descendente, y solo se incluyen las variables con la medida predictiva positiva. La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una celda vacía.SurrogateCutPredictor

SurrogatePredictorAssociation

Una matriz de celdas de elemento de las medidas predictivas de Asociación para suplentes se divide en, donde es el número de nodos en.ntreentree Para cada nodo, es un vector numérico.kSurrogatePredictorAssociation{k} La longitud de es igual al número de predictores suplentes encontrados en este nodo.SurrogatePredictorAssociation{k} Cada elemento da la medida predictiva de asociación entre la división óptima y esta división sustituta.SurrogatePredictorAssociation{k} El orden de las variables de división sustitutas en cada nodo es el orden de las variables en.SurrogateCutPredictor La variable de división óptima en este nodo no aparece. Para los nodos no rama (hoja), contiene una celda vacía.SurrogatePredictorAssociation

W

La escala, un vector con la longitud, el número de filas en.weightsnX

X

Una matriz o tabla de valores predictores. Cada columna de representa una variable, y cada fila representa una observación.X

Y

Una matriz categórica, matriz de celdas de vectores de caracteres, matriz de caracteres, Vector lógico o un vector numérico. Cada fila de representa la clasificación de la fila correspondiente de.YX

Métodos

compactÁrbol compacto
crossvalEl árbol de decisión validado
cvlossError de clasificación mediante validación cruzada
pruneProducir secuencia de subárboles mediante la poda
resubEdgeEl borde de la clasificación por el reenvío
resubLossError de clasificación por reenvío
resubMarginLos márgenes de clasificación por reenvío
resubPredictPredecir las etiquetas de reenvío del árbol de clasificación

Métodos heredados

edgeLa arista de clasificación
lossError de clasificación
marginLos márgenes de clasificación
predictPredecir etiquetas utilizando el árbol de clasificación
predictorImportanceLas estimaciones de importancia predictora
surrogateAssociationMedida predictiva media de Asociación para divisiones sustitutas en el árbol de decisión
viewVer árbol

Semántica de copia

Valor. Para saber cómo afectan las clases de valor a las operaciones de copia, consulte.Copiar objetos (MATLAB)

Ejemplos

contraer todo

Cultivar un árbol de clasificación utilizando el conjunto de datos.ionosphere

load ionosphere tc = fitctree(X,Y)
tc =    ClassificationTree              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'           NumObservations: 351     Properties, Methods  

Puede controlar la profundidad de los árboles utilizando los parámetros de par nombre-valor. cultiva árboles de decisión de forma predeterminada.MaxNumSplitsMinLeafSizeMinParentSizefitctree Puede cultivar árboles menos profundos para reducir la complejidad del modelo o el tiempo de cálculo.

Cargue el conjunto de datos.ionosphere

load ionosphere

Los valores predeterminados de los controladores de profundidad de árbol para los árboles de clasificación crecientes son:

  • Para. es el tamaño de la muestra de entrenamiento.n - 1MaxNumSplitsn

  • Para.1MinLeafSize

  • Para.10MinParentSize

Estos valores predeterminados tienden a cultivar árboles profundos para tamaños de muestra de entrenamiento grandes.

Entrenar un árbol de clasificación utilizando los valores predeterminados para el control de profundidad de árbol. Valide el modelo mediante la validación cruzada de 10 veces.

rng(1); % For reproducibility MdlDefault = fitctree(X,Y,'CrossVal','on');

Dibuje un histograma del número de divisiones impuestas en los árboles. También, ver uno de los árboles.

numBranches = @(x)sum(x.IsBranch); mdlDefaultNumSplits = cellfun(numBranches, MdlDefault.Trained);  figure; histogram(mdlDefaultNumSplits)

 view(MdlDefault.Trained{1},'Mode','graph')

El número promedio de divisiones es de alrededor de 15.

Supongamos que desea un árbol de clasificación que no sea tan complejo (profundo) como los entrenados utilizando el número predeterminado de divisiones. Entrenar otro árbol de clasificación, pero establecer el número máximo de divisiones en 7, que es aproximadamente la mitad del número medio de divisiones del árbol de clasificación por defecto. Valide el modelo mediante la validación cruzada de 10 veces.

Mdl7 = fitctree(X,Y,'MaxNumSplits',7,'CrossVal','on'); view(Mdl7.Trained{1},'Mode','graph')

Compare los errores de clasificación de validación cruzada de los modelos.

classErrorDefault = kfoldLoss(MdlDefault)
classErrorDefault = 0.1140 
classError7 = kfoldLoss(Mdl7)
classError7 = 0.1254 

es mucho menos complejo y funciona sólo un poco peor que.Mdl7MdlDefault

Más acerca de

expandir todo

Referencias

[1] Breiman, L., J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Boca Raton, FL: CRC Press, 1984.

Capacidades ampliadas

Introducido en R2011a