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.

fitensemble

Ajuste conjunto de estudiantes para la clasificación y la regresión

Descripción

fitensemble pueden aumentar o clasificar a los estudiantes de árbol de decisión o clasificadores de análisis discriminantes. La función también puede entrenar conjuntos subespaciales aleatorios de KNN o clasificadores de análisis discriminantes.

Para interfaces más sencillas que se ajusten a conjuntos de clasificación y regresión, en su lugar, utilice y, respectivamente.fitcensemblefitrensemble Además, y proporcionar opciones para la optimización bayesiana.fitcensemblefitrensemble

ejemplo

Mdl = fitensemble(Tbl,ResponseVarName,Method,NLearn,Learners) Devuelve un objeto de modelo de conjunto entrenado que contiene los resultados de ajustar un conjunto de alumnos de clasificación o regresión () a todas las variables de la tabla. es el nombre de la variable de respuesta en. es el método Ensemble-Aggregation.NLearnLearnersTblResponseVarNameTblMethod

ejemplo

Mdl = fitensemble(Tbl,formula,Method,NLearn,Learners) se ajusta al modelo especificado por.Fórmula

ejemplo

Mdl = fitensemble(Tbl,Y,Method,NLearn,Learners) trata todas las variables como variables predictoras. es la variable de respuesta que no está en.TblYTbl

ejemplo

Mdl = fitensemble(X,Y,Method,NLearn,Learners) entrena un conjunto utilizando los datos de predictor y los datos de respuesta en.XY

ejemplo

Mdl = fitensemble(___,Name,Value) entrena un conjunto utilizando opciones adicionales especificadas por uno o más argumentos de par y cualquiera de las sintaxis anteriores.Name,Value Por ejemplo, puede especificar el orden de la clase, para implementar la validación cruzada de 10 veces o la tasa de aprendizaje.

Ejemplos

contraer todo

Estimar la pérdida de reenvío de un conjunto de clasificación de árboles de decisión entrenado e impulsor.

Cargue el conjunto de datos.ionosphere

load ionosphere;

Entrena un conjunto de árboles de decisión con AdaBoost, 100 ciclos de aprendizaje y todo el conjunto de datos.

ClassTreeEns = fitensemble(X,Y,'AdaBoostM1',100,'Tree');

es un clasificador de conjunto entrenado.ClassTreeEnsClassificationEnsemble

Determine las pérdidas de reenvío acumuladas (es decir, el error acumulado de clasificación errónea de las etiquetas en los datos de entrenamiento).

rsLoss = resubLoss(ClassTreeEns,'Mode','Cumulative');

es un vector 100-by-1, donde el elemento contiene la pérdida de reenvío después de los primeros ciclos de aprendizaje.rsLosskk

Trace la pérdida de reenvío acumulada en el número de ciclos de aprendizaje.

plot(rsLoss); xlabel('Number of Learning Cycles'); ylabel('Resubstitution Loss');

En general, a medida que aumenta el número de árboles de decisión en el conjunto de clasificación entrenado, la pérdida de reenvío disminuye.

Una disminución en la pérdida de reenvío podría indicar que el software entrenó el conjunto con sensatez. Sin embargo, no se puede deducir el poder predictivo del conjunto por esta disminución. Para medir el poder predictivo de un conjunto, calcule el error de generalización:

  1. Particionar aleatoriamente los datos en conjuntos de entrenamiento y validación cruzada. Para ello, especifique Cuándo entrenar el conjunto utilizando.'holdout',holdoutProportionfitensemble

  2. Pasando el conjunto entrenado a, que estima el error de generalización.kfoldLoss

Utilice un conjunto de árbol de regresión entrenado y mejorado para predecir la economía de combustible de un automóvil. Elija el número de cilindros, el volumen desplazado por los cilindros, la potencia y el peso como predictores. Luego, entrena un conjunto usando menos predictores y compara su precisión predictiva en la muestra con el primer conjunto.

Cargue el conjunto de datos.carsmall Almacene los datos de entrenamiento en una tabla.

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

