boost_from_prediction.R 1.24 KB
Newer Older
1
library(lightgbm)
Guolin Ke's avatar
Guolin Ke committed
2

3
4
5
# Load in the agaricus dataset
data(agaricus.train, package = "lightgbm")
data(agaricus.test, package = "lightgbm")
Guolin Ke's avatar
Guolin Ke committed
6
dtrain <- lgb.Dataset(agaricus.train$data, label = agaricus.train$label)
7
dtest <- lgb.Dataset.create.valid(dtrain, data = agaricus.test$data, label = agaricus.test$label)
Guolin Ke's avatar
Guolin Ke committed
8
9

valids <- list(eval = dtest, train = dtrain)
10
#--------------------Advanced features ---------------------------
11
12
# advanced: start from an initial base prediction
print("Start running example to start from an initial prediction")
13
14

# Train lightgbm for 1 round
15
param <- list(
16
17
18
    num_leaves = 4L
    , learning_rate = 1.0
    , nthread = 2L
19
20
    , objective = "binary"
)
21
bst <- lgb.train(param, dtrain, 1L, valids = valids)
22

Guolin Ke's avatar
Guolin Ke committed
23
# Note: we need the margin value instead of transformed prediction in set_init_score
24
25
ptrain <- predict(bst, agaricus.train$data, type = "raw")
ptest  <- predict(bst, agaricus.test$data, type = "raw")
Guolin Ke's avatar
Guolin Ke committed
26
27
28

# set the init_score property of dtrain and dtest
# base margin is the base prediction we will boost from
29
30
set_field(dtrain, "init_score", ptrain)
set_field(dtest, "init_score", ptest)
Guolin Ke's avatar
Guolin Ke committed
31

32
print("This is result of boost from initial prediction")
33
34
35
bst <- lgb.train(
    params = param
    , data = dtrain
36
    , nrounds = 5L
37
38
    , valids = valids
)