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.

fitrensemble

Ajuste conjunto de estudiantes para la regresión

Descripción

ejemplo

Mdl = fitrensemble(Tbl,ResponseVarName) Devuelve el objeto de modelo de conjunto de regresión entrenado () que contiene los resultados de aumentar 100 árboles de regresión mediante LSBoost y los datos de predicción y respuesta de la tabla. es el nombre de la variable de respuesta en.MdlTblResponseVarNameTbl

ejemplo

Mdl = fitrensemble(Tbl,formula) se aplica para ajustar el modelo a los datos de predicción y respuesta de la tabla. es un modelo explicativo de la respuesta y un subconjunto de variables predictoras en uso para ajustarse.FórmulaTblFórmulaTblMdl Por ejemplo, se ajusta a la variable de respuesta como una función de las variables predictoras y.'Y~X1+X2+X3'Tbl.YTbl.X1Tbl.X2Tbl.X3

ejemplo

Mdl = fitrensemble(Tbl,Y) trata todas las variables de la tabla como variables predictoras. es el vector de respuestas que no está en.TblYTbl

ejemplo

Mdl = fitrensemble(X,Y) utiliza los Datos predictores en la matriz y los datos de respuesta en el vector.XY

ejemplo

Mdl = fitrensemble(___,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par y cualquiera de los argumentos de entrada en las sintaxis anteriores.Name,Value Por ejemplo, puede especificar el número de ciclos de aprendizaje, el método de agregación de conjunto o implementar la validación cruzada de 10 veces.

Ejemplos

contraer todo

Cree un conjunto de regresión que predice la economía de combustible de un automóvil dado el número de cilindros, el volumen desplazado por los cilindros, la potencia y el peso. Luego, entrena a otro conjunto usando menos predictores. Compare las precisiones predictivas en la muestra de los conjuntos.

Cargue el conjunto de datos.carsmall Almacene las variables que se utilizarán en la formación de una tabla.

load carsmall Tbl = table(Cylinders,Displacement,Horsepower,Weight,MPG);

Entrena un conjunto de regresión.

Mdl1 = fitrensemble(Tbl,'MPG');

es un modelo.Mdl1RegressionEnsemble Algunas características notables de son:Mdl1

  • El algoritmo de agregación del conjunto es.'LSBoost'

  • Dado que el método de agregación de conjunto es un algoritmo de impulso, los árboles de regresión que permiten un máximo de 10 divisiones componen el conjunto.

  • 100 árboles componen el conjunto.

Dado que es una variable en el área de trabajo de MATLAB®, puede obtener el mismo resultado introduciendoMPG

Mdl1 = fitrensemble(Tbl,MPG);

Utilice el conjunto de regresión entrenado para predecir el ahorro de combustible para un coche de cuatro cilindros con un desplazamiento de 200 pulgadas cúbicas, 150 caballos de fuerza y un peso de 3000 lbs.

pMPG = predict(Mdl1,[4 200 150 3000])
pMPG = 25.6467 

Entrena un nuevo conjunto usando todos los predictores en excepto.TblDisplacement

formula = 'MPG ~ Cylinders + Horsepower + Weight'; Mdl2 = fitrensemble(Tbl,formula);

Compare los MSEs de reenvío entre y.Mdl1Mdl2

mse1 = resubLoss(Mdl1)
mse1 = 0.3096 
mse2 = resubLoss(Mdl2)
mse2 = 0.5861 

El MSE en-muestra para el conjunto que entrena en todos los predictores es más bajo.

Entrena un conjunto de árboles de regresión potenciado usando.fitrensemble Reduzca el tiempo de entrenamiento especificando el argumento de par nombre-valor para los predictores numéricos de bin.'NumBins' Después del entrenamiento, puede reproducir datos de predictor en bin utilizando la propiedad del modelo entrenado y la función.BinEdgesdiscretize

Genere un conjunto de datos de ejemplo.

rng('default') % For reproducibility N = 1e6; X1 = randi([-1,5],[N,1]); X2 = randi([5,10],[N,1]); X3 = randi([0,5],[N,1]); X4 = randi([1,10],[N,1]); X = [X1 X2 X3 X4]; y = X1 + X2 + X3 + X4 + normrnd(0,1,[N,1]);

Entrenar un conjunto de árboles de regresión potenciado mediante el aumento de mínimos cuadrados (, el valor predeterminado).LSBoost Tiempo de la función para fines de comparación.

tic Mdl1 = fitrensemble(X,y); toc
Elapsed time is 78.662954 seconds. 

Acelere el entrenamiento mediante el argumento de par nombre-valor.'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' El software no bin predictores categóricos.

tic Mdl2 = fitrensemble(X,y,'NumBins',50); toc
Elapsed time is 43.353208 seconds. 

El proceso es aproximadamente dos veces más rápido cuando se utilizan datos binned en lugar de los datos originales. Tenga en cuenta que el tiempo transcurrido puede variar en función del sistema operativo.

Compare los errores de regresión por reenvío.

rsLoss = resubLoss(Mdl1)
rsLoss = 1.0134 
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 1.0133 

En este ejemplo, los valores predictores de discretización reducen el tiempo de entrenamiento sin una pérdida significativa de precisión. En general, cuando tiene un conjunto de datos grande como el de este ejemplo, el uso de la opción de discretización acelera el entrenamiento, pero provoca una posible disminución de la precisión. Si desea reducir aún más el tiempo de entrenamiento, especifique un número menor de bins.

Reproduzca datos de predictor en bin utilizando la propiedad del modelo entrenado y la función.BinEdgesdiscretize

X = Mdl2.X; % Predictor data Xbinned = zeros(size(X)); edges = Mdl2.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 para los predictores categóricos.XbinnedXbinned0 Si contiene s, los valores correspondientes son s.XNaNXbinnedNaN

Estime el error de generalización de un conjunto de árboles de regresión potenciado.

Cargue el conjunto de datos.carsmall Elija el número de cilindros, el volumen desplazado por los cilindros, la potencia y el peso como predictores de ahorro de combustible.

load carsmall X = [Cylinders Displacement Horsepower Weight];

Valide de forma cruzada un conjunto de árboles de regresión utilizando la validación cruzada de 10 veces. Utilizando una plantilla de árbol de decisión, especifique que cada árbol debe ser una división solo una vez.

rng(1); % For reproducibility t = templateTree('MaxNumSplits',1); Mdl = fitrensemble(X,MPG,'Learners',t,'CrossVal','on');

es un modelo.MdlRegressionPartitionedEnsemble

Trace el acumulado, 10-Fold Cruz-validado, error medio cuadrado (MSE). Muestra el error de generalización estimado del conjunto.

kflc = kfoldLoss(Mdl,'Mode','cumulative'); figure; plot(kflc); ylabel('10-fold cross-validated MSE'); xlabel('Learning cycle');

 estGenError = kflc(end)
estGenError = 24.8521 

Devuelve el error de generalización de forma predeterminada.kfoldLoss Sin embargo, trazar la pérdida acumulada le permite monitorear cómo la pérdida cambia a medida que los estudiantes débiles se acumulan en el conjunto.

El conjunto logra un MSE de alrededor de 23,5 después de acumular alrededor de 30 estudiantes débiles.

Si está satisfecho con el error de generalización del conjunto, a continuación, para crear un modelo predictivo, entrenar el conjunto de nuevo utilizando todas las configuraciones excepto la validación cruzada. Sin embargo, es una buena práctica para ajustar hiperparámetros como el número máximo de divisiones de decisión por árbol y el número de ciclos de aprendizaje..

En este ejemplo se muestra cómo optimizar los hiperparámetros automáticamente mediante.fitrensemble El ejemplo utiliza los datos.carsmall

Cargue los datos.

load carsmall

Puede encontrar hiperparámetros que minimicen la pérdida de la validación cruzada de cinco veces mediante la optimización automática del hiperparámetro.

Mdl = fitrensemble([Horsepower,Weight],MPG,'OptimizeHyperparameters','auto') 

En este ejemplo, para la reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus' Además, para la reproducibilidad del algoritmo de bosque aleatorio, especifique el argumento de par nombre-valor como para los alumnos de árbol.'Reproducible'true

rng('default') t = templateTree('Reproducible',true); Mdl = fitrensemble([Horsepower,Weight],MPG,'OptimizeHyperparameters','auto','Learners',t, ...     'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))

|===================================================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Method | NumLearningC-|    LearnRate |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | ycles        |              |              | |===================================================================================================================================| |    1 | Best   |      2.9743 |      9.9614 |      2.9743 |      2.9743 |          Bag |          413 |            - |            1 | |    2 | Accept |      6.2619 |      1.5009 |      2.9743 |      3.6147 |      LSBoost |           57 |    0.0016067 |            6 | |    3 | Best   |      2.9562 |     0.77935 |      2.9562 |      2.9654 |          Bag |           32 |            - |            2 | |    4 | Accept |      4.1884 |      1.2819 |      2.9562 |      2.9573 |          Bag |           55 |            - |           40 | |    5 | Accept |      4.1881 |      6.0891 |      2.9562 |       2.957 |      LSBoost |          258 |     0.096683 |           50 | |    6 | Accept |      3.1479 |      1.8558 |      2.9562 |      2.9569 |      LSBoost |           75 |     0.092525 |            6 | |    7 | Accept |      3.7831 |      0.4946 |      2.9562 |      2.9568 |      LSBoost |           17 |      0.08882 |            1 | |    8 | Accept |      4.2759 |     0.38923 |      2.9562 |      2.9564 |      LSBoost |           12 |     0.094908 |            1 | |    9 | Accept |       3.124 |      4.3066 |      2.9562 |      2.9564 |      LSBoost |          157 |     0.083222 |            8 | |   10 | Accept |      3.6349 |      12.142 |      2.9562 |       2.991 |      LSBoost |          494 |     0.070612 |            2 | |   11 | Accept |      3.0526 |     0.26891 |      2.9562 |      2.9615 |          Bag |           10 |            - |            1 | |   12 | Accept |      3.1469 |      1.7301 |      2.9562 |      2.9627 |      LSBoost |           62 |      0.08423 |            4 | |   13 | Accept |      4.7629 |     0.50284 |      2.9562 |      2.9629 |      LSBoost |           21 |     0.055294 |           48 | |   14 | Accept |      4.1881 |      4.5671 |      2.9562 |      2.9629 |      LSBoost |          213 |      0.99467 |           46 | |   15 | Accept |      3.5337 |       1.597 |      2.9562 |      3.0164 |      LSBoost |           63 |      0.73987 |            1 | |   16 | Accept |      3.2481 |      1.3843 |      2.9562 |      2.9689 |      LSBoost |           59 |       0.2363 |            6 | |   17 | Accept |      2.9732 |      1.7983 |      2.9562 |      3.0016 |          Bag |           83 |            - |            1 | |   18 | Best   |      2.9361 |      10.498 |      2.9361 |      2.9648 |          Bag |          498 |            - |            2 | |   19 | Accept |      3.5859 |      2.9294 |      2.9361 |      2.9987 |      LSBoost |          123 |       0.1522 |            2 | |   20 | Accept |      2.9406 |      10.689 |      2.9361 |      2.9559 |          Bag |          496 |            - |            2 | |===================================================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Method | NumLearningC-|    LearnRate |  MinLeafSize | |      | result |             | runtime     | (observed)  | (estim.)    |              | ycles        |              |              | |===================================================================================================================================| |   21 | Accept |      2.9419 |      10.833 |      2.9361 |      2.9517 |          Bag |          491 |            - |            2 | |   22 | Accept |      5.7918 |      1.0162 |      2.9361 |      2.9525 |      LSBoost |           35 |    0.0094806 |            1 | |   23 | Accept |      5.9584 |       5.718 |      2.9361 |      2.9533 |      LSBoost |          272 |    0.0010255 |           50 | |   24 | Accept |      6.4218 |     0.29731 |      2.9361 |      2.9538 |      LSBoost |           10 |    0.0010003 |            1 | |   25 | Accept |      4.7662 |      4.7116 |      2.9361 |      2.9531 |      LSBoost |          202 |    0.0058776 |           50 | |   26 | Accept |      3.4231 |      4.8838 |      2.9361 |      2.9537 |      LSBoost |          208 |      0.99319 |            6 | |   27 | Accept |      5.6829 |     0.34583 |      2.9361 |       2.954 |      LSBoost |           13 |      0.02954 |            1 | |   28 | Accept |      4.7428 |      1.5779 |      2.9361 |       2.954 |      LSBoost |           72 |      0.01677 |           50 | |   29 | Accept |      5.9554 |      1.8831 |      2.9361 |      2.9544 |      LSBoost |           78 |    0.0031809 |            1 | |   30 | Accept |      4.1881 |      1.4461 |      2.9361 |      2.9547 |      LSBoost |           62 |      0.35508 |           50 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 167.549 seconds. Total objective function evaluation time: 107.4784  Best observed feasible point:     Method    NumLearningCycles    LearnRate    MinLeafSize     ______    _________________    _________    ___________       Bag             498              NaN            2       Observed objective function value = 2.9361 Estimated objective function value = 2.9547 Function evaluation time = 10.4983  Best estimated feasible point (according to models):     Method    NumLearningCycles    LearnRate    MinLeafSize     ______    _________________    _________    ___________       Bag             491              NaN            2       Estimated objective function value = 2.9547 Estimated function evaluation time = 10.8111 
Mdl =    classreg.learning.regr.RegressionBaggedEnsemble                          ResponseName: 'Y'                 CategoricalPredictors: []                     ResponseTransform: 'none'                       NumObservations: 94     HyperparameterOptimizationResults: [1×1 BayesianOptimization]                            NumTrained: 491                                Method: 'Bag'                          LearnerNames: {'Tree'}                  ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'                               FitInfo: []                    FitInfoDescription: 'None'                        Regularization: []                             FResample: 1                               Replace: 1                      UseObsForLearner: [94×491 logical]     Properties, Methods  

La optimización buscó en los métodos de regresión (y), sobre, sobre el para y sobre el aprendiz de árbol.BagLSBoostNumLearningCyclesLearnRateLSBoostMinLeafSize La salida es la regresión del conjunto con la pérdida de validación cruzada mínima estimada.

Una forma de crear un conjunto de árboles de regresión potenciados que tiene un rendimiento predictivo satisfactorio es ajustar el nivel de complejidad del árbol de decisión mediante la validación cruzada. Mientras busca un nivel de complejidad óptimo, ajuste la tasa de aprendizaje para minimizar el número de ciclos de aprendizaje también.

En este ejemplo se encuentran manualmente los parámetros óptimos mediante la opción de validación cruzada (el argumento de par nombre-valor) y la función.'KFold'kfoldLoss Como alternativa, puede usar el argumento de par nombre-valor para optimizar automáticamente los hiperparámetros.'OptimizeHyperparameters' Ver.Optimizar conjunto de regresión

Cargue el conjunto de datos.carsmall Elija el número de cilindros, el volumen desplazado por los cilindros, la potencia y el peso como predictores de ahorro de combustible.

load carsmall Tbl = table(Cylinders,Displacement,Horsepower,Weight,MPG);

Los valores predeterminados de los controladores de profundidad de árbol para aumentar los árboles de regresión son:

  • Para.10MaxNumSplits

  • Para5MinLeafSize

  • Para10MinParentSize

Para buscar el nivel de complejidad de árbol óptimo:

  1. Valide de forma cruzada un conjunto de conjuntos. Aumente exponencialmente el nivel de complejidad de árbol para los conjuntos subsiguientes desde el muñón de decisión (una división) hasta a lo más-1 divisiones. es el tamaño de la muestra.nn También, variar la tasa de aprendizaje para cada conjunto entre 0,1 a 1.

  2. Estime el error cuadrático medio validado (MSE) para cada conjunto.

  3. Para el nivel de complejidad de árbol

    <math display="block">
    <mrow>
    <mi>j</mi>
    </mrow>
    </math>
    ,
    <math display="block">
    <mrow>
    <mi>j</mi>
    <mo>=</mo>
    <mn>1</mn>
    <mo>.</mo>
    <mo>.</mo>
    <mo>.</mo>
    <mi>J</mi>
    </mrow>
    </math>
    , compare el MSE acumulado y validado de los conjuntos, conspirándolos contra el número de ciclos de aprendizaje. Trace curvas separadas para cada tasa de aprendizaje en la misma figura.

  4. Elija la curva que alcanza el MSE mínimo, y anote el ciclo de aprendizaje y la velocidad de aprendizaje correspondientes.

Valide de forma cruzada un árbol de regresión profunda y un muñón. Dado que los datos contienen valores faltantes, utilice divisiones sustitutas. Estos árboles de regresión sirven como puntos de referencia.

rng(1) % For reproducibility MdlDeep = fitrtree(Tbl,'MPG','CrossVal','on','MergeLeaves','off', ...     'MinParentSize',1,'Surrogate','on'); MdlStump = fitrtree(Tbl,'MPG','MaxNumSplits',1,'CrossVal','on', ...     'Surrogate','on');

Valide de forma cruzada un conjunto de 150 árboles de regresión potenciado mediante la validación cruzada de 5 veces. Uso de una plantilla de árbol:

  • Variar el número máximo de divisiones utilizando los valores de la secuencia

    <math display="block">
    <mrow>
    <mo stretchy="false">{</mo>
    <msup>
    <mrow>
    <mn>2</mn>
    </mrow>
    <mrow>
    <mn>0</mn>
    </mrow>
    </msup>
    <mo>,</mo>
    <msup>
    <mrow>
    <mn>2</mn>
    </mrow>
    <mrow>
    <mn>1</mn>
    </mrow>
    </msup>
    <mo>,</mo>
    <mo>.</mo>
    <mo>.</mo>
    <mo>.</mo>
    <mo>,</mo>
    <msup>
    <mrow>
    <mn>2</mn>
    </mrow>
    <mrow>
    <mi>m</mi>
    </mrow>
    </msup>
    <mo stretchy="false">}</mo>
    </mrow>
    </math>
    . es tal quem
    <math display="block">
    <mrow>
    <msup>
    <mrow>
    <mn>2</mn>
    </mrow>
    <mrow>
    <mi>m</mi>
    </mrow>
    </msup>
    </mrow>
    </math>
    no es mayor que-1.n

  • Active las divisiones sustitutas.

Para cada variante, ajuste la velocidad de aprendizaje utilizando cada valor en el set {0,1, 0,25, 0,5, 1}.

n = size(Tbl,1); m = floor(log2(n - 1)); learnRate = [0.1 0.25 0.5 1]; numLR = numel(learnRate); maxNumSplits = 2.^(0:m); numMNS = numel(maxNumSplits); numTrees = 150; Mdl = cell(numMNS,numLR);  for k = 1:numLR     for j = 1:numMNS         t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on');         Mdl{j,k} = fitrensemble(Tbl,'MPG','NumLearningCycles',numTrees, ...             'Learners',t,'KFold',5,'LearnRate',learnRate(k));     end end

Calcule el MSE acumulado, validado por Cruz de cada conjunto.

kflAll = @(x)kfoldLoss(x,'Mode','cumulative'); errorCell = cellfun(kflAll,Mdl,'Uniform',false); error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(learnRate)]); errorDeep = kfoldLoss(MdlDeep); errorStump = kfoldLoss(MdlStump);

