我试图模拟一个曝光不均匀的计数因变量。经典 glms 将使用 log(exposure) 作为偏移量,gbm 也是如此,但 xgboost 直到现在才允许偏移量......
试图在交叉验证中找到这个示例的缺点(Poisson/负二项式回归中的偏移量在哪里?)建议我对频率(实数)进行建模,而不是按 Exposure 加权计数。
我尝试使用一些 xgboost 代码来对我的数据应用相同的方法,但我失败了......在我列出的代码下方:
library(MASS)
data(Insurance)
library(xgboost)
options(contrasts=c("contr.treatment","contr.treatment")) #fissa i
Insurance$freq<-with(Insurance, Claims/Holders )
library(caret)
temp<-dplyr::select(Insurance,District, Group, Age,freq)
temp2= dummyVars(freq ~ ., data = temp, fullRank = TRUE) %>% predict(temp)
xgbMatrix <- xgb.DMatrix(as.matrix(temp2),
label = Insurance$freq,
weight = Insurance$Holders)
bst = xgboost(data=xgbMatrix, label = Insurance$freq, objective='count:poisson',nrounds=5)
#In xgb.get.DMatrix(data, label) : xgboost: label will be ignored.
#strange warning
Insurance$predFreq<-predict(bst, xgbMatrix)
with(Insurance, sum(Claims)) #3151
with(Insurance, sum(predFreq*Holders)) #7127 fails
有人可以帮忙吗?另外,我想知道是否可以使用插入符号的火车来运行所有...