Estoy usando la regresión cuantil (por ejemplo, a través de gbm
o quantreg
en R), sin centrarme en la mediana, sino en un cuantil superior (por ejemplo, 75º). Viniendo de un entorno de modelado predictivo, quiero medir qué tan bien se ajusta el modelo en un conjunto de prueba y poder describir esto a un usuario comercial. Mi pregunta es como? En un entorno típico con un objetivo continuo, podría hacer lo siguiente:
- Calcule el RMSE general
- Decile los datos establecidos por el valor predicho y compare el promedio real con el promedio predicho en cada decil.
- Etc.
¿Qué se puede hacer en este caso, donde realmente no hay un valor real (al menos no creo) para comparar la predicción?
Aquí hay un código de ejemplo:
install.packages("quantreg")
library(quantreg)
install.packages("gbm")
library(gbm)
data("barro")
trainIndx<-sample(1:nrow(barro),size=round(nrow(barro)*0.7),replace=FALSE)
train<-barro[trainIndx,]
valid<-barro[-trainIndx,]
modGBM<-gbm(y.net~., # formula
data=train, # dataset
distribution=list(name="quantile",alpha=0.75), # see the help for other choices
n.trees=5000, # number of trees
shrinkage=0.005, # shrinkage or learning rate,
# 0.001 to 0.1 usually work
interaction.depth=5, # 1: additive model, 2: two-way interactions, etc.
bag.fraction = 0.5, # subsampling fraction, 0.5 is probably best
train.fraction = 0.5, # fraction of data for training,
# first train.fraction*N used for training
n.minobsinnode = 10, # minimum total weight needed in each node
cv.folds = 5, # do 3-fold cross-validation
keep.data=TRUE, # keep a copy of the dataset with the object
verbose=TRUE) # don’t print out progress
best.iter<-gbm.perf(modGBM,method="cv")
pred<-predict(modGBM,valid,best.iter)
¿Y ahora qué, ya que no observamos el percentil de la distribución condicional?
Añadir:
Hipoteticé varios métodos y me gustaría saber si son correctos y si hay otros mejores, también cómo interpretar el primero:
Calcule el valor promedio de las funciones de pérdida:
qregLoss<-function(actual, estimate,quantile) { (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual) }
Esta es la función de pérdida para la regresión cuantil, pero ¿cómo interpretamos el valor?
¿Deberíamos esperar que si, por ejemplo, estamos calculando el percentil 75 que en un conjunto de prueba, el valor pronosticado debería ser mayor que el valor real alrededor del 75% del tiempo?
¿Existen otros métodos formales o heurísticos para describir qué tan bien el modelo predice nuevos casos?
Respuestas:
Una referencia útil puede ser Haupt, Kagerer y Schnurbus (2011) discutiendo el uso de medidas específicas de cuantil de precisión predictiva basadas en validaciones cruzadas para varias clases de modelos de regresión cuantil.
fuente
Usaría la pérdida de pinball (definida en el inicio de la segunda página de https://arxiv.org/pdf/1102.2101.pdf ) y la interpretaría como el error absoluto medio (MAE) para el cuantil que está modelando, por ejemplo , digamos para un error de 100: "El error absoluto medio de nuestro modelo con respecto al 75% real en nuestros datos de prueba es 100".
Tenga en cuenta que esto no es comparable al RMSE ya que los valores atípicos son mucho menos influyentes.
Para responder a su pregunta (2): ¡Si modela el cuantil del 75%, ajustará el borde que divide la masa de datos! a una proporción de 75:25. Luego, aproximadamente el 25% de los datos de su prueba deben estar por encima de su predicción.
fuente