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的训练集和交叉验证集

    trn_data = lgb.Dataset(X_tr, label=y_tr)
    val_data = lgb.Dataset(X_valid, label=y_valid)

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.

扫描二维码关注公众号,回复: 5808197 查看本文章

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)

猜你喜欢

转载自blog.csdn.net/weixin_38267719/article/details/88963422
今日推荐