Especifique una plantilla de árbol de regresión que utilice divisiones sustitutas para mejorar la precisión predictiva en presencia de valores.NaN

t = templateTree('Surrogate','On');

Entrena el conjunto de árbol de regresión usando LSBoost y 100 ciclos de aprendizaje.

Mdl1 = fitensemble(Tbl,'MPG','LSBoost',100,t);

es un conjunto de regresión entrenado.Mdl1RegressionEnsemble Dado que es una variable en el área de trabajo de MATLAB®, puede obtener el mismo resultado introduciendoMPG

Mdl1 = fitensemble(Tbl,MPG,'LSBoost',100,t);

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.

predMPG = predict(Mdl1,[4 200 150 3000])
predMPG = 22.8462 

La economía de combustible promedio de un coche con estas especificaciones es 21,78 MPG.

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

formula = 'MPG ~ Cylinders + Horsepower + Weight'; Mdl2 = fitensemble(Tbl,formula,'LSBoost',100,t);

Compare los MSEs de reenvío entre y.Mdl1Mdl2

mse1 = resubLoss(Mdl1)
mse1 = 6.4721 
mse2 = resubLoss(Mdl2)
mse2 = 7.8599 

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

Calcule el error de generalización de un conjunto de clasificación de árboles de decisión entrenado e impulsor.

Cargue el conjunto de datos.ionosphere

load ionosphere;

Entrena un conjunto de árboles de decisión usando AdaBoostM1, 100 ciclos de aprendizaje y la mitad de los datos elegidos aleatoriamente. El software valida el algoritmo utilizando la mitad restante.

rng(2); % For reproducibility ClassTreeEns = fitensemble(X,Y,'AdaBoostM1',100,'Tree',...     'Holdout',0.5);

es un clasificador de conjunto entrenado.ClassTreeEnsClassificationEnsemble

Determine el error de generalización acumulativa, es decir, el error acumulativo de clasificación errónea de las etiquetas en los datos de validación).

genError = kfoldLoss(ClassTreeEns,'Mode','Cumulative');

es un vector 100-by-1, donde el elemento contiene el error de generalización después de los primeros ciclos de aprendizaje.genErrorkk

Trace el error de generalización en el número de ciclos de aprendizaje.

plot(genError); xlabel('Number of Learning Cycles'); ylabel('Generalization Error');

El error de generalización acumulativa disminuye a aproximadamente 7% cuando 25 estudiantes débiles componen el clasificador de conjunto.

Puede controlar la profundidad de los árboles en un conjunto de árboles de decisión. También puede controlar la profundidad de árbol en un modelo ECOC que contenga alumnos binarios de árbol de decisión utilizando los parámetros de par nombre-valor.MaxNumSplitsMinLeafSizeMinParentSize

  • Al ensacado árboles de decisión, crece de forma predeterminada árboles de decisión profundos.fitensemble Puede cultivar árboles menos profundos para reducir la complejidad del modelo o el tiempo de cálculo.

  • Al aumentar los árboles de decisión, crece de forma predeterminada los tocones (un árbol con una división).fitensemble Puede cultivar árboles más profundos para una mejor precisión.

Cargue el conjunto de datos.carsmall Especifique las variables,,, y como predictores, y como la respuesta.AccelerationDisplacementHorsepowerWeightMPG

load carsmall X = [Acceleration Displacement Horsepower Weight]; Y = MPG;

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

  • Para.1MaxNumSplits Esta opción crece tocones.

  • Para5MinLeafSize

  • Para10MinParentSize

Para buscar el número óptimo de divisiones:

  1. Entrena un conjunto de conjuntos. Aumente exponencialmente el número máximo de divisiones para los conjuntos subsiguientes de muñón a lo más-1 splits, donde está el tamaño de la muestra de entrenamiento.nn También, disminuya la tasa de aprendizaje para cada conjunto de 1 a 0,1.

  2. Cross valida los conjuntos.

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

  4. Compare las MSEs validadas entre si. El conjunto con el más bajo realiza lo mejor, e indica el número máximo óptimo de divisiones, el número de árboles y la tasa de aprendizaje para el conjunto de datos.

