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?