如何在light gbm train函数中使用light gbm cv results
How to use the light gbm cv results in light gbm train function
我对机器学习还是个新手。我正在尝试使用来自 lgb.cv() 的 5 倍 CV 来训练我的模型,但我不确定如何使用 lgb.train() 中的结果。即我如何在 'lgb_clf' 中使用 'cv results'?我无法理解 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
的输出,不需要再次训练模型。另一方面,如果您正在搜索超参数的最佳值,您可能希望在此 space 中探测多个点,计算每个点的交叉验证分数,然后选择得分最高的点。然后,您将使用由此找到的超参数重新训练模型。
我对机器学习还是个新手。我正在尝试使用来自 lgb.cv() 的 5 倍 CV 来训练我的模型,但我不确定如何使用 lgb.train() 中的结果。即我如何在 'lgb_clf' 中使用 'cv results'?我无法理解 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
的输出,不需要再次训练模型。另一方面,如果您正在搜索超参数的最佳值,您可能希望在此 space 中探测多个点,计算每个点的交叉验证分数,然后选择得分最高的点。然后,您将使用由此找到的超参数重新训练模型。