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.

fitrtree

Ajustar árbol de decisión binaria para la regresión

Descripción

tree = fitrtree(Tbl,ResponseVarName) Devuelve un árbol de regresión basado en las variables de entrada (también conocidas como predictores, características o atributos) en la tabla y la salida (respuesta) contenida en.TblTbl.ResponseVarName El valor devuelto es un árbol binario donde cada nodo de ramificación se divide en función de los valores de una columna de.treeTbl

tree = fitrtree(Tbl,formula) Devuelve un árbol de regresión basado en las variables de entrada contenidas en la tabla.Tbl La entrada es un modelo explicativo de la respuesta y un subconjunto de variables predictoras que se utilizan para ajustarse.FórmulaTbltree

tree = fitrtree(Tbl,Y) Devuelve un árbol de regresión basado en las variables de entrada contenidas en la tabla y la salida en Vector.TblY

ejemplo

tree = fitrtree(X,Y) Devuelve un árbol de regresión basado en las variables de entrada y la salida.XY El valor devuelto es un árbol binario donde cada nodo de ramificación se divide en función de los valores de una columna de.treeX

ejemplo

tree = fitrtree(___,Name,Value) 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 ponderaciones de observación o entrenar un modelo con validación cruzada.

Ejemplos

contraer todo

Cargue los datos de ejemplo.

load carsmall

Construya un árbol de regresión utilizando los datos de ejemplo. La variable de respuesta es millas por galón, MPG.

tree = fitrtree([Weight, Cylinders],MPG,...                 'CategoricalPredictors',2,'MinParentSize',20,...                 'PredictorNames',{'W','C'})
tree =    RegressionTree            PredictorNames: {'W'  'C'}              ResponseName: 'Y'     CategoricalPredictors: 2         ResponseTransform: 'none'           NumObservations: 94     Properties, Methods  

Predecir el kilometraje de coches de 4.000 libras con 4, 6 y 8 cilindros.

MPG4Kpred = predict(tree,[4000 4; 4000 6; 4000 8])
MPG4Kpred = 3×1

   19.2778
   19.2778
   14.3889

cultiva árboles de decisión de forma predeterminada.fitrtree Puede cultivar árboles menos profundos para reducir la complejidad del modelo o el tiempo de cálculo. Para controlar la profundidad de los árboles, utilice los argumentos de par nombre-valor.'MaxNumSplits''MinLeafSize''MinParentSize'

Cargue el conjunto de datos.carsmall Considere, y como predictores de la respuesta.DisplacementHorsepowerWeightMPG

load carsmall X = [Displacement Horsepower Weight];

Los valores predeterminados de los controladores de profundidad de árbol para los árboles de regresió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 regresió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 = fitrtree(X,MPG,'CrossVal','on');

Dibuje un histograma del número de divisiones impuestas en los árboles. El número de divisiones impuestas es uno menos que el número de hojas. 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 medio de divisiones está entre 14 y 15.

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

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

Compare los errores de media cuadrada (MSEs) de validación cruzada de los modelos.

mseDefault = kfoldLoss(MdlDefault)
mseDefault = 25.7383 
mse7 = kfoldLoss(Mdl7)
mse7 = 26.5748 

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

Optimice los hiperparámetros automáticamente mediante.fitrtree

Cargue el conjunto de datos.carsmall

load carsmall

Uso y como predictores para.WeightHorsepowerMPG Encuentre hiperparámetros que minimicen la pérdida de validación cruzada de cinco veces mediante la optimización automática de hiperparámetros.

Para reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus'

X = [Weight,Horsepower]; Y = MPG; rng default Mdl = fitrtree(X,Y,'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',...     'expected-improvement-plus'))

|======================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |    1 | Best   |      3.2818 |     0.44173 |      3.2818 |      3.2818 |           28 | |    2 | Accept |      3.4183 |     0.46766 |      3.2818 |      3.2888 |            1 | |    3 | Best   |      3.1491 |     0.18874 |      3.1491 |       3.166 |            4 | |    4 | Best   |      2.9885 |     0.15234 |      2.9885 |      2.9885 |            9 | |    5 | Accept |      2.9978 |      0.2347 |      2.9885 |      2.9885 |            7 | |    6 | Accept |      3.0203 |    0.096022 |      2.9885 |      3.0013 |            8 | |    7 | Accept |      2.9885 |    0.099519 |      2.9885 |      2.9981 |            9 | |    8 | Best   |      2.9589 |     0.12559 |      2.9589 |       2.985 |           10 | |    9 | Accept |      3.0459 |     0.11114 |      2.9589 |      2.9895 |           12 | |   10 | Accept |      4.1881 |     0.10721 |      2.9589 |      2.9594 |           50 | |   11 | Accept |      3.4182 |     0.13523 |      2.9589 |      2.9594 |            2 | |   12 | Accept |      3.0376 |    0.094792 |      2.9589 |      2.9592 |            6 | |   13 | Accept |      3.1453 |     0.10931 |      2.9589 |      2.9856 |           19 | |   14 | Accept |      2.9589 |    0.080834 |      2.9589 |      2.9591 |           10 | |   15 | Accept |      2.9589 |    0.082352 |      2.9589 |       2.959 |           10 | |   16 | Accept |      2.9589 |     0.16105 |      2.9589 |       2.959 |           10 | |   17 | Accept |      3.3055 |    0.093288 |      2.9589 |       2.959 |            3 | |   18 | Accept |      3.4577 |    0.082035 |      2.9589 |      2.9589 |           37 | |   19 | Accept |      3.1584 |     0.08331 |      2.9589 |      2.9589 |           15 | |   20 | Accept |       3.107 |     0.12378 |      2.9589 |      2.9589 |            5 | |======================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |   21 | Accept |      3.0398 |      0.1283 |      2.9589 |      2.9589 |           23 | |   22 | Accept |      3.3226 |    0.070782 |      2.9589 |      2.9589 |           32 | |   23 | Accept |      3.1883 |    0.086769 |      2.9589 |      2.9589 |           17 | |   24 | Accept |      4.1881 |    0.079268 |      2.9589 |      2.9589 |           43 | |   25 | Accept |      3.0123 |    0.081636 |      2.9589 |      2.9589 |           11 | |   26 | Accept |      3.0932 |    0.082785 |      2.9589 |      2.9589 |           21 | |   27 | Accept |       3.078 |     0.13321 |      2.9589 |      2.9589 |           13 | |   28 | Accept |      3.2818 |     0.20713 |      2.9589 |      2.9589 |           25 | |   29 | Accept |      3.0992 |     0.12658 |      2.9589 |      2.9589 |           14 | |   30 | Accept |      3.4361 |      0.1633 |      2.9589 |      2.9589 |           34 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 102.0868 seconds. Total objective function evaluation time: 4.2304  Best observed feasible point:     MinLeafSize     ___________          10       Observed objective function value = 2.9589 Estimated objective function value = 2.9589 Function evaluation time = 0.12559  Best estimated feasible point (according to models):     MinLeafSize     ___________          10       Estimated objective function value = 2.9589 Estimated function evaluation time = 0.12355 
Mdl =    RegressionTree                          ResponseName: 'Y'                 CategoricalPredictors: []                     ResponseTransform: 'none'                       NumObservations: 94     HyperparameterOptimizationResults: [1x1 BayesianOptimization]     Properties, Methods  

