Modellleistung bei der Quantilmodellierung

14

Ich verwende die Quantil-Regression (zum Beispiel über gbmoder quantregin R) - und konzentriere mich nicht auf den Median, sondern auf ein oberes Quantil (zum Beispiel 75.). Ausgehend von einem prädiktiven Modellierungshintergrund möchte ich messen, wie gut das Modell in ein Test-Set passt, und dies einem Geschäftsbenutzer beschreiben können. Meine frage ist wie? In einer typischen Umgebung mit einem kontinuierlichen Ziel könnte ich Folgendes tun:

  • Berechnen Sie den Gesamt-RMSE
  • Dekilieren Sie den Datensatz mit dem vorhergesagten Wert und vergleichen Sie den tatsächlichen Durchschnitt mit dem in jedem Dekil vorhergesagten Durchschnitt.
  • Etc.

Was kann in diesem Fall getan werden, wenn es wirklich keinen tatsächlichen Wert gibt (glaube ich zumindest nicht), mit dem die Vorhersage verglichen werden kann?

Hier ist ein Beispielcode:

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)

Was nun - da wir das Perzentil der bedingten Verteilung nicht beobachten?

Hinzufügen:

Ich stellte mir verschiedene Methoden vor und würde gerne wissen, ob sie korrekt sind und ob es bessere gibt - auch wie man die ersten interpretiert:

  1. Berechnen Sie den Mittelwert aus den Verlustfunktionen:

    qregLoss<-function(actual, estimate,quantile)
    {
       (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual)
    
    }
    

    Dies ist die Verlustfunktion für die Quantilregression - aber wie interpretieren wir den Wert?

  2. Sollten wir erwarten, dass, wenn wir zum Beispiel das 75. Perzentil eines Testsatzes berechnen, der vorhergesagte Wert in etwa 75% der Fälle größer sein sollte als der tatsächliche Wert?

Gibt es andere formale oder heuristische Methoden, um zu beschreiben, wie gut das Modell neue Fälle vorhersagt?

B_Miner
quelle
Abschnitt 3 in diesem Dokument könnte nützlich sein.
Tschakravarty
@ Tschakravarty Ich denke, dieser Link ist tot
alexpghayes

Antworten:

0

Ich würde den Flipper-Verlust (definiert am Anfang der zweiten Seite von https://arxiv.org/pdf/1102.2101.pdf ) verwenden und ihn beispielsweise als mittleren absoluten Fehler (MAE) für das Quantil interpretieren, das Sie modellieren Sagen wir für einen Fehler von 100: "Der mittlere absolute Fehler unseres Modells in Bezug auf das reale 75% -Quantil in unseren Testdaten ist 100."

Beachten Sie, dass dies nicht mit dem RMSE vergleichbar ist, da Ausreißer viel weniger einflussreich sind.

Um Ihre Frage zu beantworten (2): Wenn Sie das 75% -Quantil modellieren, passen Sie den Rand an, der die Datenmasse aufteilt! Punktweise! zu einem Verhältnis von 75:25. Dann sollten ungefähr 25% Ihrer Testdaten über Ihrer Vorhersage liegen.

Sebastian Gruber
quelle