Grow y Cross validan un árbol de regresión profunda y un muñón. Especifique usar divisiones sustitutas porque los datos contienen valores faltantes. Estos sirven como puntos de referencia.

MdlDeep = fitrtree(X,Y,'CrossVal','on','MergeLeaves','off',...     'MinParentSize',1,'Surrogate','on'); MdlStump = fitrtree(X,Y,'MaxNumSplits',1,'CrossVal','on','Surrogate','on');

Entrenar los conjuntos de impulso utilizando 150 árboles de regresión. Cross valida el conjunto usando la validación cruzada de 5 veces. 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>
, donde 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, donde está el tamaño de la muestra de entrenamiento.nn Para cada variante, ajuste la velocidad de aprendizaje a cada valor en el set {0,1, 0,25, 0,5, 1};

n = size(X,1); m = floor(log2(n - 1)); lr = [0.1 0.25 0.5 1]; maxNumSplits = 2.^(0:m); numTrees = 150; Mdl = cell(numel(maxNumSplits),numel(lr)); rng(1); % For reproducibility for k = 1:numel(lr);     for j = 1:numel(maxNumSplits);         t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on');         Mdl{j,k} = fitensemble(X,Y,'LSBoost',numTrees,t,...             'Type','regression','KFold',5,'LearnRate',lr(k));     end; end;

Calcule el MSE validado en cruz para cada conjunto.

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

Trace cómo se comporta el MSE validado por Cruz como el número de árboles en el conjunto aumenta para algunos de los conjuntos, el árbol profundo, y el muñón. Trace las curvas con respecto a la velocidad de aprendizaje en la misma gráfica y trace parcelas separadas para distintas complejidades de los árboles. Elija un subconjunto de niveles de complejidad de árbol.

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(lr','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 = 18.50574 
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);
Optimal Parameter Values: Num. Trees = 12 
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',...     maxNumSplits(idxMNS),lr(idxLR))
MaxNumSplits = 4 Learning Rate = 0.25 

Para un enfoque diferente para optimizar este conjunto, vea.Optimice un conjunto de regresión potenciado

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 fitensemble trata todas las columnas como variables predictoras.Tbl

La variable de respuesta debe ser una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Si la variable de respuesta es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.

Para la clasificación, puede especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames Lo contrario fitensemble determina el orden de la clase y lo almacena en el.Mdl.ClassNames

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

Datos de respuesta, especificados como una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Cada entrada es la respuesta o etiqueta para la observación en la fila correspondiente de o.YXTbl La longitud y el número de filas de o deben ser iguales.YXTbl Si la variable de respuesta es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.

  • Para la clasificación, puede ser cualquiera de los tipos de datos admitidos.Y Puede especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames Lo contrario fitensemble determina el orden de la clase y lo almacena en el.Mdl.ClassNames

  • Para la regresión, debe ser un vector de columna numérico.Y

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

Método de agregación de conjunto, especificado como uno de los nombres de método de esta lista.

  • Para la clasificación con dos clases:

    • 'AdaBoostM1'

    • 'LogitBoost'

    • 'GentleBoost'

    • requiere'RobustBoost'Optimization Toolbox™

    • requiere'LPBoost'Optimization Toolbox

    • requiere'TotalBoost'Optimization Toolbox

    • 'RUSBoost'

    • 'Subspace'

    • 'Bag'

  • Para la clasificación con tres o más clases:

    • 'AdaBoostM2'

    • requiere'LPBoost'Optimization Toolbox

    • requiere'TotalBoost'Optimization Toolbox

    • 'RUSBoost'

    • 'Subspace'

    • 'Bag'

  • Para la regresión:

    • 'LSBoost'

    • 'Bag'

Si especifica, a continuación, especifique el tipo de problema mediante el argumento de par nombre-valor, porque puede especificar para problemas de clasificación y regresión.'Method','Bag'Type'Bag'

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