Cargue el conjunto de datos.carsmall Considere un modelo que predice la economía de combustible media de un automóvil debido a su aceleración, número de cilindros, cilindrada del motor, potencia, fabricante, año del modelo y peso. Considere, y como variables categóricas.CylindersMfgModel_Year

load carsmall Cylinders = categorical(Cylinders); Mfg = categorical(cellstr(Mfg)); Model_Year = categorical(Model_Year); X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,...     Model_Year,Weight,MPG);

Mostrar el número de categorías representadas en las variables categóricas.

numCylinders = numel(categories(Cylinders))
numCylinders = 3 
numMfg = numel(categories(Mfg))
numMfg = 28 
numModelYear = numel(categories(Model_Year))
numModelYear = 3 

Debido a que hay 3 categorías sólo en y, el estándar CART, algoritmo de división de predictor prefiere dividir un predictor continuo sobre estas dos variables.CylindersModel_Year

Entrenar un árbol de regresión utilizando todo el conjunto de datos. Para cultivar árboles no sesgados, especifique el uso de la prueba de curvatura para dividir los predictores. Dado que faltan valores en los datos, especifique el uso de divisiones sustitutas.

Mdl = fitrtree(X,'MPG','PredictorSelection','curvature','Surrogate','on');

Calcule los valores de importancia del predictor sumando los cambios en el riesgo debido a las divisiones en cada predictor y dividiendo la suma por el número de nodos de bifurcación. Compare las estimaciones utilizando un gráfico de barras.

imp = predictorImportance(Mdl);  figure; bar(imp); title('Predictor Importance Estimates'); ylabel('Estimates'); xlabel('Predictors'); h = gca; h.XTickLabel = Mdl.PredictorNames; h.XTickLabelRotation = 45; h.TickLabelInterpreter = 'none';

En este caso, es el predictor más importante, seguido de.DisplacementHorsepower

cultiva árboles de decisión de forma predeterminada.fitrtree Construye un árbol más superficial que requiera menos pases a través de una matriz alta. Utilice el argumento de par nombre-valor para controlar la profundidad máxima del árbol.'MaxDepth'

Cargue el conjunto de datos.carsmall Considere, y como predictores de la respuesta.DisplacementHorsepowerWeightMPG

load carsmall X = [Displacement Horsepower Weight];

Convierta las matrices en memoria y las matrices altas.XMPG

tx = tall(X);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). 
ty = tall(MPG);

Al ejecutar cálculos en matrices altas, el entorno de ejecución predeterminado utiliza la sesión de MATLAB local o un grupo paralelo local (si tiene Parallel Computing Toolbox™). Puede utilizar la función para cambiar el entorno de ejecución.mapreducer En este caso, el ejemplo utiliza el entorno predeterminado.

Cultivar un árbol de regresión utilizando todas las observaciones. Permita que el árbol crezca hasta la máxima profundidad posible.

Para reproducibilidad, establezca las semillas de los generadores de números aleatorios utilizando y.rngtallrng Los resultados pueden variar en función del número de trabajadores y del entorno de ejecución de los arrays altos. Para obtener más información, consulte.Controle dónde se ejecuta el código (MATLAB)

rng('default')  tallrng('default') Mdl = fitrtree(tx,ty);
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.52 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.52 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.59 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.48 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.59 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec 

Ver el árbol entrenado.Mdl

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

es un árbol de profundidad.Mdl8

Calcule el error medio cuadrado de la muestra.

MSE_Mdl = loss(Mdl,tx,ty)
MSE_Mdl =    tall double      4.9078 

Cultivar un árbol de regresión utilizando todas las observaciones. Limite la profundidad del árbol especificando una profundidad de árbol de maximium.4

Mdl2 = fitrtree(tx,ty,'MaxDepth',4);
Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec 

Ver el árbol entrenado.Mdl2

view(Mdl2,'Mode','graph')

Calcule el error medio cuadrado de la muestra.

MSE_Mdl2 = loss(Mdl2,tx,ty)
MSE_Mdl2 =    tall double      9.3903 

es un árbol menos complejo con una profundidad de 4 y un error cuadrado medio de la muestra que es mayor que el error cuadrado medio de.Mdl2Mdl

Optimice los hiperparámetros de un árbol de regresión automáticamente con una matriz alta. El conjunto de datos de ejemplo es el conjunto de datos.carsmall En este ejemplo se convierte el conjunto de datos en una matriz alta y se utiliza para ejecutar el procedimiento de optimización.

Cargue el conjunto de datos.carsmall Considere, y como predictores de la respuesta.DisplacementHorsepowerWeightMPG

load carsmall X = [Displacement Horsepower Weight];

Convierta las matrices en memoria y las matrices altas.XMPG

tx = tall(X);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). 
ty = tall(MPG);

Al ejecutar cálculos en matrices altas, el entorno de ejecución predeterminado utiliza la sesión de MATLAB local o un grupo paralelo local (si tiene Parallel Computing Toolbox™). Puede utilizar la función para cambiar el entorno de ejecución.mapreducer En este caso, el ejemplo utiliza el entorno predeterminado.

Optimice los hiperparámetros automáticamente mediante el argumento de par nombre-valor.'OptimizeHyperparameters' Busque el valor óptimo que minimiza la pérdida de validación cruzada de exclusión.'MinLeafSize' (Especificación de usos.)'auto''MinLeafSize' Para reproducibilidad, utilice la función de adquisición y establezca las semillas de los generadores de números aleatorios utilizando y.'expected-improvement-plus'rngtallrng Los resultados pueden variar en función del número de trabajadores y del entorno de ejecución de los arrays altos. Para obtener más información, consulte.Controle dónde se ejecuta el código (MATLAB)