Trace cómo el MSE validado por Cruz se comporta como el número de árboles en el conjunto aumenta. Trace las curvas con respecto a la tasa de aprendizaje en la misma gráfica y trace parcelas separadas para diferentes niveles de complejidad de árbol. Elija un subconjunto de niveles de complejidad de árbol para trazar.

mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)]; figure; for k = 1:3     subplot(2,2,k)     plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2)     axis tight     hold on     h = gca;     plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2)     plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2)     plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k')     h.YLim = [10 50];         xlabel('Number of trees')     ylabel('Cross-validated MSE')     title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k))))     hold off end hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ...         'Deep Tree';'Stump';'Min. MSE']); hL.Position(1) = 0.6;

Cada curva contiene un MSE con validación cruzada mínima que se produce en el número óptimo de árboles en el conjunto.

Identifique el número máximo de divisiones, del número de árboles, y de la velocidad de aprendizaje que rinde el MSE más bajo general.

[minErr,minErrIdxLin] = min(error(:)); [idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin); fprintf('\nMin. MSE = %0.5f',minErr)
Min. MSE = 17.01148 
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);
Optimal Parameter Values: Num. Trees = 38 
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',...     maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 4 Learning Rate = 0.10 

Cree un conjunto predictivo basado en los hiperparámetros óptimos y en todo el conjunto de entrenamiento.

tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS),'Surrogate','on'); MdlFinal = fitrensemble(Tbl,'MPG','NumLearningCycles',idxNumTrees, ...     'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal =    classreg.learning.regr.RegressionEnsemble            PredictorNames: {'Cylinders'  'Displacement'  'Horsepower'  'Weight'}              ResponseName: 'MPG'     CategoricalPredictors: []         ResponseTransform: 'none'           NumObservations: 94                NumTrained: 38                    Method: 'LSBoost'              LearnerNames: {'Tree'}      ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'                   FitInfo: [38×1 double]        FitInfoDescription: {2×1 cell}            Regularization: []     Properties, Methods  

es un.MdlFinalRegressionEnsemble Para predecir la economía de combustible de un coche dado su número de cilindros, volumen desplazado por los cilindros, potencia, y el peso, se puede pasar los Datos predictores y a.MdlFinalPredecir

En lugar de buscar valores óptimos manualmente mediante la opción de validación cruzada () y la función, puede usar el argumento de par nombre-valor.'KFold'kfoldLoss'OptimizeHyperparameters' Cuando se especifica, el software encuentra los parámetros óptimos automáticamente mediante la optimización bayesiana.'OptimizeHyperparameters' Los valores óptimos obtenidos mediante el uso pueden ser diferentes de los obtenidos mediante la búsqueda manual.'OptimizeHyperparameters'

t = templateTree('Surrogate','on'); mdl = fitrensemble(Tbl,'MPG','Learners',t, ...     'OptimizeHyperparameters',{'NumLearningCycles','LearnRate','MaxNumSplits'})

|====================================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits | |      | result |             | runtime     | (observed)  | (estim.)    | ycles        |              |              | |====================================================================================================================| |    1 | Best   |      3.3989 |       0.702 |      3.3989 |      3.3989 |           26 |     0.072054 |            3 | |    2 | Accept |      6.0978 |      4.5175 |      3.3989 |      3.5582 |          170 |    0.0010295 |           70 | |    3 | Best   |      3.2848 |      7.3601 |      3.2848 |       3.285 |          273 |      0.61026 |            6 | |    4 | Accept |      6.1839 |      1.9371 |      3.2848 |      3.2849 |           80 |    0.0016871 |            1 | |    5 | Best   |      3.0154 |     0.33314 |      3.0154 |       3.016 |           12 |      0.21457 |            2 | |    6 | Accept |      3.3146 |     0.32962 |      3.0154 |        3.16 |           10 |      0.18164 |            8 | |    7 | Accept |      3.0512 |     0.31776 |      3.0154 |      3.1213 |           10 |      0.26719 |           16 | |    8 | Best   |      3.0013 |     0.29751 |      3.0013 |      3.0891 |           10 |      0.27408 |            1 | |    9 | Best   |      2.9797 |     0.31657 |      2.9797 |      2.9876 |           10 |      0.28184 |            2 | |   10 | Accept |      3.0646 |     0.59906 |      2.9797 |      3.0285 |           23 |       0.9922 |            1 | |   11 | Accept |      2.9825 |     0.31056 |      2.9797 |       2.978 |           10 |      0.54187 |            1 | |   12 | Best   |      2.9526 |     0.31189 |      2.9526 |      2.9509 |           10 |      0.49116 |            1 | |   13 | Best   |      2.9281 |     0.98544 |      2.9281 |      2.9539 |           38 |      0.30709 |            1 | |   14 | Accept |       2.944 |     0.60449 |      2.9281 |      2.9305 |           20 |      0.40583 |            1 | |   15 | Best   |      2.9128 |     0.50753 |      2.9128 |      2.9237 |           20 |      0.39672 |            1 | |   16 | Best   |      2.9077 |     0.58614 |      2.9077 |       2.919 |           21 |      0.38157 |            1 | |   17 | Accept |      3.3932 |     0.36691 |      2.9077 |       2.919 |           10 |      0.97862 |           99 | |   18 | Accept |      6.2938 |     0.33318 |      2.9077 |      2.9204 |           10 |    0.0074886 |           95 | |   19 | Accept |      3.0049 |      0.4842 |      2.9077 |      2.9114 |           15 |      0.45073 |            9 | |   20 | Best   |      2.9072 |      2.2091 |      2.9072 |      2.9111 |           87 |        0.152 |            1 | |====================================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits | |      | result |             | runtime     | (observed)  | (estim.)    | ycles        |              |              | |====================================================================================================================| |   21 | Accept |      2.9217 |     0.53329 |      2.9072 |      2.9154 |           21 |      0.31845 |            1 | |   22 | Best   |      2.8994 |      4.8548 |      2.8994 |       2.917 |          189 |     0.098534 |            1 | |   23 | Accept |      2.9055 |      7.6922 |      2.8994 |      2.9166 |          310 |      0.15505 |            1 | |   24 | Accept |      2.9264 |      1.4456 |      2.8994 |      2.9012 |           61 |      0.23387 |            1 | |   25 | Accept |      3.0869 |     0.34623 |      2.8994 |      2.9169 |           10 |      0.48674 |           27 | |   26 | Best   |      2.8942 |      7.7285 |      2.8942 |      2.8912 |          319 |      0.11093 |            1 | |   27 | Accept |      3.0175 |     0.97891 |      2.8942 |      2.8889 |           38 |      0.32187 |            4 | |   28 | Accept |      2.9049 |      3.4053 |      2.8942 |      2.8941 |          141 |      0.13325 |            1 | |   29 | Accept |      3.0477 |     0.30373 |      2.8942 |      2.8939 |           10 |      0.28155 |           97 | |   30 | Accept |      3.0563 |      0.3135 |      2.8942 |       2.894 |           10 |      0.53101 |            3 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 91.847 seconds. Total objective function evaluation time: 51.012  Best observed feasible point:     NumLearningCycles    LearnRate    MaxNumSplits     _________________    _________    ____________             319            0.11093          1        Observed objective function value = 2.8942 Estimated objective function value = 2.894 Function evaluation time = 7.7285  Best estimated feasible point (according to models):     NumLearningCycles    LearnRate    MaxNumSplits     _________________    _________    ____________             319            0.11093          1        Estimated objective function value = 2.894 Estimated function evaluation time = 7.9767 
mdl =    classreg.learning.regr.RegressionEnsemble                        PredictorNames: {'Cylinders'  'Displacement'  'Horsepower'  'Weight'}                          ResponseName: 'MPG'                 CategoricalPredictors: []                     ResponseTransform: 'none'                       NumObservations: 94     HyperparameterOptimizationResults: [1×1 BayesianOptimization]                            NumTrained: 319                                Method: 'LSBoost'                          LearnerNames: {'Tree'}                  ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'                               FitInfo: [319×1 double]                    FitInfoDescription: {2×1 cell}                        Regularization: []     Properties, Methods  

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. puede contener una columna adicional para la variable de respuesta.TblTbl 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, a continuación, especifique la variable de respuesta mediante.TblResponseVarName

  • Si contiene la variable de respuesta, y desea utilizar un subconjunto de las variables restantes sólo como predictores, a continuación, especifique una fórmula utilizando.TblFórmula

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

Nota

Para ahorrar memoria y tiempo de ejecución, suministro y en lugar de.XYTbl

Tipos de datos: table

Nombre de variable de respuesta, especificado como el nombre de la variable de respuesta en.Tbl

Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si es la variable de respuesta, especifique as.Tbl.YResponseVarName'Y' Lo contrario fitrensemble trata todas las columnas como variables predictoras.Tbl

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 predictores, especificados como matriz numérica.

Cada fila corresponde a una observación, y cada columna corresponde a una variable predictora.

La longitud y el número de filas de deben ser iguales.YX

Para especificar los nombres de los predictores en el orden de su aparición en, utilice el argumento de par nombre-valor.XPredictorNames

Tipos de datos: single | double

Respuesta, especificada como un vector numérico. Cada elemento en es la respuesta a la observación en la fila correspondiente de o.YXTbl La longitud y el número de filas de o deben ser iguales.YXTbl

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: valida de forma cruzada un conjunto de 500 árboles de regresión embolvado mediante validación cruzada de 10 veces.'NumLearningCycles',500,'Method','Bag','Learners',templateTree(),'CrossVal','on'

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'

General Ensemble Options

contraer todo

Método de agregación de conjunto, especificado como el par separado por comas que consta de y o.'Method''LSBoost''Bag'

ValorMétodoNotas
'LSBoost'Aumento de mínimos cuadrados (LSBoost)Puede especificar la tasa de aprendizaje para la contracción mediante el argumento de par nombre-valor.'LearnRate'
'Bag'Agregación de bootstrap (embolsado, por ejemplo, bosque aleatorio)[2]utiliza el embolsado con selecciones de predictor aleatorio en cada división (bosque aleatorio) por defecto.fitrensemble Para utilizar el embolsado sin las selecciones aleatorias, utilice alumnos de árbol cuyo valor sea.'NumVariablesToSample''all'

Para obtener más información sobre los algoritmos de agregación de conjuntos y ejemplos, vea y.AlgoritmosAlgoritmos de conjuntoElija un método de agregación de conjunto aplicable

Ejemplo: 'Method','Bag'

Número de ciclos de aprendizaje de conjunto, especificados como el par separado por comas que consta de un entero positivo.'NumLearningCycles' En cada ciclo de aprendizaje, el software entrena a un alumno débil para cada objeto de plantilla en.Learners Por lo tanto, el software entrena a los estudiantes.NumLearningCycles*numel(Learners)

El software compone el conjunto utilizando todos los estudiantes entrenados y los almacena en.Mdl.Trained

Para obtener más información, consulte.Consejos

Ejemplo: 'NumLearningCycles',500

Tipos de datos: single | double

Los alumnos débiles que se usarán en el conjunto, especificados como el par separado por comas que consta de y, un objeto de plantilla de árbol, o un vector de celda de objetos de plantilla de árbol.'Learners''tree'

  • (valor predeterminado): utiliza los alumnos de árbol de regresión predeterminados, que es el mismo que el uso.'tree'fitrensembletemplateTree() Los valores predeterminados dependen del valor de.templateTree()'Method'

    • Para los árboles de decisión en bolsas, el número máximo de divisiones de decisión () es, donde es el número de observaciones.'MaxNumSplits'n–1n El número de predictores que se seleccionen aleatoriamente para cada división () es un tercio del número de predictores.'NumVariablesToSample' Por lo tanto, crece árboles de decisión profundos.fitrensemble Puede cultivar árboles menos profundos para reducir la complejidad del modelo o el tiempo de cálculo.

    • Para árboles de decisión impulsados, es 10 y es.'MaxNumSplits''NumVariablesToSample''all' Por lo tanto, crece árboles de decisión superficial.fitrensemble Puede cultivar árboles más profundos para una mejor precisión.

    Consulte la configuración predeterminada de un alumno débil.templateTree

  • Objeto de plantilla de árbol: utiliza el objeto de plantilla de árbol creado por.fitrensembletemplateTree Use los argumentos de par nombre-valor de para especificar la configuración de los alumnos del árbol.templateTree

  • Vector de celda de objetos de plantilla de árbol: aumenta los árboles de regresión por ciclo de aprendizaje (véase).mfitrensemblemNumLearningCycles Por ejemplo, para un conjunto compuesto por dos tipos de árboles de regresión, fuente, donde y son devueltos los objetos de plantilla de árbol de regresión.{t1 t2}t1t2templateTree

Para obtener más información sobre el número de estudiantes a entrenar, vea y.NumLearningCyclesConsejos

Ejemplo: 'Learners',templateTree('MaxNumSplits',5)

Frecuencia de impresión, especificada como el par separado por comas que consta de un entero positivo o.'NPrint''off'

Para rastrear el número de o queweak learnersPliegues fitrensemble entrenado hasta ahora, especifique un entero positivo. Es decir, si especifica el entero positivo:m

  • Sin especificar también ninguna opción de validación cruzada (por ejemplo,),CrossVal fitrensemble muestra un mensaje en la línea de comandos cada vez que completa la capacitación de los alumnos débiles.m

  • Y una opción de validación cruzada, a continuación, fitrensemble muestra un mensaje en la línea de comandos cada vez que finaliza los pliegues de entrenamiento.m

Si especifica,'off' fitrensemble no muestra un mensaje cuando finaliza la formación de los alumnos débiles.

Sugerencia

Al entrenar un conjunto de muchos alumnos débiles en un conjunto de datos de gran tamaño, especifique un entero positivo para.NPrint

Ejemplo: 'NPrint',5

Tipos de datos: single | double | char | string

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 fitrensemble bins el predictor en bins.u

    • fitrensemble 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

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 fitrensemble 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 fitrensemble 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

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 fitrensemble 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

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

Opciones de validación cruzada

contraer todo

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

Si se especifica, el software implementa la validación cruzada de 10 veces.'on'

Para invalidar esta configuración de validación cruzada, use uno de estos argumentos de par nombre-valor:,, o.CVPartitionHoldoutKFoldLeaveout Para crear un modelo validado de forma cruzada, puede usar un argumento de par nombre-valor de validación cruzada a la vez.

Alternativamente, valide de forma cruzada más adelante pasando aMdl crossval O crossval.

Ejemplo: 'Crossval','on'

Partición de validación cruzada, especificada como el par separado por comas que consta de un objeto de partición creado por.'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y la indización para los conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante el uso de.cvp = cvpartition(500,'KFold',5) A continuación, puede especificar el modelo con validación cruzada mediante.'CVPartition',cvp

Fracción de los datos utilizados para la validación de exclusión, especificado como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si usted especifica, después el software completa estos pasos:'Holdout',p

  1. Seleccione aleatoriamente y Reserve% de los datos como datos de validación y capacite al modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo con validación cruzada.Trained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se utilizarán en un modelo con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo mayor que 1.'KFold' Si usted especifica, después el software completa estos pasos:'KFold',k

  1. Particionar aleatoriamente los datos en sets.k

  2. Para cada conjunto, Reserve el conjunto como datos de validación y entrene el modelo utilizando el otro k – 1 Establece.

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda a-por-1 en la propiedad del modelo validado de forma cruzada.kkTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de y o.'Leaveout''on''off' Si especifica, a continuación, para cada una de las observaciones (donde está el número de observaciones excluyendo las observaciones faltantes, especificadas en la propiedad del modelo), el software completa estos pasos:'Leaveout','on'nnNumObservations

  1. Reservar la observación como datos de validación, y entrenar el modelo utilizando el otro – 1 observaciones.n

  2. Almacene los modelos compactos y entrenados en las celdas de un vector de celda-por-1 en la propiedad del modelo validado de forma cruzada.nnTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

Otras opciones de regresión

contraer todo

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico de valores positivos o el nombre de una variable en.'Weights'Tbl El software pesa las observaciones en cada fila o con el valor correspondiente en.XTblWeights El tamaño de debe ser igual al número de filas de 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 o la respuesta al entrenar el modelo.TblW

El software normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.Weights

De forma predeterminada, esWeights ones(n,1)Dónde n es el número de observaciones en o.XTbl

Tipos de datos: double | single | char | string

Opciones de muestreo

contraer todo

Fracción del conjunto de entrenamiento que se remuestrea para cada alumno débil, especificado como el par separado por comas y que consta de un escalar positivo en (0,1].'FResample'

Para usar, especificar o establecer en.'FResample''bag'MethodResample'on'

Ejemplo: 'FResample',0.75

Tipos de datos: single | double

Indicador que indica el muestreo con sustitución, especificado como el par separado por comas que consta de y o.'Replace''off''on'

  • Para, el software muestrea las observaciones de entrenamiento con reemplazo.'on'

  • Para, el software muestrea las observaciones de entrenamiento sin reemplazo.'off' Si se establece en, a continuación, las observaciones de software muestras de formación asumiendo pesos uniformes.Resample'on' Si también especifica un método de Boosting, el software aumenta al reponderando las observaciones.

A menos que establezca o establezca en, no tiene ningún efecto.Method'bag'Resample'on'Replace

Ejemplo: 'Replace','off'

Indicador que indica que se remuestrea, especificado como el par separado por comas que consta de y o.'Resample''off''on'

  • Si es un método de Boosting, entonces:Method

    • especifica las observaciones de formación de muestra utilizando ponderaciones actualizadas como probabilidades de muestreo multinomial.'Resample','on'

    • (valor predeterminado) especifica las observaciones de reponderación en cada iteración de aprendizaje.'Resample','off'

  • Si es así, debe serlo.Method'bag''Resample''on' El software remuestrea una fracción de las observaciones de entrenamiento (ver) con o sin reemplazo (ver).FResampleReplace

Si especifica volver a muestrear utilizando, es recomendable volver a muestrear todo el conjunto de datos.Resample Es decir, utilice el valor predeterminado de 1 para.FResample

Opciones del método LSBoost

contraer todo

Velocidad de aprendizaje para la contracción, especificada como el par separado por comas que consta de un escalar numérico en el intervalo (0,1).

Para entrenar un conjunto con contracción, se establece en un valor menor que, por ejemplo, es una opción popular.LearnRate10.1 Entrenar un conjunto usando contracción requiere más iteraciones de aprendizaje, pero a menudo logra una mejor precisión.

Ejemplo: 'LearnRate',0.1

Tipos de datos: 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'

  • — Utilice junto con los parámetros predeterminados para el especificado:'auto'{'Method','NumLearningCycles','LearnRate'}Learners

    • = (por defecto) —Learners'tree'{'MinLeafSize'}

    Nota

    Para la optimización de hiperparámetros, debe ser un único argumento, no una matriz de cadenas o una matriz de celdas.Learners

  • : 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 deoptimizableVariablehiperparámetros

La optimización intenta minimizar la pérdida de validación cruzada (error) para fitrensemble 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 son:fitrensemble

  • — Los métodos elegibles son o.Method'Bag''LSBoost'

  • : busca entre enteros positivos, de forma predeterminada, con escala de registro con rango.NumLearningCyclesfitrensemble[10,500]

  • — búsquedas entre reales positivos, de forma predeterminada, con escala logaritmo con rango.LearnRatefitrensemble[1e-3,1]

  • : busca entre los enteros con escalado logaritmo en el rango.MinLeafSizefitrensemble[1,max(2,floor(NumObservations/2))]

  • : busca entre los enteros con escalado logaritmo en el rango.MaxNumSplitsfitrensemble[1,max(2,NumObservations-1)]

  • : busca entre números enteros en el rango.NumVariablesToSamplefitrensemble[1,max(2,NumPredictors)]

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

load carsmall params = hyperparameters('fitrensemble',[Horsepower,Weight],MPG,'Tree'); params(4).Range = [1,20];

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 conjunto de regresión

Ejemplo: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}

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