Número de ciclos de aprendizaje de conjunto, especificado como un entero positivo o.'AllPredictorCombinations'

  • Si especifica un entero positivo, entonces, 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.NLearn*numel(Learners)

  • Si especifica, a continuación, establezca y especifique un alumno solo en.'AllPredictorCombinations'Method'Subspace'Learners Con estos ajustes, el software entrena a los estudiantes para todas las combinaciones posibles de predictores tomados a la vez.NPredToSample Por lo tanto, el software entrena a los estudiantes.nchoosek(size(X,2),NPredToSample)

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

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

Tipos de datos: single | double | char | string

Los estudiantes débiles para usar en el conjunto, especificado como un nombre de aprendiz débil, objeto de plantilla de aprendizaje débil o matriz de celdas de objetos de plantilla de aprendizaje débil.

Aprendiz débilNombre de aprendiz débilFunción de creación de objetos de plantillaConfiguraciónMethod
El análisis discriminante'Discriminant'templateDiscriminantRecomendado para'Subspace'
vecinos más cercanosk'KNN'templateKNNPor sólo'Subspace'
Árbol de decisión'Tree'templateTreeTodos los métodos excepto'Subspace'

Para obtener más información, consulte y.NLearnConsejos

Ejemplo: Para un conjunto compuesto por dos tipos de árboles de clasificación, suministro, donde y son plantillas de árbol de clasificación.{t1 t2}t1t2

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 que se implemente la validación cruzada de 10 veces y que se utilice como velocidad de aprendizaje.'CrossVal','on','LearnRate',0.050,05

General Ensemble Options

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.

La especificación es apropiada si:CategoricalPredictors

  • Es.'Learners''tree'

  • es cuando todos los predictores son categóricos.'Learners''knn'

De forma predeterminada, si los Datos predictores están en una tabla (),Tbl fitensemble 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 fitensemble 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

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 fitensemble 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 fitensemble 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, fitensemble muestra un mensaje en la línea de comandos cada vez que finaliza los pliegues de entrenamiento.m

Si especifica,'off' fitensemble 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

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

Tipo de aprendizaje supervisado, especificado como el par separado por comas que consta de y o.'Type''classification''regression'

  • Si es así, el tipo de aprendizaje supervisado es ambiguo.Method'bag' Por lo tanto, especifique cuando embolsado.Type

  • De lo contrario, el valor de determina el tipo de aprendizaje supervisado.Method

Ejemplo: 'Type','classification'

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 clasificación o regresión

contraer todo

Nombres de las clases que se usarán para el entrenamiento, especificadas como el par separado por comas que consta de una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. debe tener el mismo tipo de datos que.'ClassNames'ClassNamesY

Si es una matriz de caracteres, cada elemento debe corresponder a uno de la matriz.ClassNamesrow

Utilizar para:ClassNames

  • Ordene las clases durante el entrenamiento.

  • Especifique el orden de cualquier dimensión de argumento de entrada o de salida que corresponda al orden de la clase. Por ejemplo, se utiliza para especificar el orden de las dimensiones o el orden de columnas de las puntuaciones de clasificación devueltas por.ClassNamesCostoPredecir

  • Seleccione un subconjunto de clases para el entrenamiento. Por ejemplo, supongamos que el conjunto de todos los nombres de clase distintos en es.Y{'a','b','c'} Para entrenar el modelo utilizando observaciones de clases y sólo, especifique.'a''c''ClassNames',{'a','c'}

El valor predeterminado para es el conjunto de todos los nombres de clase distintos en.ClassNamesY

Ejemplo: 'ClassNames',{'b','g'}

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

Costo de clasificación errónea, especificado como el par separado por comas que consta de una matriz cuadrada o estructura.'Cost' Si especifica:

  • La matriz cuadrada, a continuación, es el costo de clasificar un punto en la clase si su verdadera clase es.CostoCost(i,j)ji Es decir, las filas corresponden a la clase true y las columnas corresponden a la clase pronosticada. Para especificar el orden de la clase para las filas y columnas correspondientes, especifique también el argumento de par nombre-valor.CostoClassNames

  • La estructura, entonces debe tener dos campos:S

    • , que contiene los nombres de clase como una variable del mismo tipo de datos queS.ClassNamesY

    • , que contiene la matriz de costes con filas y columnas ordenadas como enS.ClassificationCostsS.ClassNames

