簡體   English   中英

如何在R中的gbm模型中抵消曝光?

[英]How can I offset exposures in a gbm model in R?

我正在嘗試將梯度增強機(GBM)用於保險索賠。 觀察結果具有不相等的曝光量,因此我嘗試使用等於曝光對數的偏移量。 我嘗試了兩種不同的方式:

  1. 在公式中添加偏移項。 這導致nan火車和驗證越軌每次迭代。

  2. gbm函數中使用offset參數。 此參數列在gbm.more下。 這會導致出現未使用參數的錯誤消息。

我不能分享我公司的數據,但我使用MASS包中的保險數據表重現了這個問題。 請參閱下面的代碼和輸出。

library(MASS)
library(gbm)

data(Insurance)

# Try using offset in the formula.
fm1 = formula(Claims ~ District + Group + Age + offset(log(Holders)))

fitgbm1 = gbm(fm1, distribution = "poisson",
              data = Insurance,
              n.trees = 10,
              shrinkage = 0.1,
              verbose = TRUE)

# Try using offset in the gbm statement.
fm2 = formula(Claims ~ District + Group + Age)
offset2 = log(Insurance$Holders)

fitgbm2 = gbm(fm2, distribution = "poisson",
              data = Insurance,
              n.trees = 10,
              shrinkage = 0.1,
              offset = offset2,
              verbose = TRUE)

然后輸出:

> source('D:/Rprojects/auto_tutorial/rcode/example_gbm.R')
Iter   TrainDeviance   ValidDeviance   StepSize   Improve
     1     -347.8959             nan     0.1000    0.0904
     2     -348.2181             nan     0.1000    0.0814
     3     -348.3845             nan     0.1000    0.0616
     4     -348.5424             nan     0.1000    0.0333
     5     -348.6732             nan     0.1000    0.0850
     6     -348.7744             nan     0.1000    0.0610
     7     -348.8795             nan     0.1000    0.0633
     8     -348.9132             nan     0.1000   -0.0109
     9     -348.9200             nan     0.1000   -0.0212
    10     -349.0271             nan     0.1000    0.0267

Error in gbm(fm2, distribution = "poisson", data = Insurance, n.trees = 10,  : 
  unused argument (offset = offset2)

我的問題是我做錯了什么? 還有,還有另外一種方法嗎? 我注意到gbm函數中有一個權重參數。 我應該用嗎?

如果指定小於1的訓練分數,則第一個建議有效。默認值為1,表示沒有驗證集。

library(MASS)
library(gbm)

data(Insurance)

# Try using offset in the formula.
fm1 = formula(Claims ~ District + Group + Age + offset(log(Holders)))

fitgbm1 = gbm(fm1, distribution = "poisson",
              data = Insurance,
              n.trees = 10,
              shrinkage = 0.1,
              verbose = TRUE,
              train.fraction = .75)

結果是

Iter   TrainDeviance   ValidDeviance   StepSize   Improve
     1     -428.8293       -105.1735     0.1000    0.0888
     2     -429.0869       -105.3063     0.1000    0.0708
     3     -429.1805       -105.3941     0.1000    0.0486
     4     -429.3414       -105.4816     0.1000    0.0933
     5     -429.4934       -105.5432     0.1000    0.0566
     6     -429.6714       -105.5188     0.1000    0.1212
     7     -429.8470       -105.5200     0.1000    0.0833
     8     -429.9655       -105.6073     0.1000    0.0482
     9     -430.1367       -105.6003     0.1000    0.0473
    10     -430.2462       -105.6100     0.1000    0.0487

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM