Wydajność modelu w modelowaniu kwantowym


14

Używam regresji kwantyli (na przykład przez gbmlub quantregw R) - nie skupiając się na medianie, ale zamiast tego na górnym kwantylu (np. 75-tym). Opierając się na predykcyjnym tle modelowania, chcę zmierzyć, jak dobrze model pasuje do zestawu testowego i być w stanie opisać to użytkownikowi biznesowemu. Moje pytanie brzmi jak? W typowym ustawieniu z ciągłym celem mógłbym wykonać następujące czynności:

  • Oblicz ogólny RMSE
  • Decile zestaw danych według przewidywanej wartości i porównaj średnią rzeczywistą ze średnią przewidywaną w każdym decylu.
  • Itp.

Co można zrobić w tym przypadku, gdy tak naprawdę nie ma rzeczywistej wartości (nie sądzę, przynajmniej) do porównania prognozy?

Oto przykładowy kod:

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)

Co teraz - skoro nie obserwujemy percentyla rozkładu warunkowego?

Dodaj:

Postawiłem hipotezę na kilka metod i chciałbym wiedzieć, czy są one poprawne, a jeśli są lepsze - także jak interpretować pierwszą:

  1. Obliczyć średnią wartość z funkcji strat:

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

    Jest to funkcja straty dla regresji kwantowej - ale jak interpretujemy wartość?

  2. Czy należy się spodziewać, że jeśli na przykład obliczamy 75 percentyl, który w zestawie testowym, przewidywana wartość powinna być większa niż wartość rzeczywista przez około 75% czasu?

Czy istnieją inne metody formalne lub heurystyczne do opisania, jak dobrze model przewiduje nowe przypadki?


Część 3 tego dokumentu może być przydatna.
tchakravarty

@ tchakravarty Myślę, że link już nie działa
alexpghayes

Odpowiedzi:



0

Chciałbym użyć utraty pinball (zdefiniowanej na początku drugiej strony https://arxiv.org/pdf/1102.2101.pdf ) i zinterpretować ją jako średni błąd bezwzględny (MAE) dla modelowanego kwantyla, na przykład , powiedzmy dla błędu 100: „Średni błąd bezwzględny naszego modelu w odniesieniu do rzeczywistej 75% wartości w naszych danych testowych wynosi 100”.

Pamiętaj, że nie jest to porównywalne z RMSE, ponieważ wartości odstające są znacznie mniej wpływowe.

Aby odpowiedzieć na twoje pytanie (2): Jeśli modelujesz 75% kwantyla, dopasujesz granicę dzieląc masę danych! Punktowo! do stosunku 75:25. Następnie około 25% danych testowych powinno znajdować się powyżej prognozy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.