El valor predeterminado es ones(K) - eye(K)Dónde K es el número de clases distintas.

Nota

fitensemble utiliza para ajustar las probabilidades de clase previas especificadas en.CostoPrior Entonces fitensemble utiliza las probabilidades previas ajustadas para el entrenamiento y restablece la matriz de costes a su valor predeterminado.

Ejemplo: 'Cost',[0 1 2 ; 1 0 2; 2 2 0]

Tipos de datos: double | single | struct

Probabilidades previas para cada clase, especificadas como el par separado por comas que consta de y un valor en esta tabla.'Prior'

ValorDescripción
'empirical'Las probabilidades previas de clase son las frecuencias de clase relativas.Y
'uniform'Todas las probabilidades previas de clase son iguales a 1/, donde está el número de clases.KK
Vector numéricoCada elemento es una clase de probabilidad previa. Ordene los elementos según o especifique el orden mediante el argumento de par nombre-valor.Mdl.ClassNamesClassNames El software normaliza los elementos que suman.1
matriz de estructura

Una estructura con dos campos:S

  • contiene los nombres de clase como una variable del mismo tipo que.S.ClassNamesY

  • contiene un vector de las probabilidades previas correspondientes.S.ClassProbs El software normaliza los elementos que suman.1

fitensemble Normaliza las probabilidades previas en sumar a 1.Prior

Ejemplo: struct('ClassNames',{{'setosa','versicolor','virginica'}},'ClassProbs',1:3)

Tipos de datos: char | string | double | single | struct

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 para impulsar métodos y embolsado

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

Las opciones de método AdaBoostM1, AdaBoostM2, LogitBoost, GentleBoost y 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

Opciones del método RUSBoost

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

Proporción de muestreo con respecto a la clase de menor representación, especificada como el par separado por comas consistente en un vector escalar o numérico numérico de valores positivos con una longitud igual al número de clases distintas en los datos de entrenamiento.'RatioToSmallest'

Supongamos que hay K clases en los datos de entrenamiento y la clase de menor representación tiene m observaciones de los datos de formación.

  • Si especifica el escalar numérico positivo sEntonces fitensemble Muestras s*m observaciones de cada clase, es decir, utiliza la misma proporción de muestreo para cada clase. Para obtener más información, consulte.Algoritmos

  • Si especifica el vector numérico [s1,s2,...,sK]Entonces fitensemble Muestras si*m observaciones de la clase i, i = 1,...,.K Los elementos de corresponden al orden de los nombres de clase especificados utilizando (ver).RatioToSmallestClassNamesConsejos

El valor predeterminado es ones(K,1), que especifica la muestra m observaciones de cada clase.

Ejemplo: 'RatioToSmallest',[2,1]

Tipos de datos: single | double

Opciones del método LPBoost y TotalBoost

contraer todo

Precisión de margen para controlar la velocidad de convergencia, especificada como el par separado por comas que consta de y un escalar numérico en el intervalo [0,1]. afecta al número de iteraciones de impulso requeridas para la convergencia.'MarginPrecision'MarginPrecision

Sugerencia

Para entrenar un conjunto con muchos alumnos, especifique un valor pequeño para.MarginPrecision Para entrenar con unos pocos alumnos, especifique un valor grande.

Ejemplo: 'MarginPrecision',0.5

Tipos de datos: single | double

Opciones del método RobustBoost

contraer todo

Error de clasificación de destino, especificado como el par separado por comas que consta de un escalar numérico no negativo.'RobustErrorGoal' El límite superior de los valores posibles depende de los valores de y.RobustMarginSigmaRobustMaxMargin Sin embargo, el límite superior no puede exceder.1

Sugerencia

Para un conjunto de entrenamiento en particular, por lo general hay un rango óptimo para.RobustErrorGoal Si lo establece demasiado bajo o demasiado alto, el software puede producir un modelo con una precisión de clasificación deficiente. Pruebe la validación cruzada para buscar el valor adecuado.

