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.

Suplente splits

Cuando falta el valor del predictor de división óptimo para una observación, si especifica utilizar divisiones sustitutas, el software envía la observación al nodo secundario izquierdo o derecho utilizando el mejor predictor suplente. Cuando faltan datos, los árboles y conjuntos de árboles con divisiones sustitutas dan mejores predicciones. En este ejemplo se muestra cómo mejorar la precisión de las predicciones para los datos con valores faltantes mediante el uso de árboles de decisión con divisiones sustitutas.

Cargue datos de muestra

Cargue el conjunto de datos.ionosphere

load ionosphere

Particionar el conjunto de datos en conjuntos de entrenamiento y prueba. Mantenga el 30% de los datos para las pruebas.

rng('default') % For reproducibility cv = cvpartition(Y,'Holdout',0.3);

Identifique los datos de entrenamiento y pruebas.

Xtrain = X(training(cv),:); Ytrain = Y(training(cv)); Xtest = X(test(cv),:); Ytest = Y(test(cv));

Supongamos que faltan la mitad de los valores del conjunto de pruebas. Establezca la mitad de los valores en el conjunto de pruebas.NaN

Xtest(rand(size(Xtest))>0.5) = NaN;

Entrenar Random Forest

Entrenar un bosque aleatorio de 150 árboles de clasificación sin divisiones sustitutas.

templ = templateTree('Reproducible',true);  % For reproducibility of random predictor selections Mdl = fitcensemble(Xtrain,Ytrain,'Method','Bag','NumLearningCycles',150,'Learners',templ);

Cree una plantilla de árbol de decisión que utilice divisiones sustitutas. Un árbol que utiliza divisiones sustitutas no descarta toda la observación cuando incluye datos faltantes en algunos predictores.

templS = templateTree('Surrogate','On','Reproducible',true);

Entrena un bosque aleatorio usando la plantilla.templS

Mdls = fitcensemble(Xtrain,Ytrain,'Method','Bag','NumLearningCycles',150,'Learners',templS);

Precisión de prueba

Pruebe la precisión de las predicciones con y sin divisiones sustitutas.

Predecir respuestas y crear gráficos de matriz de confusión utilizando ambos enfoques.

Ytest_pred = predict(Mdl,Xtest); figure cm = confusionchart(Ytest,Ytest_pred); cm.Title = 'Model Without Surrogates';

Ytest_preds = predict(Mdls,Xtest); figure cms = confusionchart(Ytest,Ytest_preds); cms.Title = 'Model with Surrogates';

Todos los elementos fuera de la diagonal de la matriz de confusión representan datos mal clasificados. Un buen clasificador produce una matriz de confusión que se ve dominantemente diagonal. En este caso, el error de clasificación es menor para el modelo entrenado con divisiones sustitutas.

Estimar errores de clasificación acumulados. Especifique al estimar los errores de clasificación mediante la función.'Mode','Cumulative'loss La función devuelve un vector en el que el elemento indica el error utilizando los primeros alumnos.lossJJ

figure plot(loss(Mdl,Xtest,Ytest,'Mode','Cumulative')) hold on plot(loss(Mdls,Xtest,Ytest,'Mode','Cumulative'),'r--') legend('Trees without surrogate splits','Trees with surrogate splits') xlabel('Number of trees') ylabel('Test classification error')

El valor del error disminuye a medida que aumenta el número de árboles, lo que indica un buen rendimiento. El error de clasificación es menor para el modelo entrenado con divisiones sustitutas.

Compruebe la significancia estadística de la diferencia en los resultados con mediante el uso de.compareHoldout Esta función utiliza la prueba McNemar.

[~,p] = compareHoldout(Mdls,Mdl,Xtest,Xtest,Ytest,'Alternative','greater')
p = 0.1051 

El valor bajo indica que el conjunto con divisiones sustitutas es mejor de una manera estadísticamente significativa.p

Estimar la importancia del predictor

Las estimaciones de importancia del predictor pueden variar dependiendo de si un árbol utiliza divisiones sustitutas o no. Después de estimar la importancia del predictor, puede excluir predictores sin importancia y entrenar un modelo de nuevo. La eliminación de predictores sin importancia ahorra tiempo y memoria para las predicciones y facilita la comprensión de las predicciones.

Estime las medidas de importancia predictora mediante el permuting de observaciones fuera de bolsa. Luego, encuentra los cinco predictores más importantes.

imp = oobPermutedPredictorImportance(Mdl); [~,ind] = maxk(imp,5)
ind = 1×5

     3     5    27     7     8

imps = oobPermutedPredictorImportance(Mdls); [~,inds] = maxk(imps,5)
inds = 1×5

     5     3     7    27     8

Los cinco predictores más importantes son los mismos, pero las órdenes de importancia son diferentes.

Si los datos de entrenamiento incluyen muchos predictores y desea analizar la importancia del predictor, a continuación, especifique la función como para los estudiantes de árbol del conjunto.'NumVariablesToSample'templateTree'all' De lo contrario, el software podría no seleccionar algunos predictores, subestimar su importancia. Para ver un ejemplo, vea.Seleccione predictores para bosques aleatorios

Consulte también

| |

Temas relacionados