Saya menggunakan regresi kuantil (misalnya melalui gbm
atau quantreg
dalam 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:
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?
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?