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)
trn_data = lgb.Dataset(X_tr, label=y_tr)
val_data = lgb.Dataset(X_valid, label=y_valid)
class lightgbm.Booster(params=None, train_set=None, model_file=None, silent=False) #booster可用lgb来代替
只要有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.
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表示所有弱学习器的参数
boosting_type
提升算法类型:‘gbdt’,‘dart’,‘goss’,‘rf’ 。默认算法为gbdt,一般用的最多。
dart:Dropouts meet Multiple Additive Regression Trees,是利用dropout解决过拟合的Regression Trees,利用了深度神经网络中dropout设置的技巧,随机丢弃生成的决策树,然后再从剩下的决策树集中迭代优化提升树,特点是
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(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)