核心参数
config或者config_file: 一个字符串,给出了配置文件的路径。默认为空字符串。task: 一个字符串,给出了要执行的任务。可以为:'train'或者'training':表示是训练任务。默认为'train'。'predict'或者'prediction'或者'test':表示是预测任务。'convert_model': 表示是模型转换任务。将模型文件转换成if-else格式。
3.application 或者objective 或者 app : 一个字符串,表示问题类型。可以为:
'regression'或者'regression_l2'或者'mean_squared_error'或者'mse'或者'l2_root'或者'root_mean_squred_error'或者'rmse': 表示回归任务,但是使用L2损失函数。默认为'regression''regression_l1'或者mae或者mean_absolute_error: 表示回归任务,但是使用L1损失函数。'huber': 表示回归任务,但是使用huber损失函数。'fair': 表示回归任务,但是使用fair损失函数。'poisson': 表示Poisson回归任务。'quantile': 表示quantile回归任务。'quantile_l2':表示quantile回归任务,但是使用了L2损失函数。'mape'或者'mean_absolute_precentage_error': 表示回归任务,但是使用MAPE损失函数'gamma': 表示gamma回归任务。'tweedie': 表示tweedie回归任务。'binary': 表示二分类任务,使用对数损失函数作为目标函数。'multiclass': 表示多分类任务,使用softmax函数作为目标函数。必须设置num_class参数'multiclassova'或者'multiclass_ova'或者'ova'或者'ovr': 表示多分类任务,使用one-vs-all的二分类目标函数。必须设置num_class参数'xentropy'或者'cross_entropy': 目标函数为交叉熵(同时具有可选择的线性权重)。要求标签是[0,1]之间的数值。'xentlambda'或者'cross_entropy_lambda': 替代了参数化的cross_entropy。要求标签是[0,1]之间的数值。'lambdarank':表示排序任务。 在lambdarank任务中,标签应该为整数类型,数值越大表示相关性越高。label_gain参数可以用于设置整数标签的增益(权重)
4.boosting 或者 'boost' 或者 'boosting_type': 一个字符串,给出了基学习器模型算法。可以为:
'gbdt': 表示传统的梯度提升决策树。默认值为'gbdt''rf': 表示随机森林。'dart': 表示带dropout的gbdtgoss:表示Gradient-based One-Side Sampling的gbdt
5.data或者train 或者train_data:一个字符串,给出了训练数据所在的文件的文件名。默认为空字符串。
lightgbm将使用它来训练模型。
6. valid 或者test或者valid_data 或者test_data: 一个字符串,表示验证集所在的文件的文件名。默认为空字符串。
lightgbm 将输出该数据集的度量。
如果有多个验证集,则用逗号, 分隔。
7. num_iterations 或者num_iteration或者num_tree或者 num_trees或者 num_round或者num_rounds或者 num_boost_round: 一个整数,给出了boosting 的迭代次数。默认为 100。
- 对于
python/R包,该参数是被忽略的。对于python,使用train()/cv()的输入参数num_boost_round来代替。 - 在内部,
lightgbm对于multiclass问题设置了num_class*num_iterations棵树。
8.learning_rate 或者shrinkage_rate: 一个浮点数,给出了学习率。默认为 0.1
在dart 中,它还会影响dropped trees 的归一化权重。
9.num_leaves或者num_leaf: 一个整数,给出了一棵树上的叶子数。默认为 31
10.tree_learner 或者 tree:一个字符串,给出了tree learner,主要用于并行学习。 默认为'serial'。 可以为:
'serial': 单台机器的tree learner'feature': 特征并行的tree learner'data': 数据并行的tree learner'voting': 投票并行的tree learner
11.num_threads 或者 num_thread 或者nthread:一个整数, 给出了lightgbm 的线程数。默认为OpenMP_default。
- 为了更快的速度,应该将它设置为真正的
CPU内核数,而不是线程的数量(大多数CPU使用超线程来使每个CPU内核生成2个线程)。 - 当数据集较小的时候,不要将它设置的过大
- 对于并行学习,不应该使用全部的
CPU核心,因为这会使得网络性能不佳
12.device: 一个字符串,指定计算设备。默认为'cpu'。 可以为'gpu','cpu'。
- 建议使用较小的
max_bin来获得更快的计算速度 - 为了加快学习速度,
GPU默认使用32位浮点数来求和。你可以设置gpu_use_dp=True来启动64位浮点数,但是它会使得训练速度降低。
学员评价