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.

Prueba de calidad del conjunto

No se puede evaluar la calidad predictiva de un conjunto en función de su rendimiento en los datos de entrenamiento. Los conjuntos tienden a "sobreentrenar", lo que significa que producen estimaciones excesivamente optimistas de su poder predictivo. Esto significa que el resultado de la clasificación (para la regresión) suele indicar un error inferior al que se obtiene con los datos nuevos.resubLossresubLoss

Para obtener una mejor idea de la calidad de un conjunto, utilice uno de estos métodos:

  • Evalúe el conjunto en un conjunto de pruebas independiente (útil cuando tiene una gran cantidad de datos de entrenamiento).

  • Evalúe el conjunto mediante la validación cruzada (útil cuando no tiene muchos datos de entrenamiento).

  • Evalúe el conjunto en los datos fuera de la bolsa (útil cuando se crea un conjunto embolvado con o).fitcensemblefitrensemble

Este ejemplo utiliza un conjunto emboltado para que pueda utilizar los tres métodos de evaluación de la calidad del conjunto.

Genere un DataSet artificial con 20 predictores. Cada entrada es un número aleatorio de 0 a 1. La clasificación inicial es

<math display="block">
<mrow>
<mi>Y</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
Si
<math display="block">
<mrow>
<msub>
<mrow>
<mi>X</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>X</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>X</mi>
</mrow>
<mrow>
<mn>3</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>X</mi>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>X</mi>
</mrow>
<mrow>
<mn>5</mn>
</mrow>
</msub>
<mo>></mo>
<mn>2</mn>
<mo>.</mo>
<mn>5</mn>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mi>Y</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
Lo contrario.

rng(1,'twister') % For reproducibility X = rand(2000,20); Y = sum(X(:,1:5),2) > 2.5;

Además, para añadir ruido a los resultados, cambie aleatoriamente el 10% de las clasificaciones.

idx = randsample(2000,200); Y(idx) = ~Y(idx);

Conjunto de pruebas independiente

Crear formación independiente y conjuntos de pruebas de datos. Utilice el 70% de los datos para un conjunto de entrenamiento llamando usando la opción.cvpartitionholdout

cvpart = cvpartition(Y,'holdout',0.3); Xtrain = X(training(cvpart),:); Ytrain = Y(training(cvpart),:); Xtest = X(test(cvpart),:); Ytest = Y(test(cvpart),:);

Crear un conjunto de clasificación en bolsas de 200 árboles a partir de los datos de entrenamiento.

t = templateTree('Reproducible',true);  % For reproducibility of random predictor selections bag = fitcensemble(Xtrain,Ytrain,'Method','Bag','NumLearningCycles',200,'Learners',t)
bag =    classreg.learning.classif.ClassificationBaggedEnsemble              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: [0 1]            ScoreTransform: 'none'           NumObservations: 1400                NumTrained: 200                    Method: 'Bag'              LearnerNames: {'Tree'}      ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'                   FitInfo: []        FitInfoDescription: 'None'                 FResample: 1                   Replace: 1          UseObsForLearner: [1400x200 logical]     Properties, Methods  

Trace la pérdida (clasificación errónea) de los datos de prueba en función del número de árboles entrenados en el conjunto.

figure plot(loss(bag,Xtest,Ytest,'mode','cumulative')) xlabel('Number of trees') ylabel('Test classification error')

Validación cruzada

Genere un conjunto de cinco veces validado en bolsas cruzadas.

cv = fitcensemble(X,Y,'Method','Bag','NumLearningCycles',200,'Kfold',5,'Learners',t)
cv =    classreg.learning.partition.ClassificationPartitionedEnsemble     CrossValidatedModel: 'Bag'          PredictorNames: {1x20 cell}            ResponseName: 'Y'         NumObservations: 2000                   KFold: 5               Partition: [1x1 cvpartition]       NumTrainedPerFold: [200 200 200 200 200]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  

Examine la pérdida de validación cruzada como una función del número de árboles en el conjunto.

figure plot(loss(bag,Xtest,Ytest,'mode','cumulative')) hold on plot(kfoldLoss(cv,'mode','cumulative'),'r.') hold off xlabel('Number of trees') ylabel('Classification error') legend('Test','Cross-validation','Location','NE')

La validación cruzada da estimaciones comparables a las del conjunto independiente.

Estimaciones fuera de bolsa

Genere la curva de pérdidas para las estimaciones de fuera de bolsa y trace junto con las otras curvas.

figure plot(loss(bag,Xtest,Ytest,'mode','cumulative')) hold on plot(kfoldLoss(cv,'mode','cumulative'),'r.') plot(oobLoss(bag,'mode','cumulative'),'k--') hold off xlabel('Number of trees') ylabel('Classification error') legend('Test','Cross-validation','Out of bag','Location','NE')

Las estimaciones fuera de bolsa son de nuevo comparables a las de los otros métodos.

Consulte también

| | | | | | | |

Temas relacionados