Modelo de conjunto entrenado, devuelto como uno de los objetos del modelo de esta tabla.

Objeto de modelo¿Especificar opciones de validación cruzada?AjusteMethodAjusteResample
RegressionBaggedEnsembleNo'Bag''on'
RegressionEnsembleNo'LSBoost''off'
RegressionPartitionedEnsembleO'LSBoost''Bag'O'off''on'

Los argumentos de par nombre-valor que controlan la validación cruzada son,,, y.CrossValHoldoutKFoldLeaveoutCVPartition

Para hacer referencia a las propiedades de, utilice notación de puntos.Mdl Por ejemplo, para acceder o mostrar el vector de celda de objetos de modelo de alumno débiles para un conjunto que no se ha validado de forma cruzada, escriba en la línea de comandos.Mdl.Trained

Sugerencias

  • puede variar de unas pocas docenas a unos pocos miles.NumLearningCycles Por lo general, un conjunto con buena potencia predictiva requiere de unos pocos cientos a unos pocos miles de estudiantes débiles. Sin embargo, usted no tiene que entrenar un conjunto para que muchos ciclos a la vez. Usted puede comenzar por el crecimiento de una docena de estudiantes, inspeccionar el rendimiento del conjunto y luego, si es necesario, entrenar a los estudiantes más débiles utilizando resume.

  • El rendimiento del conjunto depende del ajuste del conjunto y del ajuste de los alumnos débiles. Es decir, si se especifican los alumnos débiles con parámetros predeterminados, el conjunto puede tener un rendimiento deficiente. Por lo tanto, al igual que los ajustes de conjunto, es recomendable ajustar los parámetros de los alumnos débiles mediante plantillas y elegir valores que minimicen el error de generalización.

  • Si especifica volver a muestrear utilizando, es recomendable volver a muestrear todo el conjunto de datos.Resample Es decir, utilice la configuración predeterminada de for.1FResample

  • 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

  • Para obtener más información sobre los algoritmos de agregación de conjuntos, consulte.Algoritmos de conjunto

  • Si usted especifica, entonces el software crece árboles de decisión superficiales por abandono.'Method','LSBoost' Puede ajustar la profundidad del árbol especificando los argumentos de par nombre-valor y el uso.MaxNumSplitsMinLeafSizeMinParentSizetemplateTree

  • Para sistemas de doble núcleo y superiores, fitrensemble paraleliza el entrenamiento mediante el uso de bloques de creación de subprocesos (TBB).Intel® Para obtener más información sobre TBB, consulte.Intelhttps://software.intel.com/en-us/intel-tbb

Referencias

[1] Breiman, L. “Bagging Predictors.” Machine Learning. Vol. 26, pp. 123–140, 1996.

[2] Breiman, L. “Random Forests.” Machine Learning. Vol. 45, pp. 5–32, 2001.

[3] Freund, Y. and R. E. Schapire. “A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting.” J. of Computer and System Sciences, Vol. 55, pp. 119–139, 1997.

[4] Friedman, J. “Greedy function approximation: A gradient boosting machine.” Annals of Statistics, Vol. 29, No. 5, pp. 1189–1232, 2001.

[5] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning section edition, Springer, New York, 2008.

Capacidades ampliadas

Introducido en R2016b