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.

quantilePredict

Clase: TreeBagger

Predecir el cuantil de respuesta usando una bolsa de árboles de regresión

Descripción

ejemplo

YFit = quantilePredict(Mdl,X) Devuelve un vector de medianas de las respuestas previstas, una tabla o matriz de Datos predictores y el uso de la bolsa de árboles de regresión. debe ser un objeto de modelo.XMdlMdlTreeBagger

ejemplo

YFit = quantilePredict(Mdl,X,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, especifique las probabilidades de cuantil o los árboles que se incluirán para la estimación de cuantil.

ejemplo

[YFit,YW] = quantilePredict(___) también devuelve una matriz dispersa de.pesos de respuesta

Argumentos de entrada

expandir todo

Bolsa de árboles de regresión, especificada como un objeto de modelo creado porTreeBagger TreeBagger. El valor de debe ser.Mdl.MethodRegresión

Datos de predictor utilizados para estimar cuantiles, especificados como una matriz o tabla numérica.

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

  • Para una matriz numérica:

    • Las variables que componen las columnas de deben tener el mismo orden que las variables predictoras que entrenaron.XMdl

    • Si ha entrenado usando una tabla (por ejemplo,), entonces puede ser una matriz numérica si contiene todas las variables predictoras numéricas.MdlTblXTbl Si contiene variables predictoras heterogéneas (por ejemplo, tipos de datos numéricos y categóricos) y es una matriz numérica,TblX quantilePredict produce un error.

  • Para una tabla:

    • no admite variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.quantilePredict

    • Si ha entrenado usando una tabla (por ejemplo,), entonces todas las variables predictoras en deben tener los mismos nombres de variables y tipos de datos que aquellas que entrenaron (almacenadas en).MdlTblXMdlMdl.PredictorNames Sin embargo, el orden de columna de no necesita corresponder al orden de columna de. y puede contener variables adicionales (variables de respuesta, pesos de observación, etc.), peroXTblTblX quantilePredict los ignora.

    • Si entrenó con una matriz numérica, los nombres de los predictores y los nombres de las variables predictoras correspondientes deben ser los mismos.MdlMdl.PredictorNamesX Para especificar nombres de predictores durante el entrenamiento, vea el argumento de par nombre-valor de.PredictorNamesTreeBagger Todas las variables predictoras en deben ser vectores numéricos. puede contener variables adicionales (variables de respuesta, pesos de observación, etc.), pero las ignora.XXquantilePredict

Tipos de datos: table | double | single

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

Probabilidad cuantil, especificada como el par separado por comas que consta de y un vector numérico que contiene valores en el intervalo [0,1].'Quantile' Para cada observación (fila) en,X quantilePredict Devuelve los cuantiles correspondientes para todas las probabilidades en.Quantile

Ejemplo: 'Quantile',[0 0.25 0.5 0.75 1]

Tipos de datos: single | double

Índices de árboles que se utilizarán en la estimación de respuesta, especificados como el par separado por comas consistente en un vector numérico de enteros positivos.'Trees''all' Los índices corresponden a las celdas de; cada celda contiene un árbol en el conjunto.Mdl.Trees El valor máximo de debe ser menor o igual que el número de árboles en el conjunto ().TreesMdl.NumTrees

Para'all' quantilePredict utiliza los índices.1:Mdl.NumTrees

Ejemplo: 'Trees',[1 10 Mdl.NumTrees]

Tipos de datos: char | string | single | double

Ponderaciones para atribuir a las respuestas de árboles individuales, especificadas como el par separado por comas que consta de un vector numérico de'TreeWeights' numel(trees) valores no negativos. trees es el valor del argumento de par nombre-valor.Trees

El valor predeterminado es ones(size(trees)).

Tipos de datos: single | double

Indicadores que especifican los árboles que se utilizarán para realizar predicciones para cada observación, especificadas como el par separado por comas que consta de una matriz y una por lógica. es el número de observaciones (filas) en.'UseInstanceForTree'nMdl.TreesnX Las filas corresponden a las observaciones y columnas corresponden a los estudiantes en. indica utilizar todos los árboles para todas las observaciones al estimar los cuantiles.UseInstanceForTreeMdl.Trees'all'

Si UseInstanceForTree(j,k) =, luegotrue quantilePredict utiliza el árbol en Mdl.Trees(trees(k)) Cuando predice la respuesta para la observación X(j,:).

Puede estimar el cuantil utilizando los datos de respuesta directamente en lugar de utilizar las predicciones del bosque aleatorio especificando una fila compuesta enteramente de valores.Mdl.Yfalse Por ejemplo, para estimar el cuantil para la observación j utilizando los datos de respuesta y para utilizar las predicciones del bosque aleatorio para todas las demás observaciones, especifique esta matriz:

UseInstanceForTree = true(size(Mdl.X,2),Mdl.NumTrees);
UseInstanceForTree(j,:) = false(1,Mdl.NumTrees);

Tipos de datos: char | string | logical

Argumentos de salida

expandir todo

Cuantiles estimados, devueltos como un npornumel(tau) matriz numérica. n es el número de observaciones en () yXsize(X,1) tau es el valor de.Quantile Es decir YFit(j,k) es el estimado 100*tau(k)% percentil de la distribución de respuesta dada X(j,:) y el uso.Mdl

, devuelto como unLos pesos de respuesta Ntrainmatriz dispersa.n Ntrain es el número de respuestas en los datos de entrenamiento () y es el número de observaciones en ().numel(Mdl.Y)nXsize(X,1)

quantilePredict predice cuantiles mediante la interpolación lineal de la función de distribución acumulativa empírica (C.D.F.). Para una observación en particular, puede utilizar sus pesos de respuesta para estimar cuantiles utilizando métodos alternativos, como aproximar el C.D.F. utilizando el suavizado del kernel.

Nota

quantilePredict deriva las ponderaciones de respuesta pasando una observación a través de los árboles en el conjunto. Si especifica y compone la filaUseInstanceForTree j enteramente de valores, a continuación,false YW(:,j) = en su lugar, es decir, los pesos de observación.Mdl.W

Ejemplos

expandir todo

Cargue el conjunto de datos.carsmall Considere un modelo que predice la economía de combustible de un automóvil debido al desplazamiento del motor.

load carsmall

Entrena un conjunto de árboles de regresión en bolsas usando todo el conjunto de datos. Especifique 100 estudiantes débiles.

rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression');

es un conjunto.MdlTreeBagger

Realice la regresión de cuantil para predecir la mediana de MPG para todas las observaciones de entrenamiento ordenadas.

medianMPG = quantilePredict(Mdl,sort(Displacement));

es un vector numérico de medianas de medianas que corresponde a la distribución condicional de la respuesta dadas las observaciones ordenadas en. es el número de observaciones en.medianMPGnDisplacementnDisplacement

Trazar las observaciones y las medianas estimadas en la misma figura. Compare la mediana y la media de las respuestas.

meanMPG = predict(Mdl,sort(Displacement));  figure; plot(Displacement,MPG,'k.'); hold on plot(sort(Displacement),medianMPG); plot(sort(Displacement),meanMPG,'r--'); ylabel('Fuel economy'); xlabel('Engine displacement'); legend('Data','Median','Mean'); hold off;

Cargue el conjunto de datos.carsmall Considere un modelo que predice la economía de combustible de un automóvil debido al desplazamiento del motor.

load carsmall

Entrena un conjunto de árboles de regresión en bolsas usando todo el conjunto de datos. Especifique 100 estudiantes débiles.

rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression');

Realice la regresión de cuantil para predecir el 2,5% y el 97,5% de los percentiles para diez desplazamientos de motor equidistantes entre el desplazamiento mínimo y máximo en la muestra.

predX = linspace(min(Displacement),max(Displacement),10)'; quantPredInts = quantilePredict(Mdl,predX,'Quantile',[0.025,0.975]);

es una matriz numérica de 10 por 2 de intervalos de predicción correspondientes a las observaciones en.quantPredIntspredX La primera columna contiene los percentiles 2,5% y la segunda columna contiene los percentiles 97,5%.

Trazar las observaciones y las medianas estimadas en la misma figura. Compare los intervalos de predicción de percentiles y los intervalos de predicción de 95% suponiendo que la distribución condicional de es Gaussiana.MPG

[meanMPG,steMeanMPG] = predict(Mdl,predX); stndPredInts = meanMPG + [-1 1]*norminv(0.975).*steMeanMPG;  figure; h1 = plot(Displacement,MPG,'k.'); hold on h2 = plot(predX,quantPredInts,'b'); h3 = plot(predX,stndPredInts,'r--'); ylabel('Fuel economy'); xlabel('Engine displacement'); legend([h1,h2(1),h3(1)],{'Data','95% percentile prediction intervals',...     '95% Gaussian prediction intervals'}); hold off;

Cargue el conjunto de datos.carsmall Considere un modelo que predice la economía de combustible de un automóvil debido al desplazamiento del motor.

load carsmall

Entrena un conjunto de árboles de regresión en bolsas usando todo el conjunto de datos. Especifique 100 estudiantes débiles.

rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression');

Calcule los pesos de respuesta para una muestra aleatoria de cuatro observaciones de formación. Trace la muestra de formación e identifique las observaciones elegidas.

[predX,idx] = datasample(Mdl.X,4); [~,YW] = quantilePredict(Mdl,predX); n = numel(Mdl.Y);  figure; plot(Mdl.X,Mdl.Y,'o'); hold on plot(predX,Mdl.Y(idx),'*','MarkerSize',10); text(predX-10,Mdl.Y(idx)+1.5,{'obs. 1' 'obs. 2' 'obs. 3' 'obs. 4'}); legend('Training Data','Chosen Observations'); xlabel('Engine displacement') ylabel('Fuel economy') hold off

es una matriz dispersa de-por-4 que contiene los pesos de respuesta.YWn Las columnas corresponden a las observaciones de prueba y las filas corresponden a las respuestas de la muestra de aprendizaje. Los pesos de respuesta son independientes de la probabilidad de cuantil especificada.

Estimar la función de distribución acumulativa condicional (C.C.D.F.) de las respuestas por:

  1. Ordenar las respuestas es ascendente y, a continuación, ordenar los pesos de respuesta utilizando los índices inducidos por la ordenación de las respuestas.

  2. Calcular las sumas acumuladas sobre cada columna de los pesos de respuesta ordenados.

[sortY,sortIdx] = sort(Mdl.Y); cpdf = full(YW(sortIdx,:)); ccdf = cumsum(cpdf);

es el C.C.D.F. empírico de la respuesta dada la observación de la prueba.ccdf(:,j)j

Trace los cuatro C.C.D.F. empíricos en la misma figura.

figure; plot(sortY,ccdf); legend('C.C.D.F. given test obs. 1','C.C.D.F. given test obs. 2',...     'C.C.D.F. given test obs. 3','C.C.D.F. given test obs. 4',...     'Location','SouthEast') title('Conditional Cumulative Distribution Functions') xlabel('Fuel economy') ylabel('Empirical CDF')

Más acerca de

expandir todo

Sugerencias

quantilePredict estima la distribución condicional de la respuesta utilizando los datos de entrenamiento cada vez que se llama. Para predecir muchos cuantiles eficientemente, o cuantiles para muchas observaciones eficientemente, debe pasar como una matriz o tabla de observaciones y especificar todos los cuantiles en un vector utilizando el argumento de par nombre-valor.XQuantile Es decir, evitar llamar a quantilePredict dentro de un bucle.

Algoritmos

  • TreeBagger crece un bosque aleatorio de árboles de regresión utilizando los datos de entrenamiento. Luego, para implementar,bosque aleatorio cuantil quantilePredict predice cuantiles utilizando la distribución condicional empírica de la respuesta dada una observación de las variables predictoras. Para obtener la distribución condicional empírica de la respuesta:

    1. quantilePredict pasa todas las observaciones de entrenamiento a través de todos los árboles en el conjunto, y almacena los nodos de hoja de los cuales las observaciones de entrenamiento son miembros.Mdl.X

    2. quantilePredict de manera similar pasa cada observación a través de todos los árboles en el conjunto.X

    3. Para cada observación en,X quantilePredict:

      1. Estima la distribución condicional de la respuesta calculando para cada árbol.pesos de respuesta

      2. Para la observación en, agrega las distribuciones condicionales para todo el conjunto:kX

        F^(y|X=xk)=j=1nt=1T1Twtj(xk)I{Yjy}.

        es el número de observaciones de entrenamiento () y es el número de árboles en el conjunto ().nsize(Y,1)TMdl.NumTrees

    4. Para la observación en, el cuantil o, equivalentemente, el percentil 100%, eskXττ Qτ(xk)=inf{y:F^(y|X=xk)τ}.

  • Este proceso describe cómo quantilePredict utiliza todos los pesos especificados.

    1. Para todas las observaciones de entrenamiento = 1,..., y todos los árboles elegidos = 1,...,,jntT

      quantilePredict atribuye el producto Vtj = Btjwj,obs a la observación de la formación (almacenada enj Mdl.X(j,:) Y Mdl.Y(j)). Btj es el número de veces que la observación está en la muestra de arranque para el árbol.jtwj,obs es el peso de la observación en Mdl.W(j).

    2. Para cada árbol elegido, quantilePredict identifica las hojas en las que cae cada observación de entrenamiento. Dejar St(Xj) ser el conjunto de todas las observaciones contenidas en la hoja de árbol de la que es miembro la observación.tj

    3. Para cada árbol elegido, quantilePredict Normaliza todos los pesos dentro de una hoja en particular para sumar a 1, es decir,

      vtj=vtjiSt(xj)vti.

    4. Para cada observación de entrenamiento y árbol, quantilePredict incorpora pesas de árbol (wt,tree) especificado por, es decir,TreeWeightsw*tj,tree =wt,treeVtj*Los árboles no elegidos para la predicción tienen 0 de peso.

    5. Para todas las observaciones de prueba = 1,..., en y todos los árboles elegidos = 1,...,kKXtTquantilePredict predice las hojas únicas en las que caen las observaciones, y luego identifica todas las observaciones de entrenamiento dentro de las hojas pronosticadas. quantilePredict atribuye el peso utj tal que

      utj={wtj,tree;if xkSt(xj)0;otherwise.

    6. quantilePredict suma los pesos sobre todos los árboles elegidos, es decir,

      uj=t=1Tutj.

    7. quantilePredict crea ponderaciones de respuesta normalizando las ponderaciones de modo que sumará a 1, es decir,

      wj=ujj=1nuj.

Referencias

[1] Breiman, L. Random Forests. Machine Learning 45, pp. 5–32, 2001.

[2] Meinshausen, N. “Quantile Regression Forests.” Journal of Machine Learning Research, Vol. 7, 2006, pp. 983–999.

Introducido en R2016b