Ich habe versucht, eine zählabhängige Variable mit ungleichmäßiger Belichtung zu modellieren. Klassische glms würden log (Belichtung) als Offset verwenden, auch gbm, aber xgboost erlaubt bis jetzt keinen Offset ...
Der Versuch, einen Nachteil in diesem Beispiel in crossvalidated ( Wohin geht der Offset in Poisson / negative binomiale Regression? ) Zu finden, schlug mir vor, die Frequenz (reelle Zahl) zu modellieren, anstatt die Gewichtung nach Belichtung zu zählen.
Ich habe versucht, um einen xgboost-Code herum zu arbeiten, um dieselbe Methode auf meine Daten anzuwenden, aber ich bin fehlgeschlagen ... Unterhalb des Codes, den ich angegeben habe:
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
Kann jemand helfen? Außerdem habe ich mich gefragt, ob es möglich ist, alle mit dem Caret-Zug zu fahren ...