使用xgb.train在R中提供验证集调整xgboost
相关问题和建议。调整xgboost(即nrounds)的常用方法是使用执行k倍交叉验证的xgb.cv,例如:使用xgb.train在R中提供验证集调整xgboost,r,machine-learning,cross-validation,xgboost,R,Machine Learning,Cross Validation,Xgboost,相关问题和建议。调整xgboost(即nrounds)的常用方法是使用执行k倍交叉验证的xgb.cv,例如: 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
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行中,作者似乎能够提取验证错误。无论如何,我不能适应对iris数据集做同样的事情
编辑2:另一个(未回答的)严格相关的问题