• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

LGBM函数及参数详解

LGBM Python API
Dataset
class lightgbm.Dataset(data, label=None, max_bin=None, reference=None, weight=None, group=None, init_score=None, silent=False, feature_name=’auto’, categorical_feature=’auto’, params=None, free_raw_data=True)

创建一个带label的训练集和交叉验证集

Booster
class lightgbm.Booster(params=None, train_set=None, model_file=None, silent=False) #booster可用lgb来代替

params 字典形式的参数
train_set Training dataset.
model_file model文件的路径
silent 构建模型时是否打印信息
只要有lgb实例,就可以调用下列函数 ,包括 predict,

lgb.add_valid 添加交叉训练集

lgb.attr(key) Get attribute string from the Booster.

lgb.current_iteration() Get the index of the current iteration.

lgb.dump_model(num_iteration=-1) Dump Booster to json format.

lgb.eval(data, name, feval=None) Evaluate for data. Result – List with evaluation results.

lgb.eval_train(feval=None) Evaluate for training data.

lgb.eval_valid(feval=None) Evaluate for validation data.

lgb.feature_importance(importance_type=’split’, iteration=-1) Get feature importances.

lgb.feature_name() Get names of features.

lgb.free_dataset() Free Booster’s Datasets.

lgb.free_network() Free Network.

lgb.get_leaf_output(tree_id, leaf_id) Get the output of a leaf.

lgb.num_feature() Get number of features.

predict(data, num_iteration=-1, raw_score=False, pred_leaf=False, pred_contrib=False, data_has_header=False, is_reshape=True, pred_parameter=None)

lgb.reset_parameter(params)

lgb.rollback_one_iter() Rollback one iteration.

lgb.save_model(filename, num_iteration=-1)

lgb.set_attr(**kwargs) Set the attribute of the Booster.

lgb.set_network(machines, local_listen_port=12400, listen_time_out=120, num_machines=1) Set the network configuration.

lgb.set_train_data_name(name)

lgb.update(train_set=None, fobj=None) Update for one iteration.

Train API
lightgbm.train
lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None, fobj=None, feval=None, init_model=None, feature_name=’auto’, categorical_feature=’auto’, early_stopping_rounds=None, evals_result=None, verbose_eval=True, learning_rates=None, keep_training_booster=False, callbacks=None)

params (dict) – Parameters for training.
train_set (Dataset) – Data to be trained.
num_boost_round (int_,_ optional (default=100)) – 迭代次数,也就是弱学习器的数量
valid_sets – List of data to be evaluated during training.
训练参数中没有单个弱学习器的参数(即决策树的参数) ,params表示所有弱学习器的参数

params参数包括:
“objective” : “regression”, “binary”,
“metric” : “rmse”,”auc”
“boosting”: ‘gbdt’,
“max_depth”: -1,
“min_child_samples”: 20,
“num_leaves” : 31,
“learning_rate” : 0.1,
“subsample” : 0.8,
“colsample_bytree” : 0.8,
“verbosity”: -1
“bagging_freq”: 5,
“bagging_fraction” : 0.4,
“feature_fraction” : 0.05,
“min_data_in_leaf”: 80,
“min_sum_heassian_in_leaf”: 10,
“tree_learner”: “serial”,
“boost_from_average”: “false”,
“lambda_l1” : 5,
“lambda_l2” : 5
“bagging_seed” : random_state
“seed”: random_state
boosting_type

提升算法类型:‘gbdt’,‘dart’,‘goss’,‘rf’ 。默认算法为gbdt,一般用的最多。

dart:Dropouts meet Multiple Additive Regression Trees,是利用dropout解决过拟合的Regression Trees,利用了深度神经网络中dropout设置的技巧,随机丢弃生成的决策树,然后再从剩下的决策树集中迭代优化提升树,特点是

因为随机dropout不使用用于保存预测结果的buffer所以训练会更慢
因为随机,早停可能不够稳定
dart与gbdt的不同点:计算下一棵树要拟合的梯度的时候,仅仅随机从已经生成的树中选取一部分。 DART添加一棵树时需 要先归一化。

goss :基本思想是首先对训练集数据根据梯度排序,预设一个比例划分梯度大小,保留在所有样本中梯度大的数据样本;再设 置一个采样比例,从梯度小的样本中按比例抽取样本。为了弥补对样本分布造成的影响,GOSS算法在计算信息增益时,会 对较小梯度的数据集乘以一个系数,用来放大。这样,在计算信息增益时,算法可以更加关注“未被充分训练”的样本数据。 GOSS通过对较小的样本数据集估算增益,大大的减少了计算量。而且通过证明,GOSS算法不会过多的降低训练的精度。

rf :随机森林,很熟悉了。

num_leaves

因为LightGBM使用的是leaf-wise的算法,因此在调节树的复杂程度时,使用的是num_leaves而不是max_depth。大致换算关系:num_leaves = 2^(max_depth)。它的值的设置应该小于2^(max_depth),否则可能会导致过拟合。

max_depth

每个弱学习器也就是决策树的最大深度,-1表示不限制,

n_estimators

弱学习器的数目,因为gbdt原理是利用通过梯度不断拟合新的弱学习器,直到达到设定的弱学习器的数量。

learning_rate

Boosting learning rate.

max_bin

为直方图算法中特征值离散化的分段数量

lightgbm.cv
lightgbm.cv(params, train_set, num_boost_round=10, folds=None, nfold=5, stratified=True, shuffle=True, metrics=None, fobj=None, feval=None, init_model=None, feature_name=’auto’, categorical_feature=’auto’, early_stopping_rounds=None, fpreproc=None, verbose_eval=None, show_stdv=True, seed=0, callbacks=None)


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址