Ejemplo: 'RobustErrorGoal',0.05

Tipos de datos: single | double

Distribución del margen de clasificación distribuida en los datos de entrenamiento, especificado como el par separado por comas que consta de un escalar numérico positivo.'RobustMarginSigma' Antes de especificar, consulte la bibliografía sobre, por ejemplo,.RobustMarginSigmaRobustBoost[19]

Ejemplo: 'RobustMarginSigma',0.5

Tipos de datos: single | double

Margen de clasificación máximo en los datos de entrenamiento, especificado como el par separado por comas que consta de un escalar numérico no negativo.'RobustMaxMargin' El software minimiza el número de observaciones en los datos de entrenamiento que tienen márgenes de clasificación a continuación.RobustMaxMargin

Ejemplo: 'RobustMaxMargin',1

Tipos de datos: single | double

Opciones de método de subespacio aleatorio

contraer todo

Número de predictores que se muestra para cada alumno de subespacio aleatorio, especificado como el par separado por comas que consta de un entero positivo en el intervalo 1,...,, donde está el número de variables predictoras (o).'NPredToSample'ppsize(X,2)size(Tbl,2)

Tipos de datos: single | double

Argumentos de salida

contraer todo

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

Objeto de modeloAjusteType¿Especificar opciones de validación cruzada?AjusteMethodAjusteResample
ClassificationBaggedEnsemble'classification'No'Bag''on'
ClassificationEnsemble'classification'NoCualquier método de agregación de conjunto para la clasificación'off'
ClassificationPartitionedEnsemble'classification'Cualquier método de agregación de conjunto de clasificaciónO'off''on'
RegressionBaggedEnsemble'regression'No'Bag''on'
RegressionEnsemble'regression'No'LSBoost''off'
RegressionPartitionedEnsemble'regression'O'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.NLearn 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 para problemas de clasificación o resume para los problemas de regresión.

  • 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

  • En problemas de clasificación (es decir, es):Type'classification'

    • Si el método Ensemble-Aggregation () es y:Method'bag'

      • El costo de clasificación errónea () es altamente desequilibrado, entonces, para las muestras en bolsa, el software sobremuestrea observaciones únicas de la clase que tiene una gran penalización.Costo

      • Las probabilidades previas de clase () son altamente sesgados, el software sobremuestrea observaciones únicas de la clase que tiene una gran probabilidad previa.Prior

      Para tamaños de muestra más pequeños, estas combinaciones pueden dar lugar a una baja frecuencia relativa de observaciones fuera de bolsa de la clase que tiene una gran penalización o probabilidad previa. En consecuencia, el error de out-of-bag Estimado es muy variable y puede ser difícil de interpretar. Para evitar que se calculen grandes desviaciones de error fuera de bolsa, especialmente para tamaños de muestra pequeños, establezca una matriz de coste de clasificación errónea más equilibrada utilizando o un vector de probabilidad anterior menos sesgado.CostoPrior

    • Dado que el orden de algunos argumentos de entrada y salida corresponden a las clases distintas de los datos de entrenamiento, es recomendable especificar el orden de la clase mediante el argumento de par nombre-valor.ClassNames

      • Para determinar el orden de la clase rápidamente, quite todas las observaciones de los datos de entrenamiento que no están clasificados (es decir, tienen una etiqueta que falta), obtener y mostrar una matriz de todas las clases distintas y, a continuación, especifique la matriz para.ClassNames Por ejemplo, supongamos que la variable de respuesta () es una matriz de etiquetas de celdas.Y Este código especifica el orden de la clase en la variable. asigna a observaciones sin clasificar y excluye de su salida.classNames

        Ycat = categorical(Y); classNames = categories(Ycat)
        Categórico<undefined>categories<undefined> Por lo tanto, si usa este código para matrices de celdas de etiquetas o código similar para matrices categóricas, no tiene que quitar observaciones con etiquetas que faltan para obtener una lista de las clases distintas.

      • Para especificar que el orden de la clase de la etiqueta de menor representación a la más representada, a continuación, determinar rápidamente el orden de la clase (como en la viñeta anterior), pero organizar las clases en la lista por frecuencia antes de pasar la lista a.ClassNames A continuación del ejemplo anterior, este código especifica el orden de la clase de menor a mayor representado en.classNamesLH

        Ycat = categorical(Y); classNames = categories(Ycat); freq = countcats(Ycat); [~,idx] = sort(freq); classNamesLH = classNames(idx);

