Performances du modèle en modélisation quantile

14

J'utilise la régression quantile (par exemple via gbmou quantregdans 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:

  1. 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?

  2. 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?

B_Miner
la source
La section 3 de ce document pourrait être utile.
tchakravarty
@tchakravarty Je pense que ce lien est mort
alexpghayes

Réponses:

3

Une référence utile peut être Haupt, Kagerer et Schnurbus (2011) discutant de l'utilisation de mesures spécifiques au quantile de la précision prédictive basées sur des validations croisées pour différentes classes de modèles de régression quantile.

Skullduggery
la source
0

J'utiliserais la perte de flipper (définie au début de la deuxième page de https://arxiv.org/pdf/1102.2101.pdf ) et l'interpréterais comme l'erreur absolue moyenne (MAE) pour le quantile que vous modélisez, par exemple , disons pour une erreur de 100: "L'erreur absolue moyenne de notre modèle concernant le réel 75% -quantile dans nos données de test est de 100."

Gardez à l'esprit que ce n'est pas comparable au RMSE car les valeurs aberrantes sont beaucoup moins influentes.

Pour répondre à votre question (2): Si vous modélisez le quantile à 75%, vous ajusterez la frontière en divisant la masse de données! à un rapport de 75:25. Ensuite, environ 25% de vos données de test devraient se situer au-dessus de votre prédiction.

Sebastian Gruber
la source