Kinerja model dalam pemodelan kuantil


14

Saya menggunakan regresi kuantil (misalnya melalui gbmatau quantregdalam R) - tidak berfokus pada median melainkan kuantil atas (misalnya ke-75). Berasal dari latar belakang pemodelan prediktif, saya ingin mengukur seberapa baik model tersebut cocok pada set uji dan dapat menggambarkan ini kepada pengguna bisnis. Pertanyaan saya adalah bagaimana? Dalam pengaturan tipikal dengan target kontinu saya bisa melakukan hal berikut:

  • Hitung RMSE keseluruhan
  • Decile data yang ditetapkan oleh nilai prediksi dan membandingkan rata-rata aktual dengan rata-rata yang diprediksi di setiap decile.
  • Dll

Apa yang bisa dilakukan dalam kasus ini, di mana sebenarnya tidak ada nilai aktual (saya tidak berpikir setidaknya) untuk membandingkan prediksi?

Berikut ini contoh kode:

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)

Sekarang apa - karena kita tidak mengamati persentil dari distribusi bersyarat?

Menambahkan:

Saya berhipotesis beberapa metode dan saya ingin tahu apakah mereka benar dan apakah ada yang lebih baik - juga bagaimana menafsirkan yang pertama:

  1. Hitung nilai rata-rata dari fungsi kerugian:

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

    Ini adalah fungsi kerugian untuk regresi kuantil - tetapi bagaimana kita menginterpretasikan nilainya?

  2. Haruskah kita berharap bahwa jika misalnya kita menghitung persentil ke-75 bahwa pada set tes, nilai prediksi harus lebih besar dari nilai aktual sekitar 75% dari waktu?

Apakah ada metode lain formal atau heuristik untuk menggambarkan seberapa baik model memprediksi kasus baru?


Bagian 3 dalam makalah ini mungkin berguna.
tchakravarty

@tchakravarty Saya pikir tautan itu sudah mati
alexpghayes

Jawaban:



0

Saya akan menggunakan kerugian pinball (didefinisikan pada awal halaman kedua https://arxiv.org/pdf/1102.2101.pdf ) dan menafsirkannya sebagai kesalahan absolut rata-rata (MAE) untuk kuantil yang Anda modelkan, misalnya , katakanlah untuk kesalahan 100: "Kesalahan absolut rata-rata model kami mengenai 75% nyata-kuantil dalam data pengujian kami adalah 100."

Perlu diingat ini tidak sebanding dengan RMSE karena outlier jauh lebih sedikit berpengaruh.

Untuk menjawab pertanyaan Anda (2): Jika Anda memodelkan kuantil 75%, Anda akan sesuai dengan batas yang membagi massa data! dengan rasio 75:25. Maka sekitar 25% dari data pengujian Anda harus berada di atas prediksi Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.