如何使用轻gbm cv导致轻gbm训练功能



我对机器学习还是个新手。我正试图使用lgb.CV((中的5倍CV来训练我的模型,但我不确定如何使用lgb.train((的结果。即,我如何在我的"lgb_clf"中使用"CV结果"?我无法理解cv((和train((之间的区别

lgbm_params = {
'objective': 'binary',
'metric': 'auc',
'is_unbalance': 'true',
'boosting': 'gbdt',
'num_leaves': 31,
'feature_fraction': 0.5,
'bagging_fraction': 0.5,
'bagging_freq': 20,
'learning_rate': 0.05,
'verbose': 0
}

metric = 'auc'
cv_folds = 5
num_rounds = 5000

lgtrain = lgb.Dataset(train, label=label)
lgvalid = lgb.Dataset(test,label=label)
cv = lgb.cv(lgbm_params, lgtrain, num_rounds, nfold=cv_folds, metrics={metric}, early_stopping_rounds=100)

lgb_clf = lgb.train(lgbm_params, lgtrain,num_rounds, early_stopping_rounds=100, valid_sets=[lgtrain,lgvalid])

问题是您想使用交叉验证做什么。如果您正在估计预定义的一组超参数的泛化误差,则可以直接获取lgb.cv的输出,无需再次训练模型。另一方面,如果你正在搜索超参数的最佳值,你会想在这个空间中探测多个点,计算每个点的交叉验证分数,并选择分数最好的点。然后,您将使用由此找到的超参数重新训练模型。

最新更新