Algoritmos

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

  • Si especifica ser un algoritmo de impulso y ser árboles de decisión, el software crece de forma predeterminada.MethodLearnersTocones Un muñón de decisión es un nodo raíz conectado a dos terminales, nodos hoja. Puede ajustar la profundidad del árbol especificando los argumentos de par nombre-valor y el uso.MaxNumSplitsMinLeafSizeMinParentSizetemplateTree

  • fitensemble genera muestras en bolsa mediante las clases de sobremuestreo con grandes costos de clasificación errónea y clases de submuestreo con pequeños costos de clasificación errónea. En consecuencia, las muestras fuera de bolsa tienen menos observaciones de las clases con grandes costos de clasificación errónea y más observaciones de clases con pequeños costos de clasificación errónea. Si entrena un conjunto de clasificación utilizando un pequeño conjunto de datos y una matriz de costos altamente sesgada, entonces el número de observaciones fuera de bolsa por clase puede ser bajo. Por lo tanto, el error de out-of-bag Estimado puede tener una gran varianza y puede ser difícil de interpretar. El mismo fenómeno puede ocurrir para las clases con grandes probabilidades previas.

  • Para el método de agregación de conjunto de RUSBoost (), el argumento de par nombre-valor especifica la proporción de muestreo para cada clase con respecto a la clase de menor representación.MethodRatioToSmallest Por ejemplo, supongamos que hay dos clases en los datos de entrenamiento: y. tiene 100 observaciones y tiene 10 observaciones. y que la clase con menor representación haABAB m observaciones de los datos de formación.

    • Si establece, a continuación,'RatioToSmallest',2 s*m = = .2*1020 Por consiguiente fitensemble entrena a cada aprendiz utilizando 20 observaciones de la clase y 20 observaciones de la clase.AB Si lo establece, obtendrá el mismo resultado.'RatioToSmallest',[2 2]

    • Si establece, a continuación,'RatioToSmallest',[2,1] s1*m = = y2*1020 s2*m = = .1*1010 Por consiguiente fitensemble entrena a cada aprendiz utilizando 20 observaciones de la clase y 10 observaciones de la clase.AB

  • Para conjuntos de árboles de decisión, y para sistemas de doble núcleo y superiores, paraleliza la formación mediante subprocesos Building Blocks (TBB).fitensembleIntel® 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. “A more robust boosting algorithm.” arXiv:0905.2138v1, 2009.

[4] 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.

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

[6] Friedman, J., T. Hastie, and R. Tibshirani. “Additive logistic regression: A statistical view of boosting.” Annals of Statistics, Vol. 28, No. 2, pp. 337–407, 2000.

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

[8] Ho, T. K. “The random subspace method for constructing decision forests.” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 20, No. 8, pp. 832–844, 1998.

[9] Schapire, R. E., Y. Freund, P. Bartlett, and W.S. Lee. “Boosting the margin: A new explanation for the effectiveness of voting methods.” Annals of Statistics, Vol. 26, No. 5, pp. 1651–1686, 1998.

[10] Seiffert, C., T. Khoshgoftaar, J. Hulse, and A. Napolitano. “RUSBoost: Improving clasification performance when training data is skewed.” 19th International Conference on Pattern Recognition, pp. 1–4, 2008.

[11] Warmuth, M., J. Liao, and G. Ratsch. “Totally corrective boosting algorithms that maximize the margin.” Proc. 23rd Int’l. Conf. on Machine Learning, ACM, New York, pp. 1001–1008, 2006.

Introducido en R2011a