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.

Agregación de bootstrap (embolsado) de árboles de regresión medianteTreeBagger

Estadísticas y machine learning Toolbox™ ofrece dos objetos que admiten la agregación de bootstrap (embolsado) de árboles de regresión: creados mediante el uso y la creación mediante.TreeBaggerTreeBaggerRegressionBaggedEnsemblefitrensemble Ver por diferencias entre y.La comparación y los conjuntos en bolsasTreeBaggerTreeBaggerRegressionBaggedEnsemble

En este ejemplo se muestra el flujo de trabajo para la clasificación utilizando únicamente las características.TreeBagger

Utilice una base de datos de 1985 importaciones de automóviles con 205 observaciones, 25 predictores y 1 respuesta, que es la calificación de riesgo de seguro, o "symboling." Las primeras 15 variables son numéricas y las últimas 10 son categóricas. El índice de simbología toma valores enteros de-3 a 3.

Cargue el conjunto de datos y dividirlo en matrices de predicción y respuesta.

load imports-85 Y = X(:,1); X = X(:,2:end); isCategorical = [zeros(15,1);ones(size(X,2)-15,1)]; % Categorical variable flag

Debido a que el embolsado utiliza dibujos de datos aleatorios, su resultado exacto depende de la semilla aleatoria inicial. Para reproducir los resultados en este ejemplo, utilice la configuración de secuencia aleatoria.

rng(1945,'twister')

Encontrar el tamaño óptimo de la hoja

Para la regresión, la regla general es el tamaño de hoja establecido en 5 y seleccione un tercio de las entidades de entrada para las divisiones de decisión al azar. En el siguiente paso, verifique el tamaño óptimo de la hoja comparando los errores cuadráticos obtenidos por la regresión para varios tamaños de hoja. computa MSE versus el número de árboles cultivados.oobError Debe establecer para obtener predicciones fuera de la bolsa más adelante.OOBPred'On'

leaf = [5 10 20 50 100]; col = 'rbcmy'; figure for i=1:length(leaf)     b = TreeBagger(50,X,Y,'Method','R','OOBPrediction','On',...    'CategoricalPredictors',find(isCategorical == 1),...             'MinLeafSize',leaf(i));     plot(oobError(b),col(i))     hold on end xlabel('Number of Grown Trees') ylabel('Mean Squared Error')  legend({'5' '10' '20' '50' '100'},'Location','NorthEast') hold off

La curva roja (tamaño de hoja 5) produce los valores MSE más bajos.

Estimación de importancia de características

En aplicaciones prácticas, normalmente se cultivan conjuntos con cientos de árboles. Por ejemplo, el bloque de código anterior utiliza 50 árboles para un procesamiento más rápido. Ahora que ha calculado el tamaño óptimo de la hoja, crezca un conjunto más grande con 100 árboles y utilíciese para estimar la importancia de las características.

b = TreeBagger(100,X,Y,'Method','R','OOBPredictorImportance','On',...     'CategoricalPredictors',find(isCategorical == 1),...     'MinLeafSize',5);

Inspeccione la curva de error de nuevo para asegurarse de que nada salió mal durante el entrenamiento.

figure plot(oobError(b)) xlabel('Number of Grown Trees') ylabel('Out-of-Bag Mean Squared Error')

La capacidad de predicción debe depender más de las características importantes que las características no importantes. Puede utilizar esta idea para medir la importancia de las características.

Para cada característica, permuto los valores de esta característica a través de cada observación en el conjunto de datos y mida cuánto peor el MSE se convierte después de la permutación. Puede repetirlo para cada entidad.

Trace el aumento en MSE debido a permuting observaciones fuera de bolsa a través de cada variable de entrada. La matriz almacena el aumento en MSE promediado sobre todos los árboles en el conjunto y dividido por la desviación estándar tomada sobre los árboles, para cada variable.OOBPermutedPredictorDeltaError Cuanto mayor es este valor, más importante es la variable. Al imponer un límite arbitrario en 0,7, puede seleccionar las cuatro características más importantes.

figure bar(b.OOBPermutedPredictorDeltaError) xlabel('Feature Number')  ylabel('Out-of-Bag Feature Importance')

