Настройка xgboost с xgb.train, обеспечивающей набор проверки в R

Связанные вопросы здесь и здесь. Обычный способ настройки xgboost (то есть nrounds) - это использование xgb.cv, который выполняет перекрестную проверку в k-кратном порядке, например:

require(xgboost)
data(iris)
set.seed(1)
index = sample(1:150)
X = as.matrix(iris[index, 1:4])
y = as.matrix(as.numeric(iris[index, "Species"])) - 1
param = list(eta=0.1, objective="multi:softprob")
xgb.cv(params=param, data=X, nrounds=50, nfold=5, label=y, num_class=3)
> train.merror.mean train.merror.std test.merror.mean test.merror.std
> 1:          0.021667         0.009501         0.040000        0.043461
> 2:          0.018333         0.006972         0.033333        0.047141
> 3:          0.018333         0.006972         0.033333        0.047141
> 4:          0.018333         0.006972         0.033333        0.047141

В любом случае, я хочу настроить xgboost, предоставив набор проверки. Это невозможно при использовании xgb.cv, Кажется, что это может быть достигнуто с помощью xgb.train:

require(xgboost)
data(iris)
set.seed(1)
index = sample(1:150)
indexTrain = index[1:100]
indexValid = index[101:150]
Xtrain = as.matrix(iris[indexTrain, 1:4])
Xvalid = as.matrix(iris[indexValid, 1:4])
yTrain = as.numeric(iris[indexTrain, "Species"]) - 1
yValid = as.numeric(iris[indexValid, "Species"]) - 1
train = xgb.DMatrix(Xtrain, label=yTrain)
valid = xgb.DMatrix(Xvalid, label=yValid)
param = list(eta=0.1, objective="multi:softprob")
watchlist = list(eval=valid, train=train)
model = xgb.train(params=param, data=train, nround=40, watchlist=watchlist,
                  num_class=3)
>[0]    eval-merror:0.060000    train-merror:0.020000
>[1]    eval-merror:0.060000    train-merror:0.030000
>[2]    eval-merror:0.060000    train-merror:0.020000
>[3]    eval-merror:0.060000    train-merror:0.020000

Фактически, во время обучения с использованием xgb.traing можно наблюдать ошибку оценки, напечатанную в консоли. Во всяком случае, кажется, что эта информация теряется, так как единственные атрибуты model являются handle а также raw,

ВОПРОС 1: Как получить вектор ошибки проверки, напечатанной в консоли?

ВОПРОС 2: Как получить вектор стандартной ошибки отдельных ошибок проверки, таких как однажды созданная xgb.cv?

EDIT1: в строках 58 и 59 здесь кажется, что автор может извлечь ошибку проверки. Во всяком случае, я не могу адаптироваться, чтобы сделать то же самое с набором данных радужной оболочки.

EDIT2: еще один (без ответа) строго связанный вопрос здесь

0 ответов

Другие вопросы по тегам