나는 중간 회귀에 중점을 두지 않고 대신 높은 양자 (예 : 75 번째) 를 통해 Quantile Regression (예 : via gbm
또는 quantreg
R)을 사용하고 있습니다. 예측 모델링 배경에서 모델이 테스트 세트에 얼마나 적합한 지 측정하고이를 비즈니스 사용자에게 설명 할 수 있기를 원합니다. 내 질문은 어떻게? 연속 대상이있는 일반적인 설정에서 다음을 수행 할 수 있습니다.
- 전체 RMSE 계산
- 예측 된 값으로 데이터 세트를 디케이 팅하고 실제 평균을 각 디클에서 예측 된 평균과 비교합니다.
- 기타.
이 경우 예측을 비교할 실제 값이없는 경우 (최소한 생각하지 않음) 어떻게해야합니까?
예제 코드는 다음과 같습니다.
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)
조건부 분포의 백분위 수를 관찰하지 않기 때문에 이제는 무엇입니까?
더하다:
나는 몇 가지 방법을 가정했으며 올바른 방법과 더 좋은 방법이 있는지 알고 싶습니다. 첫 번째 해석 방법도 있습니다.
손실 함수에서 평균값을 계산하십시오.
qregLoss<-function(actual, estimate,quantile) { (sum((actual-estimate)*(quantile-((actual-estimate)<0))))/length(actual) }
이것은 Quantile 회귀에 대한 손실 함수입니다. 그러나 값을 어떻게 해석합니까?
예를 들어 테스트 세트에서 75 번째 백분위 수를 계산하는 경우 예측 값이 실제 시간의 약 75 %보다 커야한다고 기대해야합니까?
모델이 새로운 사례를 얼마나 잘 예측하는지 설명하기위한 공식적이거나 휴리스틱 한 다른 방법이 있습니까?