idxvar = find(b.OOBPermutedPredictorDeltaError>0.7)
idxvar = 1×4

     1     2    16    19

idxCategorical = find(isCategorical(idxvar)==1);

La propiedad de las pistas que las observaciones están fuera de bolsa para lo que los árboles.OOBIndicesTreeBagger Con esta propiedad, puede supervisar la fracción de observaciones en los datos de entrenamiento que están en la bolsa para todos los árboles. La curva comienza en aproximadamente 2/3, que es la fracción de observaciones únicas seleccionadas por una réplica de arranque, y baja a 0 en aproximadamente 10 árboles.

finbag = zeros(1,b.NTrees); for t=1:b.NTrees     finbag(t) = sum(all(~b.OOBIndices(:,1:t),2)); end finbag = finbag / size(X,1); figure plot(finbag) xlabel('Number of Grown Trees') ylabel('Fraction of In-Bag Observations')

Cultivar árboles en un conjunto reducido de características

Utilizando solo las cuatro características más poderosas, determine si es posible obtener una potencia predictiva similar. Para empezar, cultivar 100 árboles en estas características solamente. Las dos primeras de las cuatro entidades seleccionadas son numéricas y las dos últimas son categóricas.

b5v = TreeBagger(100,X(:,idxvar),Y,'Method','R',...     'OOBPredictorImportance','On','CategoricalPredictors',idxCategorical,...     'MinLeafSize',5); figure plot(oobError(b5v)) xlabel('Number of Grown Trees') ylabel('Out-of-Bag Mean Squared Error')

figure bar(b5v.OOBPermutedPredictorDeltaError) xlabel('Feature Index') ylabel('Out-of-Bag Feature Importance')

Estas cuatro características más poderosas dan el mismo MSE que el conjunto completo, y el conjunto entrenado en el conjunto reducido clasifica estas características semejantemente el uno al otro. Si elimina las entidades 1 y 2 del conjunto reducido, es posible que la potencia predictiva del algoritmo no disminuya significativamente.

Encontrar Outliers

Para buscar valores atípicos en los datos de entrenamiento, calcule la matriz de proximidad utilizando.fillProximities

b5v = fillProximities(b5v);

El método normaliza esta medida restando la medida de valor atípico medio para toda la muestra. A continuación, se toma la magnitud de esta diferencia y divide el resultado por la desviación absoluta mediana de toda la muestra.

figure histogram(b5v.OutlierMeasure) xlabel('Outlier Measure') ylabel('Number of Observations')

Descubrimiento de clústeres en los datos

Mediante la aplicación de escalado multidimensional a la matriz calculada de las proximidades, puede inspeccionar la estructura de los datos de entrada y buscar posibles clústeres de observaciones. El método devuelve coordenadas escaladas y valores propios para la matriz de proximidad calculada.mdsProx Si se ejecuta con el argumento nombre-valor-par, este método crea un gráfico de dispersión de dos coordenadas a escala.Colors

figure(8) [~,e] = mdsProx(b5v,'Colors','K'); xlabel('First Scaled Coordinate') ylabel('Second Scaled Coordinate')

Evalúe la importancia relativa de los ejes escalados trazando los primeros 20 valores propios.

figure bar(e(1:20)) xlabel('Scaled Coordinate Index') ylabel('Eigenvalue')

Guardar la configuración del conjunto para uso futuro

Para utilizar el conjunto entrenado para predecir la respuesta en los datos no vistos, almacene el conjunto en el disco y recuperarlo más adelante. Si no desea calcular las predicciones para los datos fuera de la bolsa o reutilizar los datos de entrenamiento de cualquier otra manera, no hay necesidad de almacenar el propio objeto de conjunto. Guardar la versión compacta del conjunto es suficiente en este caso. Extraiga el objeto compacto del conjunto.

c = compact(b5v)
c =    CompactTreeBagger Ensemble with 100 bagged decision trees:               Method:           regression        NumPredictors:                    4    Properties, Methods  

Puede guardar el modelo resultante en un archivo.CompactTreeBagger*.mat

Consulte también

| | | | |

Temas relacionados