记录一下lgb的参数
有缺失再补充
LGB(LightGBM)是一种高效、分布式的梯度提升树算法,具有训练速度快、内存占用少等优点。在使用LGB时,可以设置一些参数来优化模型的性能。
一些常用的LGB参数包括:
1.boosting_typ
LGB的boosting_type参数决定了LGB使用的boosting方法,也就是构造决策树的方式。在选择boosting_type时,一般建议先尝试默认参数,即’gbdt’。如果需要加速训练速度而且数据集不是很大,可以尝试’rf’方法;如果需要更好的准确率,可以尝试’dart’或’goss’。
具体而言,不同的boosting_type参数对应的优缺点如下:
- boosting_type=‘gbdt’:默认参数,基于梯度提升决策树的方法,可以用于回归和分类问题,速度较快、准确度较高;
- boosting_type=‘rf’:随机森林的方式构造决策树,可以用于分类和回归问题,训练速度较快,但准确率略低;
- boosting_type=‘dart’:dropout加了加性正则化的方法,训练时间较长,但能够取得较好的准确率,适合细调、调优;多了dropout_rate参数可以使用
- boosting_type=‘goss’:去掉部分梯度较小的样本,可以加速训练速度,适合处理大数据集,训练时间会更少。
boosting_type的选择应该根据具体问题和数据集的性质进行抉择。
2.max_depth
max_depth决定了树的深度,即每个叶节点所达到的最大深度。
默认设置为-1,表示不限制树的深度。然而,这样的最大深度可能导致过拟合,因此必须小心使用。
max_depth的选择需要考虑到数据量、特征维度和连续特征的数量。在大多数情况下,建议设置max_depth为20或更少。 在数据量较小的情况下,通常可以设置较低的max_depth,以避免过度拟合。此外,当连续特征的数量较多时,也可能需要减少max_depth,以避免过拟合。
3.num_leaves
num_leaves参数控制了每个决策树的叶子节点数,num_leaves参数默认值为 31。
num_leaves值越大,模型的复杂度越高,但也容易出现过拟合。
num_leaves值越小,模型的复杂度越低,但也容易出现欠拟合。
4.min_child_samples:
min_child_samples是最小叶子节点样本数。min_child_samples 参数默认值为 20。它用于控制过拟合的情况,过大的值可能导致欠拟合,过小的值可能导致过拟合。
5.min_child_weight:
min_child_weight参数默认值为1。
它是最小子节点中的所有样本权重总和,当某个子节点的样本权重和小于min_child_weight时,该节点不会继续拆分。
如果这个值太小,那么模型就会过拟合;如果这个值太大,那么模型就会欠拟合,这个参数需要根据数据进行调整。
6.feature_fraction:
该参数控制在每一次树木生长时选择多少特征。常用的取值范围是0.5到1。较小的值可以减少过度拟合,较大的值可以增加模型的多样性。可以使用交叉验证来确定最合适的值。
7.bagging_fraction:
这个参数控制在每次迭代中,模型将使用多少数据。0.5到1是一个常见的取值范围,值越小,模型的多样性更强,越不容易过度拟合。但是,如果拟合不足,准确性也可能下降。
8.bagging_freq:
bagging_freq告诉模型考虑每n次迭代进行子采样。例如,如果您将其设置为5,则每5个迭代中,模型才会考虑子采样。减少子采样的频率可以提高准确性,但会增加训练时间。默认为0。
9.objective
LGB的objective参数根据具体问题而定,可从以下两个方向入手选择:
- 回归问题: 如果是回归问题,可以选择以下参数:
- mean_squared_error:均方误差,适用于连续变量。
- mean_absolute_error:绝对值误差,适用于连续变量,可以抵抗异常值。
- huber:是在均方误差和平均绝对误差之间取得平衡的一种鲁棒损失函数,可以缓解异常值的影响。
- 分类问题: 如果是分类问题,可以选择以下参数:
- binary:二分类函数,根据标签的类别进行分类。
- multi-class(softmax):多分类函数,可以在多个类别之间进行选择,并且每个样本只属于一种分类。
- multi-class(ova):多分类函数,每个二分类处理来预测每个类别(样本可以属于多个分类)。
10. metric
LGB(LightGBM)作为一种机器学习算法,有很多可供选择的评价指标,不同的评价指标适用于不同的场景和任务。以下是一些常用的LGB的评价指标及其适用场景:
- 二分类任务:
- binary_logloss: 对数损失函数,可用于训练二分类模型,并可以计算预测概率值。
- auc: ROC曲线下的面积,常用于评估二分类模型的效果。
- 多分类任务:
- multi_logloss: 多分类的对数损失函数,对于多分类问题,需要设置num_class作为类别数目。
- multi_error: 多分类的误差率,表示分类错误的样本数占总样本数的比例。
- 回归任务:
- l2: 均方误差,常用于回归问题。
- rmse: 均方根误差,对于异常值较多的情况,建议使用此指标。
需要根据具体的任务选择合适的评价指标。
11.reg_alpha
LightGBM模型中的reg_alpha参数是一个正则化参数,用于控制模型中L1正则化项的强度。L1正则化是模型训练过程中用于惩罚模型的复杂度,以防止过拟合并提高模型的泛化能力。
具体来说,reg_alpha参数控制L1正则化项的权重大小,它的值越大,对模型的约束越强,从而更有效地控制过拟合。reg_alpha参数的取值过大也可能导致欠拟合。
取值范围:
reg_alpha参数的取值范围为[0,∞)。
12.reg_lambda
reg_lambda是正则化参数,该参数用于控制模型复杂度,防止过拟合。它在目标函数中加入L2正则化惩罚项,使得大的权重被缩小,从而控制模型的复杂度。默认值为0.
取值范围:一般情况下,reg_lambda的取值范围是[0,∞),表示正则化强度的程度。如果该参数为0,则不会有任何正则化影响。如果该参数设置得太大,则可能会导致在训练集上出现欠拟合。
13.subsample
LightGBM中subsample参数的默认值为1,即默认使用全量数据进行训练。subsample参数用于控制每次迭代时用于构建树模型的样本比例,取值范围为(0,1],表示使用的样本比例。当subsample=0.5时,每次树构建时将随机抽取50%的样本用于训练,这可以有效地避免过拟合问题。对于较大的数据集,可以适当减小subsample值,以提高训练速度。而对于较小的数据集,为了保证模型的泛化性能,一般建议将subsample设置为1,即使用全量数据进行训练。
14.随机种子
- seed:控制数据的随机排序和划分。默认为0,即每次运行时都会产生相同的结果。
- bagging_seed:控制bagging操作的随机种子,用于生成不同的训练样本。默认为0。
- feature_fraction_seed:控制特征选择过程中的随机种子,用于生成不同的特征。默认为0。
15.学习率learning_rate
learning_rate参数的默认值是0.1。learning_rate是梯度提升算法中控制步长的参数,也称为学习率。它是梯度下降过程中更新每个模型的权重的速度。较小的学习率会导致模型需要更多的迭代次数才能收敛,但更大的学习率可能会导致模型不收敛或过拟合。
在LightGBM中,learning_rate取值范围一般是0.001到1之间,但也取决于数据集的大小和质量。可以先试用较大的学习率调整其他参数,最后再用较小的学习率获得更优的性能。
16.迭代次数n_estimators
LightGBM中n_estimators参数默认值为100,表示迭代的次数(即树的数量)。
n_estimators的取值范围是正整数,通常在100-1000之间进行调整。增加树的数量可以提高模型的性能,但也会增加模型的计算时间。需要根据数据量和模型复杂度进行适当调整,以达到平衡性能和效率的目的。
当设定了early_stopping_rounds参数时,n_estimators的实际值将根据早期停止的情况进行调整。
版权归原作者 爱挠静香的下巴 所有, 如有侵权,请联系我们删除。