Tôi đang sử dụng hồi quy lượng tử (ví dụ thông qua gbm
hoặc quantreg
trong R) - không tập trung vào trung vị mà thay vào đó là một lượng tử trên (ví dụ 75). Xuất phát từ một nền tảng mô hình dự đoán, tôi muốn đo lường mức độ phù hợp của mô hình trên một bộ thử nghiệm và có thể mô tả điều này cho người dùng doanh nghiệp. Câu hỏi của tôi là như thế nào? Trong một cài đặt điển hình với mục tiêu liên tục, tôi có thể làm như sau:
- Tính toán RMSE tổng thể
- Giải mã dữ liệu được đặt theo giá trị dự đoán và so sánh trung bình thực tế với trung bình dự đoán trong mỗi decile.
- Vân vân.
Điều gì có thể được thực hiện trong trường hợp này, nơi thực sự không có giá trị thực tế (ít nhất tôi không nghĩ) để so sánh dự đoán với?
Đây là một mã ví dụ:
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)
Bây giờ thì sao - vì chúng ta không quan sát phần trăm phân phối có điều kiện?
Thêm vào:
Tôi đã đưa ra giả thuyết về một số phương pháp và tôi muốn biết liệu chúng có đúng không và liệu có phương pháp nào tốt hơn không - cũng là cách diễn giải đầu tiên:
Tính giá trị trung bình từ các hàm mất:
qregLoss<-function(actual, estimate,quantile) { (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual) }
Đây là hàm mất cho hồi quy lượng tử - nhưng làm thế nào để chúng ta giải thích giá trị?
Chúng ta có nên hy vọng rằng nếu ví dụ chúng ta đang tính phần trăm thứ 75 mà trên một tập kiểm tra, giá trị dự đoán sẽ lớn hơn giá trị thực khoảng 75% thời gian không?
Có các phương pháp khác chính thức hoặc heuristic để mô tả mức độ tốt của mô hình dự đoán các trường hợp mới?