J'utilise la régression quantile (par exemple via gbm
ou quantreg
dans R) - ne me concentrant pas sur la médiane mais plutôt sur un quantile supérieur (par exemple 75e). Issu d'un arrière-plan de modélisation prédictive, je veux mesurer l'adéquation du modèle avec un ensemble de tests et pouvoir le décrire à un utilisateur professionnel. Ma question est de savoir comment? Dans un cadre typique avec un objectif continu, je pouvais faire ce qui suit:
- Calculez le RMSE global
- Décile l'ensemble de données par la valeur prédite et compare la moyenne réelle à la moyenne prédite dans chaque décile.
- Etc.
Que peut-on faire dans ce cas, où il n'y a vraiment aucune valeur réelle (je ne pense pas du moins) à laquelle comparer la prédiction?
Voici un exemple de code:
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)
Maintenant quoi - puisque nous n'observons pas le centile de la distribution conditionnelle?
Ajouter:
J'ai émis l'hypothèse de plusieurs méthodes et je voudrais savoir si elles sont correctes et s'il y en a de meilleures - aussi comment interpréter la première:
Calculez la valeur moyenne à partir des fonctions de perte:
qregLoss<-function(actual, estimate,quantile) { (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual) }
Il s'agit de la fonction de perte pour la régression quantile - mais comment interpréter la valeur?
Devrions-nous nous attendre à ce que, par exemple, si nous calculons le 75e centile sur un ensemble de test, la valeur prédite devrait être supérieure à la valeur réelle dans environ 75% du temps?
Existe-t-il d'autres méthodes formelles ou heuristiques pour décrire dans quelle mesure le modèle prédit de nouveaux cas?