R

帶曝光的泊松 xgboost

  • July 15, 2016

我試圖模擬一個曝光不均勻的計數因變量。經典 glms 將使用 log(exposure) 作為偏移量,gbm 也是如此,但 xgboost 直到現在才允許偏移量……

試圖在交叉驗證中找到這個示例的缺點(Poisson/負二項式回歸中的偏移量在哪裡?)建議我對頻率(實數)進行建模,而不是按曝光加權計數。

我嘗試使用一些 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

有人可以幫忙嗎?另外,我想知道是否可以使用插入符號的火車來運行所有…

根據答案: https ://stackoverflow.com/questions/34896004/xgboost-offset-exposure

xgboost可以像 in或using一樣處理offsetterm ,但是這種方法的文檔記錄不是很好。glm``gbm``setinfo

在您的示例中,代碼將是: setinfo(xgbMatrix,"base_margin",log(Insurance$Holders))

引用自:https://stats.stackexchange.com/questions/223939

comments powered by Disqus