Używam regresji kwantyli (na przykład przez gbm
lub quantreg
w 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ą:
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ść?
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?
Odpowiedzi:
Przydatnym odniesieniem mogą być Haupt, Kagerer i Schnurbus (2011) omawiający stosowanie specyficznych dla kwantyli miar dokładności predykcyjnej opartej na krzyżowych walidacjach dla różnych klas modeli regresji kwantowej.
źródło
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.
źródło