Prestazioni del modello nella modellazione quantile


14

Sto usando la regressione quantile (ad esempio tramite gbmo quantregin R) - non focalizzandomi sulla mediana ma invece su un quantile superiore (ad esempio 75 °). Provenendo da un background di modellazione predittiva, voglio misurare quanto bene il modello si adatta a un set di test ed essere in grado di descriverlo a un utente aziendale. La mia domanda è: come? In un ambiente tipico con un obiettivo continuo potrei fare quanto segue:

  • Calcola l'RMSE complessivo
  • Decilare il set di dati in base al valore previsto e confrontare la media effettiva con la media prevista in ciascun decile.
  • Eccetera.

Cosa si può fare in questo caso, dove davvero non esiste un valore reale (non credo almeno) con cui confrontare la previsione?

Ecco un esempio di codice:

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)

E adesso? Dal momento che non osserviamo il percentile della distribuzione condizionale?

Inserisci:

Ho ipotizzato diversi metodi e vorrei sapere se sono corretti e se ce ne sono di migliori - anche come interpretare il primo:

  1. Calcola il valore medio dalle funzioni di perdita:

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

    Questa è la funzione di perdita per la regressione quantile - ma come interpretiamo il valore?

  2. Dovremmo aspettarci che se, ad esempio, stiamo calcolando il 75 ° percentile che su un set di test, il valore previsto dovrebbe essere maggiore del valore effettivo circa il 75% delle volte?

Esistono altri metodi formali o euristici per descrivere quanto bene il modello prevede nuovi casi?


La sezione 3 di questo documento potrebbe essere utile.
Tchakravarty,

@tchakravarty Penso che il link sia morto
alexpghayes

Risposte:



0

Vorrei usare la perdita di flipper (definita all'inizio della seconda pagina di https://arxiv.org/pdf/1102.2101.pdf ) e interpretarla come errore assoluto medio (MAE) per il quantile che stai modellando, ad esempio , diciamo per un errore di 100: "L'errore assoluto medio del nostro modello per quanto riguarda il reale 75% -quantile nei nostri dati di test è 100."

Tieni presente che questo non è paragonabile a RMSE poiché i valori anomali sono molto meno influenti.

Per rispondere alla tua domanda (2): Se modelli il quantile al 75%, ti adatterai al bordo suddividendo la massa di dati! con un rapporto di 75:25. Quindi circa il 25% dei dati del test dovrebbe trovarsi al di sopra della previsione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.