rng('default')  tallrng('default') [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrtree(tx,ty,...     'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',struct('Holdout',0.3,...     'AcquisitionFunctionName','expected-improvement-plus'))

Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.18 sec |======================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |    1 | Best   |      3.2376 |      12.472 |      3.2376 |      3.2376 |            2 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec |    2 | Error  |         NaN |      4.4697 |         NaN |      3.2376 |           46 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.092 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.49 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec |    3 | Best   |      3.2342 |      8.3529 |      3.2342 |      3.2357 |           18 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec |    4 | Best   |      2.9244 |      10.078 |      2.9244 |       2.977 |            6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.09 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.18 sec |    5 | Accept |      3.2919 |      12.127 |      2.9244 |       3.172 |            4 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.091 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |    6 | Accept |      2.9504 |      10.124 |      2.9244 |      2.9244 |            8 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |    7 | Accept |      2.9498 |      9.8558 |      2.9244 |      2.9316 |            7 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |    8 | Accept |      2.9582 |      10.122 |      2.9244 |      2.9245 |           10 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.092 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.5 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |    9 | Accept |      3.3095 |      13.867 |      2.9244 |      2.9245 |            1 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   10 | Accept |      2.9582 |      9.9676 |      2.9244 |      2.9248 |            9 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.2 sec |   11 | Accept |      3.0115 |      10.309 |      2.9244 |      2.9247 |           12 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.097 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   12 | Accept |      3.0677 |      5.8924 |      2.9244 |      2.9245 |           32 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.11 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.46 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.19 sec |   13 | Error  |         NaN |      4.4099 |      2.9244 |      2.9245 |           39 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   14 | Accept |      2.9244 |      9.8586 |      2.9244 |      2.9244 |            6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.085 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   15 | Accept |      2.9244 |      9.8685 |      2.9244 |      2.9244 |            6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.12 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.48 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   16 | Accept |      2.9244 |      10.225 |      2.9244 |      2.9244 |            6 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.096 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   17 | Accept |      3.3005 |      6.1228 |      2.9244 |      2.9244 |           25 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.093 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   18 | Accept |      3.1854 |      11.795 |      2.9244 |      2.9244 |            3 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.16 sec |   19 | Best   |      2.8161 |      9.8982 |      2.8161 |      2.8161 |            5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   20 | Accept |      2.8161 |      9.9123 |      2.8161 |      2.8161 |            5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.13 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |======================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |   21 | Accept |      2.8161 |      10.113 |      2.8161 |      2.8161 |            5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.087 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   22 | Accept |      2.8161 |      9.8916 |      2.8161 |      2.8161 |            5 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.088 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   23 | Accept |      3.2342 |      8.1838 |      2.8161 |      2.8161 |           15 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.084 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   24 | Error  |         NaN |      3.8862 |      2.8161 |      2.8161 |           43 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.095 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   25 | Accept |      3.2342 |      7.9812 |      2.8161 |      2.8161 |           21 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.084 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.38 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   26 | Error  |         NaN |      3.8838 |      2.8161 |      2.8161 |           34 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.086 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.47 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   27 | Accept |      3.3005 |      5.9523 |      2.8161 |      2.8161 |           29 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   28 | Accept |      3.2342 |      7.9259 |      2.8161 |      2.8161 |           13 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.093 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.4 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.43 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.42 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.15 sec |   29 | Accept |      2.9565 |      9.9316 |      2.8161 |      2.8161 |           11 | Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.098 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.45 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.17 sec |   30 | Accept |      3.5557 |      6.1465 |      2.8161 |      2.8161 |           23 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 292.6074 seconds. Total objective function evaluation time: 263.6231  Best observed feasible point:     MinLeafSize     ___________           5       Observed objective function value = 2.8161 Estimated objective function value = 2.8161 Function evaluation time = 9.8982  Best estimated feasible point (according to models):     MinLeafSize     ___________           5       Estimated objective function value = 2.8161 Estimated function evaluation time = 10.2924  Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.39 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.44 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec Evaluating tall expression using the Parallel Pool 'local': Evaluation completed in 0.41 sec 
Mdl =    classreg.learning.regr.CompactRegressionTree              ResponseName: 'Y'     CategoricalPredictors: []         ResponseTransform: 'none'     Properties, Methods  
FitInfo = struct with no fields.
HyperparameterOptimizationResults =    BayesianOptimization with properties:                        ObjectiveFcn: @createObjFcn/tallObjFcn               VariableDescriptions: [3×1 optimizableVariable]                            Options: [1×1 struct]                       MinObjective: 2.8161                    XAtMinObjective: [1×1 table]              MinEstimatedObjective: 2.8161           XAtMinEstimatedObjective: [1×1 table]            NumObjectiveEvaluations: 30                   TotalElapsedTime: 292.6074                          NextPoint: [1×1 table]                             XTrace: [30×1 table]                     ObjectiveTrace: [30×1 double]                   ConstraintsTrace: []                      UserDataTrace: {30×1 cell}       ObjectiveEvaluationTimeTrace: [30×1 double]                 IterationTimeTrace: [30×1 double]                         ErrorTrace: [30×1 double]                   FeasibilityTrace: [30×1 logical]        FeasibilityProbabilityTrace: [30×1 double]                IndexOfMinimumTrace: [30×1 double]              ObjectiveMinimumTrace: [30×1 double]     EstimatedObjectiveMinimumTrace: [30×1 double]  

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificado como una tabla. Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.Tbl Opcionalmente, puede contener una columna adicional para la variable de respuesta.Tbl 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 y desea utilizar todas las variables restantes como predictores, especifique la variable de respuesta mediante.TblTblResponseVarName

Si contiene la variable de respuesta y desea usar solo un subconjunto de las variables restantes como predictores, especifique una fórmula mediante.TblTblFórmula

Si no contiene la variable de respuesta, especifique una variable de respuesta mediante.TblY La longitud de la variable de respuesta y el número de filas en debe ser igual.Tbl

Tipos de datos: table

Nombre de variable de respuesta, especificado como el nombre de una variable en.Tbl La variable de respuesta debe ser un vector numérico.

Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si almacena la variable de respuesta como, a continuación, especifíquese como.TblYTbl.Y'Y' De lo contrario, el software trata todas las columnas de, incluidos, como predictores al entrenar el modelo.TblY

Tipos de datos: char | string

Modelo explicativo de la respuesta y un subconjunto de las variables predictoras, especificadas como un vector de caracteres o un escalar de cadena en el formulario.'Y~X1+X2+X3' En este formulario, representa la variable de respuesta y, y representa las variables predictoras.YX1X2X3 Las variables deben ser nombres de variable en ().TblTbl.Properties.VariableNames

Para especificar un subconjunto de variables como predictores para entrenar el modelo, utilice una fórmula.Tbl Si especifica una fórmula, el software no utiliza ninguna variable en la que no aparezcan.TblFórmula

Tipos de datos: char | string

Datos de respuesta, especificados como un vector de columna numérico con el mismo número de filas que.X Cada entrada es la respuesta a los datos en la fila correspondiente de.YX

El software considera que faltan valores en los valores. no utiliza observaciones con valores faltantes para el ajuste.NaNYfitrtreeY

Tipos de datos: single | double

Datos de predictor, especificados como una matriz numérica. Cada columna de representa una variable, y cada fila representa una observación.X

considera los valores como valores faltantes. no utiliza observaciones con todos los valores faltantes para el ajuste. utiliza observaciones con algunos valores faltantes para encontrar divisiones en variables para las que estas observaciones tienen valores válidos.fitrtreeNaNXfitrtreeXfitrtreeX

Tipos de datos: single | double

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

Ejemplo: especifica un árbol de regresión con validación cruzada con un mínimo de 30 observaciones por nodo de bifurcación.'CrossVal','on','MinParentSize',30

Nota

No puede usar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters' Solo puede modificar la validación cruzada mediante el argumento de par nombre-valor.'OptimizeHyperparameters''HyperparameterOptimizationOptions'

Parámetros del modelo

contraer todo

Lista de predictores categóricos, especificada como el par separado por comas que consta de y uno de los valores de esta tabla.'CategoricalPredictors'

ValorDescripción
Vector de enteros positivosUna entrada en el vector es el valor de índice correspondiente a la columna de los Datos predictores (o) que contiene una variable categórica.XTbl
Vector lógicoUna entrada significa que la columna correspondiente de Datos predictores (o) es una variable categórica.trueXTbl
Matriz de caracteresCada fila de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas.PredictorNames Pad los nombres con espacios en blanco adicionales por lo que cada fila de la matriz de caracteres tiene la misma longitud.
Matriz de cadenas o matriz de vectores de caracteresCada elemento de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas.PredictorNames
todosTodos los predictores son categóricos.

De forma predeterminada, si los Datos predictores están en una tabla (),Tbl fitrtree asume que una variable es categórica si contiene valores lógicos, valores categóricos, una matriz de cadenas o una matriz de vectores de caracteres. Si los Datos predictores son una matriz (),X fitrtree asume que todos los predictores son continuos. Para identificar los predictores categóricos cuando los datos son una matriz, utilice el argumento de par nombre-valor.'CategoricalPredictors'

Ejemplo: 'CategoricalPredictors','all'

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

Profundidad de árbol máxima, especificada como el par separado por comas que consta de un entero positivo.'MaxDepth' Especifique un valor para este argumento para devolver un árbol que tiene menos niveles y requiere menos pases a través de la matriz de alto para calcular. Por lo general, el algoritmo de toma un paso a través de los datos y una pasada adicional para cada nivel de árbol.fitrtree De forma predeterminada, la función no establece una profundidad de árbol máxima.

Nota

Esta opción solo se aplica cuando se utiliza en matrices altas.fitrtree Consulte para obtener más información.Tall arrays

Marca de combinación de hojas, especificada como el par separado por comas que consta de y o.'MergeLeaves''on''off'

Si es así,MergeLeaves'on' fitrtree:

  • Fusiona las hojas que se originan en el mismo nodo primario y producen una suma de valores de riesgo mayor o igual que el riesgo asociado con el nodo primario

  • Estima la secuencia óptima de los subárboles podados, pero no poda el árbol de regresión

Lo contrario fitrtree no fusiona hojas.

Ejemplo: 'MergeLeaves','off'

Número mínimo de observaciones de nodo de bifurcación, especificadas como el par separado por comas y que consta de un valor entero positivo.'MinParentSize' Cada nodo de ramificación del árbol tiene al menos observaciones.MinParentSize Si usted suministra ambos y, utiliza el ajuste que da hojas más grandes:.MinParentSizeMinLeafSizefitrtreeMinParentSize = max(MinParentSize,2*MinLeafSize)

Ejemplo: 'MinParentSize',8

Tipos de datos: single | double

Número de bins para predictores numéricos, especificados como el par separado por comas que consta de un escalar entero positivo.'NumBins'

  • Si el valor está vacío (predeterminado), el software no bin ningún predictores.'NumBins'

  • Si especifica el valor como un escalar entero positivo, las ubicaciones de software cada predictor numérico en un número especificado de bins equiprobables y, a continuación, crece árboles en los índices de ubicación en lugar de los datos originales.'NumBins'

    • Si el valor excede el número () de valores únicos para un predictor,'NumBins'u fitrtree bins el predictor en bins.u

    • fitrtree no bin predictores categóricos.

Cuando se utiliza un conjunto de datos de entrenamiento de gran tamaño, esta opción de discretización acelera el entrenamiento, pero provoca una posible disminución de la precisión. Usted puede probar primero, y luego cambiar el valor dependiendo de la precisión y la velocidad de entrenamiento.'NumBins',50'NumBins'

Un modelo entrenado almacena los bordes de la ubicación en la propiedad.BinEdges

Ejemplo: 'NumBins',50

Tipos de datos: single | double

Los nombres de variables predictoras, especificados como el par separado por comas que consta de y una matriz de cadenas de nombres únicos o matriz de celdas de vectores de caracteres únicos.'PredictorNames' La funcionalidad de depende de la forma en que proporcione los datos de entrenamiento.'PredictorNames'

  • Si se suministra y, a continuación, se puede utilizar para dar las variables predictoras en los nombres.XY'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de las columnas de.PredictorNamesX Es decir, es el nombre de, es el nombre de, y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) También, y debe ser igual.size(X,2)numel(PredictorNames)

    • De forma predeterminada, es.PredictorNames{'x1','x2',...}

  • Si usted suministra, entonces usted puede utilizar para elegir qué variables predictoras a utilizar en el entrenamiento.Tbl'PredictorNames' Es decir fitrtree utiliza únicamente las variables predictoras y la variable de respuesta en el entrenamiento.PredictorNames

    • debe ser un subconjunto de y no puede incluir el nombre de la variable de respuesta.PredictorNamesTbl.Properties.VariableNames

    • De forma predeterminada, contiene los nombres de todas las variables predictoras.PredictorNames

    • Es una buena práctica para especificar los predictores para el entrenamiento utilizando cualquiera o sólo.'PredictorNames'Fórmula

Ejemplo: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Tipos de datos: string | cell

Algoritmo utilizado para seleccionar el mejor predictor dividido en cada nodo, especificado como el par separado por comas que consta de y un valor en esta tabla.'PredictorSelection'

ValorDescripción
'allsplits'

CARRITO estándar: selecciona el predictor dividido que maximiza la ganancia de criterio dividido sobre todas las posibles divisiones de todos los predictores.[1]

'curvature': Selecciona el predictor dividido que minimiza el valor de las pruebas de Chi-cuadrado de independencia entre cada predictor y la respuesta.Prueba de curvaturap[2] La velocidad de entrenamiento es similar al carrito estándar.
'interaction-curvature': Elige el predictor dividido que minimiza el valor de las pruebas de independencia de Chi-cuadrado entre cada predictor y la respuesta (es decir, realiza pruebas de curvatura), y que minimiza el valor de una prueba de Chi-cuadrado de independencia entre cada par de predictores y respuesta.Prueba de interacciónpp[2] La velocidad de entrenamiento puede ser más lenta que la CART estándar.

Para y, si todas las pruebas de rendimiento-valores mayores que 0,05, a continuación,'curvature''interaction-curvature'p fitrtree detiene la división de nodos.

Sugerencia

  • El carrito estándar tiende a seleccionar predictores divididos que contienen muchos valores distintos, por ejemplo, variables continuas, sobre aquellos que contienen pocos valores distintos, por ejemplo, variables categóricas.[3] Considere la posibilidad de especificar la curvatura o la prueba de interacción si se cumple alguna de las siguientes acciones:

    • Si hay predictores que tienen relativamente menos valores distintos que otros predictores, por ejemplo, si el conjunto de datos del predictor es heterogéneo.

    • Si un análisis de la importancia del predictor es su objetivo. Para obtener más información sobre la estimación de importancia predictora, consulte predictorImportance.

  • Los árboles cultivados con CART estándar no son sensibles a las interacciones variables predictoras. Además, estos árboles tienen menos probabilidades de identificar variables importantes en presencia de muchos predictores irrelevantes que la aplicación de la prueba de interacción. Por lo tanto, para tener en cuenta las interacciones predictoras e identificar las variables de importancia en presencia de muchas variables irrelevantes, especifique la prueba de interacción.

  • La velocidad de predicción no se ve afectada por el valor de.'PredictorSelection'

Para obtener más información sobre cómo fitrtree selecciona los predictores divididos, vea y.Reglas de división de nodosElija la técnica dividir predictor selección

Ejemplo: 'PredictorSelection','curvature'

Marque para estimar la secuencia óptima de los subárboles podados, especificados como el par separado por comas que consiste en y o.'Prune''on''off'

Si es así,Prune'on' fitrtree crece el árbol de regresión y estima la secuencia óptima de subárboles podados, pero no podar el árbol de regresión. Lo contrario fitrtree crece el árbol de regresión sin estimar la secuencia óptima de subárboles podados.

Para podar un árbol de regresión entrenado, pase el árbol de regresión a prune.

Ejemplo: 'Prune','off'

Criterio de poda, especificado como el par separado por comas que consta de y.'PruneCriterion''mse'

Tolerancia de error cuadrática por nodo, especificada como el par separado por comas que consta de y un valor escalar positivo.'QuadraticErrorTolerance' La función deja de dividir los nodos cuando el error medio cuadrado ponderado por nodo desciende por debajo, donde está el error cuadrático medio ponderado de todas las respuestas calculadas antes de aumentar el árbol de decisión.QuadraticErrorTolerance*εεn

ε=i=1nwi(yiy¯)2.

Wi es el peso de la observación, dado que los pesos de todas las observaciones suman a uno (ii=1nwi=1), y

y¯=i=1nwiyi

es el promedio ponderado de todas las respuestas.

Para obtener más información sobre la división de nodos, consulte.Reglas de división de nodos

Ejemplo: 'QuadraticErrorTolerance',1e-4

Marcar para exigir la reproducibilidad en ejecuciones repetidas de entrenamiento de un modelo, especificado como el par separado por comas que consta de y cualquiera o.'Reproducible'falsetrue

Si no es así, entonces el software selecciona predictores aleatoriamente para cada división.'NumVariablesToSample''all' Para reproducir las selecciones aleatorias, debe especificar y establecer la inicialización del generador de números aleatorios mediante.'Reproducible',truerng Tenga en cuenta que la configuración puede ralentizar el entrenamiento.'Reproducible'true

Ejemplo: 'Reproducible',true

Tipos de datos: logical

Nombre de variable de respuesta, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'ResponseName'

  • Si proporciona, puede usar para especificar un nombre para la variable de respuesta.Y'ResponseName'

  • Si usted suministra o, entonces usted no puede utilizar.ResponseVarNameFórmula'ResponseName'

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Transformación de respuesta, especificada como el par separado por comas que consta de y uno o un identificador de función.'ResponseTransform''none' El valor predeterminado es, que significa, o ninguna transformación.'none'@(y)y Para una función o una función que defina, utilice su manejador de funciones.MATLAB® El identificador de función debe aceptar un vector (los valores de respuesta originales) y devolver un vector del mismo tamaño (los valores de respuesta transformados).

Ejemplo: Supongamos que crea un identificador de función que aplica una transformación exponencial a un vector de entrada mediante el uso de.myfunction = @(y)exp(y) A continuación, puede especificar la transformación de respuesta como.'ResponseTransform',myfunction

Tipos de datos: char | string | function_handle

Criterio de división, especificado como el par separado por comas que consta de y, lo que significa error cuadrado medio.'SplitCriterion''MSE'

Ejemplo: 'SplitCriterion','MSE'

Se divide la bandera de la decisión de suplente, especificada como el par separado por comas que consta de y,,, o un entero positivo.'Surrogate''on''off''all'

  • Cuando, encuentra como máximo 10 divisiones sustitutas en cada nodo de bifurcación.'on'fitrtree

  • Cuando se establece en un entero positivo, encuentra como máximo el número especificado de divisiones sustitutas en cada nodo de bifurcación.fitrtree

  • Cuando se establece en, busca todas las divisiones sustitutas en cada nodo de bifurcación.'all'fitrtree El ajuste puede utilizar mucho tiempo y memoria.'all'

Use divisiones sustitutas para mejorar la precisión de las predicciones para los datos con valores faltantes. La configuración también le permite calcular medidas de asociación predictiva entre predictores.

Ejemplo: 'Surrogate','on'

Tipos de datos: single | double | char | string

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector de valores escalares o el nombre de una variable.'Weights'Tbl El software pondera las observaciones en cada fila o con el valor correspondiente en.XTblWeights El tamaño de debe ser igual al número de filas en o.WeightsXTbl

Si especifica los datos de entrada como una tabla, puede ser el nombre de una variable que contenga un vector numérico.TblWeightsTbl En este caso, debe especificar como un vector de caracteres o un escalar de cadena.Weights Por ejemplo, si el vector de ponderaciones se almacena como, a continuación, especifíquese como.WTbl.W'W' De lo contrario, el software trata todas las columnas de, incluidos, como predictores al entrenar el modelo.TblW

Normaliza los pesos de cada clase para sumar 1.fitrtree

Tipos de datos: single | double | char | string

Validación cruzada

contraer todo

Indicador de validación cruzada, especificado como el par separado por comas que consta de y cualquiera o.'CrossVal''on''off'

Si, crece un árbol de decisión con validación cruzada con 10 pliegues.'on'fitrtree Puede invalidar esta configuración de validación cruzada mediante uno de los argumentos de par nombre-valor, o Name.'KFold''Holdout''Leaveout''CVPartition' Solo puede utilizar una de estas cuatro opciones (,, o) en un momento al crear un árbol con validación cruzada.'KFold''Holdout''Leaveout''CVPartition'

Alternativamente, valide de forma cruzada más adelante usando eltree crossval Método.

Ejemplo: 'CrossVal','on'

Partición para el árbol con validación cruzada, especificado como el par separado por comas que consta de y un objeto creado con.'CVPartition'cvpartition

Si lo usa, no puede usar ninguno de los argumentos de par nombre-valor.'CVPartition''KFold''Holdout''Leaveout'

Fracción de datos utilizada para la validación de exclusión, especificada como el par separado por comas que consta de y un valor escalar en el intervalo.'Holdout'[0,1] La validación de exclusión prueba la fracción especificada de los datos y usa el resto de los datos para el entrenamiento.

Si lo usa, no puede usar ninguno de los argumentos de par nombre-valor.'Holdout''CVPartition''KFold''Leaveout'

Ejemplo: 'Holdout',0.1

Tipos de datos: single | double

Número de pliegues que se utilizarán en un árbol con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo mayor que 1.'KFold'

Si lo usa, no puede usar ninguno de los argumentos de par nombre-valor.'KFold''CVPartition''Holdout''Leaveout'

Ejemplo: 'KFold',8

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de, o bien, o.'Leaveout''on''off Utilice la validación cruzada de Leave-One-out estableciendo en.'on'

Si lo usa, no puede usar ninguno de los argumentos de par nombre-valor.'Leaveout''CVPartition''Holdout''KFold'

Ejemplo: 'Leaveout','on'

Hiperparámetros

contraer todo

Número máximo de divisiones de decisión (o nodos de bifurcación), especificadas como el par separado por comas y que consta de un entero positivo.'MaxNumSplits' fitrtree divide o menos nodos de bifurcación.MaxNumSplits Para obtener más información sobre el comportamiento de división, consulte.Tree Depth control

Ejemplo: 'MaxNumSplits',5

Tipos de datos: single | double

Número mínimo de observaciones de nodo de hoja, especificadas como el par separado por comas que consta de un valor entero positivo y un.'MinLeafSize' Cada hoja tiene al menos observaciones por hoja de árbol.MinLeafSize Si usted suministra ambos y, utiliza el ajuste que da hojas más grandes:.MinParentSizeMinLeafSizefitrtreeMinParentSize = max(MinParentSize,2*MinLeafSize)

Ejemplo: 'MinLeafSize',3

Tipos de datos: single | double

Número de predictores para seleccionar aleatoriamente para cada división, especificado como el par separado por comas que consta de un valor entero positivo.'NumVariablesToSample' Como alternativa, puede especificar que se utilicen todos los predictores disponibles.'all'

Si los datos de entrenamiento incluyen muchos predictores y desea analizar la importancia del predictor, especifique as.'NumVariablesToSample''all' De lo contrario, el software podría no seleccionar algunos predictores, subestimar su importancia.

Para reproducir las selecciones aleatorias, debe establecer la inicialización del generador de números aleatorios utilizando y especificando.rng'Reproducible',true

Ejemplo: 'NumVariablesToSample',3

Tipos de datos: char | string | single | double

La optimización de hiperparámetros

contraer todo

Parámetros para optimizar, especificados como el par separado por comas que consta de uno de los siguientes:'OptimizeHyperparameters'

  • — No optimice.'none'

  • Uso.'auto'{'MinLeafSize'}

  • : Optimice todos los parámetros elegibles.'all'

  • Matriz de cadenas o matriz de celdas de nombres de parámetro elegibles.

  • Vector de objetos, normalmente la salida de.optimizableVariablehiperparámetros

La optimización intenta minimizar la pérdida de validación cruzada (error) para fitrtree variando los parámetros. Para controlar el tipo de validación cruzada y otros aspectos de la optimización, utilice el par nombre-valor.HyperparameterOptimizationOptions

Nota

valores reemplazan los valores que se establecen con otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, si se establece en hace que los valores se apliquen.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para fitrtree Ápice

  • MaxNumSplits fitrtree búsquedas entre enteros, de forma predeterminada se escala el registro en el rango.[1,max(2,NumObservations-1)]

  • MinLeafSize fitrtree búsquedas entre enteros, de forma predeterminada se escala el registro en el rango.[1,max(2,floor(NumObservations/2))]

  • : no optimiza este hiperparámetro.NumVariablesToSamplefitrtree Si pasa como un nombre de parámetro, simplemente utiliza el número completo de predictores.NumVariablesToSamplefitrtree Sin embargo, optimiza este hiperparámetro.fitrensemble

Establezca parámetros no predeterminados pasando un vector de objetos que tienen valores no predeterminados.optimizableVariable Por ejemplo,

load carsmall params = hyperparameters('fitrtree',[Horsepower,Weight],MPG); params(1).Range = [1,30];

Pase como el valor de.paramsOptimizeHyperparameters

De forma predeterminada, la visualización iterativa aparece en la línea de comandos y los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y los trazados, la función objetivo es log(1 + cross-validation loss) para la regresión y la tasa de clasificación errónea para la clasificación. Para controlar la visualización iterativa, establezca el campo del argumento de par nombre-valor.Verbose'HyperparameterOptimizationOptions' Para controlar los trazados, establezca el campo del argumento de par nombre-valor.ShowPlots'HyperparameterOptimizationOptions'

Para ver un ejemplo, vea.Optimizar árbol de regresión

Ejemplo: 'auto'

Opciones de optimización, especificadas como el par separado por comas que consta de una estructura.'HyperparameterOptimizationOptions' Este argumento modifica el efecto del argumento de par nombre-valor.OptimizeHyperparameters Todos los campos de la estructura son opcionales.

Nombre de campoValoresPredeterminado
Optimizer
  • — Utilice la optimización bayesiana.'bayesopt' Internamente, esta configuración llama.bayesopt

  • : Utilice la búsqueda de cuadrícula con valores por dimensión.'gridsearch'NumGridDivisions

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando.sortrows(Mdl.HyperparameterOptimizationResults)

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsNúmero máximo de evaluaciones de funciones objetivas.para o, y toda la rejilla para30'bayesopt''randomsearch''gridsearch'
MaxTime

Límite de tiempo, especificado como real positivo. El límite de tiempo es en segundos, medido por y.tictoc El tiempo de ejecución puede exceder porque no interrumpe las evaluaciones de funciones.MaxTimeMaxTime

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da el número de valores para cada dimensión, o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere.Parallel Computing Toolbox™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

Valor lógico que indica si se vuelve a particionar la validación cruzada en cada iteración. Si, el optimizador utiliza una sola partición para la optimización.false

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, creado por.cvpartitioncvpartitionSi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de exclusión.(0,1)
KfoldUn entero mayor que 1.

Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Tipos de datos: struct

Argumentos de salida

contraer todo

Árbol de regresión, devuelto como un objeto de árbol de regresión. El uso de los resultados de las opciones,,, o en un árbol de clase.'Crossval''KFold''Holdout''Leaveout''CVPartition'RegressionPartitionedModel No se puede utilizar un árbol particionado para la predicción, por lo que este tipo de árbol no tiene un método.Predecir

De lo contrario, es de clase, y se puede utilizar eltreeRegressionTree predict método para realizar predicciones.

Más acerca de

contraer todo

Prueba de curvatura

Es una prueba estadística que evalúa la hipótesis nula de que dos variables no están asociadas.prueba de curvatura

La prueba de curvatura entre la variable predictora y se lleva a cabo utilizando este proceso.xy

  1. Si es continuo, entonces particionarlo en sus cuarles.x Cree una variable nominal que bins las observaciones según la sección de la partición que ocupan. Si faltan valores, cree una ubicación adicional para ellos.

  2. Para cada nivel en el predictor particionado = 1... y la clase en la respuesta = 1,...,, calcular la proporción ponderada de las observaciones en la clasejJkKk

    π^jk=i=1nI{yi=k}wi.

    Wi es el peso de la observación,i wi=1, es la función indicadora, y es el tamaño de la muestra.In Si todas las observaciones tienen el mismo peso, entonces π^jk=njknDónde Njk es el número de observaciones en el nivel del predictor que están en la clase.jk

  3. Calcule la estadística de prueba

    t=nk=1Kj=1J(π^jkπ^j+π^+k)2π^j+π^+k

    π^j+=kπ^jk, es decir, la probabilidad marginal de observar el predictor a nivel.j π^+k=jπ^jk, esa es la probabilidad marginal de observar la clase.k Si es lo suficientemente grande, entonces se distribuye como unntχ2 con (– 1) (– 1) grados de libertad.KJ

  4. Si el-valor de la prueba es menor que 0,05, a continuación, rechazar la hipótesis nula de que no hay asociación entre y.pxy

Al determinar el mejor predictor dividido en cada nodo, el algoritmo CART estándar prefiere seleccionar predictores continuos que tienen muchos niveles. A veces, tal selección puede ser falsa y también puede enmascarar predictores más importantes que tienen menos niveles, como predictores categóricos.

La prueba de curvatura se puede aplicar en lugar de CART estándar para determinar el mejor predictor dividido en cada nodo. En ese caso, la mejor variable predictora de división es la que minimiza los valores significativos (aquellos menores de 0,05) de las pruebas de curvatura entre cada predictor y la variable de respuesta.p Esta selección es robusta para el número de niveles en predictores individuales.

Para obtener más información sobre cómo se aplica la prueba de curvatura a los árboles de regresión crecientes, consulte y.Reglas de división de nodos[3]

Prueba de interacción

Es una prueba estadística que evalúa la hipótesis nula de que no hay interacción entre un par de variables predictoras y la variable de respuesta.prueba de interacción

La prueba de interacción que evalúa la asociación entre variables predictorasx1 Yx2 con respecto a se lleva a cabo utilizando este proceso.y

  1. Six1 Ox2 es continua, luego particionar esa variable en sus cuarles. Cree una variable nominal que bins las observaciones según la sección de la partición que ocupan. Si faltan valores, cree una ubicación adicional para ellos.

  2. Cree la variable nominal con =zJJ1J2 niveles que asignan un índice a la observación según los niveles deix1 Yx2 pertenece. Eliminar cualquier nivel de que no correspondan a ninguna observación.z

  3. Conduzca un medio y.prueba de curvaturazy

Al cultivar árboles de decisión, si hay interacciones importantes entre pares de predictores, pero también hay muchos otros predictores menos importantes en los datos, el carrito estándar tiende a perderse las interacciones importantes. Sin embargo, la realización de pruebas de curvatura y de interacción para la selección de predictor puede mejorar la detección de interacciones importantes, lo que puede producir árboles de decisión más precisos.

Para obtener más información sobre cómo se aplica la prueba de interacción a los árboles de decisión en crecimiento, consulte y.Prueba de curvaturaReglas de división de nodos[2]

Medida predictiva de la Asociación

Es un valor que indica la similitud entre las reglas de decisión que dividen las observaciones.medida predictiva de asociación Entre todas las posibles divisiones de decisión que se comparan con la división óptima (encontrada por el crecimiento del árbol), el mejor rendimiento de la medida predictiva máxima de la asociación.División de decisión sustituta La segunda mejor división sustituta tiene la segunda mayor medida predictiva de asociación.

Supongo Xj Y Xk son variables predictoras y, respectivamente, y ≠.jkjk En el nodo, la medida predictiva de asociación entre la división óptimat Xj < y una división suplenteu Xk < isv

λjk=min(PL,PR)(1PLjLkPRjRk)min(PL,PR).

  • PL es la proporción de observaciones en el nodo, tal quet Xj < .u El subíndice representa el elemento secundario izquierdo del nodo.Lt

  • PR es la proporción de observaciones en el nodo, tal quet Xj ≥.u El subíndice representa el secundario correcto del nodo.Rt

  • PLjLk es la proporción de observaciones en el nodo, de tal forma quet Xj < andu Xk < .v

  • PRjRk es la proporción de observaciones en el nodo, de tal forma quet Xj ≥ yu Xk ≥.v

  • Observaciones con valores faltantes para Xj O Xk no contribuyen a los cálculos de la proporción.

Λjk es un valor en (– ∞, 1]. Si λjk > 0Entonces Xk < es una división sustituta que vale la pena parav Xj < .u

Decisión de suplentes splits

A es una alternativa a la división de decisión óptima en un nodo determinado en un árbol de decisión.División de decisión sustituta La división óptima se encuentra al cultivar el árbol; la división sustituta utiliza una variable predictora similar o correlacionada y un criterio de división.

Cuando falta el valor del predictor de división óptimo para una observación, la observación se envía al nodo secundario izquierdo o derecho utilizando el mejor predictor suplente. Cuando también falta el valor del mejor predictor de división suplente para la observación, la observación se envía al nodo secundario izquierdo o derecho utilizando el segundo mejor predictor suplente, y así sucesivamente. Las divisiones candidatas se ordenan en orden descendente por su.medida predictiva de asociación

Sugerencias

  • De forma predeterminada, es.Prune'on' Sin embargo, esta especificación no poda el árbol de regresión. Para podar un árbol de regresión entrenado, pase el árbol de regresión a prune.

  • Después de entrenar un modelo, puede generar código de C/C++ que predice las respuestas de los nuevos datos. La generación de código C/C++ requiere MATLABCoder™. Para obtener más información, consulte.Introducción a la generación de código

Algoritmos

contraer todo

Reglas de división de nodos

fitrtree utiliza estos procesos para determinar cómo dividir el nodo.t

  • Para el carrito estándar (es decir, si es) y para todos los predictoresPredictorSelection'allpairs' Xi, = 1,...,:ip

    1. fitrtree computa el error cuadrático medio ponderado (MSE) de las respuestas en el nodo usandot

      εt=jTwj(yjy¯t)2.

      Wj es el peso de la observación, y es el conjunto de todos los índices de observación en el nodo.jTt Si no especifica,Weights Wj = 1/, donde está el tamaño de la muestra.nn

    2. fitrtree estima la probabilidad de que una observación esté en el nodo utilizandot

      P(T)=jTwj.

    3. fitrtree Tipo Xi en orden ascendente. Cada elemento del predictor ordenado es un candidato de división o un punto de corte. fitrtree registra los índices correspondientes a los valores faltantes en el conjunto TU, que es el conjunto sin dividir.

    4. fitrtree determina la mejor manera de dividir el nodo mediantet Xi maximizando la reducción en MSE (Δ) sobre todos los candidatos de división.I Es decir, para todos los candidatos que se dividen en Xi:

      1. fitrtree divide las observaciones del nodo en nodos secundarios izquierdo y derecho (tTL Y TR, respectivamente).

      2. fitrtree calcula Δ. Supongamos que para un candidato de división en particular,I TL Y TR contienen índices de observación en los sets TL Y TRRespectivamente.

        • Si Xi no contiene ningún valor faltante, después la reducción en MSE para el candidato de división actual es

          ΔI=P(T)εtP(TL)εtLP(TR)εtR.

        • Si Xi contiene valores faltantes, entonces, suponiendo que las observaciones faltan al azar, la reducción en MSE es

          ΔIU=P(TTU)εtP(TL)εtLP(TR)εtR.

          T TU es el conjunto de todos los índices de observación en el nodo que no faltan.t

        • Si utiliza, entonces:decisión de sustitución se divide

          1. fitrtree calcula el entre la división de decisiónmedidas predictivas de asociación Xj < y todas las posibles divisiones de decisiónu Xk <, ≠.vjk

          2. fitrtree clasifica las posibles divisiones de decisión alternativas en orden descendente por su medida predictiva de asociación con la división óptima. La división sustituta es la división de decisión que cede la mayor medida.

          3. fitrtree decide las asignaciones de nodos secundarios para las observaciones con un valor que falta para Xi utilizando la división sustituta. Si el predictor suplente también contiene un valor que falta, fitrtree utiliza la división de decisión con la segunda medida más grande, y así sucesivamente, hasta que no haya otros sustitutos. Es posible fitrtree para dividir dos observaciones diferentes en el nodo utilizando dos divisiones sustitutas diferentes.t Por ejemplo, supongamos que los predictoresx1 Yx2 son los mejores y los segundos mejores sustitutos, respectivamente, para el predictor Xi, ∉ {1, 2}, en el nodo.it Si la observación del predictorm Xi falta (es decir, Xmi falta), peroxm1 no falta, entoncesx1 es el predictor sustituto para la observación Xmi. Si las observacionesx(m + 1),i y (+ 1), faltan, peroxm1x(m + 1),2 no falta, entoncesx2 es el predictor sustituto para observación + 1.m

          4. fitrtree utiliza la fórmula de reducción MSE apropiada. Es decir, si fitrtree no puede asignar todas las observaciones faltantes en el nodo a los nodos secundarios usando las divisiones sustitutas, después la reducción MSE es ΔtMeU. Lo contrario fitrtree utiliza Δ para la reducción MSE.I

      3. fitrtree elige el candidato que produce la mayor reducción de MSE.

    fitrtree divide la variable predictora en el punto de corte que maximiza la reducción MSE.

  • Para la prueba de curvatura (es decir, si es):PredictorSelection'curvature'

    1. fitrtree calcula los residuos rti=ytiy¯t para todas las observaciones en el nodo.t y¯t=1iwiiwiyti, que es el promedio ponderado de las respuestas en el nodo.t Los pesos son los pesos de observación.Weights

    2. fitrtree asigna observaciones a uno de los dos bins según el signo de los residuos correspondientes. Dejar Zt ser una variable nominal que contenga las asignaciones de ubicación para las observaciones en el nodo.t

    3. fitrtree realiza entre cada predictor ypruebas de curvatura Zt. Para árboles de regresión, = 2.K

      • Si todos los valores son al menos 0,05,p fitrtree no divide el nodo.t

      • Si hay un valor mínimo,p fitrtree elige el predictor correspondiente para dividir el nodo.t

      • Si más de un valor es cero debido al subdesbordamiento,p fitrtree aplica CART estándar a los predictores correspondientes para elegir el predictor dividido.

    4. Si fitrtree elige un predictor dividido, entonces utiliza el carrito estándar para elegir el punto de corte (consulte el paso 4 en el proceso estándar de CART).

  • Para la prueba de interacción (es decir, si es):PredictorSelection'interaction-curvature'

    1. Para observaciones en el nodo,t fitrtree realiza entre cada predictor y la respuesta y entre cada par de predictores y la respuesta.pruebas de curvaturapruebas de interacción

      • Si todos los valores son al menos 0,05,p fitrtree no divide el nodo.t

      • Si hay un valor mínimo y es el resultado de una prueba de curvatura,p fitrtree elige el predictor correspondiente para dividir el nodo.t

      • Si hay un valor mínimo y es el resultado de una prueba de interacción,p fitrtree elige el predictor dividido utilizando CART estándar en el par correspondiente de predictores.

      • Si más de un valor es cero debido al subdesbordamiento,p fitrtree aplica CART estándar a los predictores correspondientes para elegir el predictor dividido.

    2. Si fitrtree elige un predictor dividido, entonces utiliza el carrito estándar para elegir el punto de corte (consulte el paso 4 en el proceso estándar de CART).

Tree Depth control

  • Si es y es (que son los valores predeterminados para estos argumentos del par del nombre-valor), después el software aplica el recorte solamente a las hojas y usando el MSE.MergeLeaves'on'PruneCriterion'mse' Esta especificación equivale a fusionar hojas provenientes del mismo nodo padre cuyo MSE es como máximo la suma del MSE de sus dos hojas.

  • Para acomodar,MaxNumSplits fitrtree divide todos los nodos de la actual y, a continuación, cuenta el número de nodos de bifurcación.Capa Una capa es el conjunto de nodos que son equidistantes del nodo raíz. Si el número de nodos de bifurcación supera,MaxNumSplits fitrtree sigue este procedimiento:

    1. Determine cuántos nodos de bifurcación de la capa actual se deben separar para que haya en la mayoría de los nodos de bifurcación.MaxNumSplits

    2. Ordene los nodos de la rama por sus ganancias de impureza.

    3. Desdivida el número de ramas menos exitosas.

    4. Devuelva el árbol de decisión crecido hasta el momento.

    Este procedimiento produce árboles con un equilibrio máximo.

  • El software divide los nodos de bifurcación capa por capa hasta que se produzca al menos uno de estos eventos:

    • Hay nodos de bifurcación.MaxNumSplits

    • Una división propuesta hace que el número de observaciones en al menos un nodo de bifurcación sea menor que.MinParentSize

    • Una división propuesta hace que el número de observaciones en al menos un nodo hoja sea menor que.MinLeafSize

    • El algoritmo no puede encontrar una buena división dentro de una capa (es decir, el criterio de poda (ver), no mejora para todas las divisiones propuestas en una capa).PruneCriterion Un caso especial es cuando todos los nodos son puros (es decir, todas las observaciones en el nodo tienen la misma clase).

    • Para los valores o de, todas las pruebas yield-valores mayores que 0,05.'curvature''interaction-curvature'PredictorSelectionp

    y no afectan a la división en sus valores predeterminados.MaxNumSplitsMinLeafSize Por lo tanto, si establece, la división podría detenerse debido al valor de, antes de que se produzcan divisiones.'MaxNumSplits'MinParentSizeMaxNumSplits

Paralelización

Para sistemas de doble núcleo y superiores, fitrtree paraleliza los árboles de decisión de entrenamiento mediante subprocesos Building Blocks (TBB).Intel® Para obtener más información sobre TBB, consulte.Intelhttps://software.intel.com/en-us/intel-tbb

Referencias

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

[2] Loh, W.Y. “Regression Trees with Unbiased Variable Selection and Interaction Detection.” Statistica Sinica, Vol. 12, 2002, pp. 361–386.

[3] Loh, W.Y. and Y.S. Shih. “Split Selection Methods for Classification Trees.” Statistica Sinica, Vol. 7, 1997, pp. 815–840.

Capacidades ampliadas

Introducido en R2014a