20分钟
scikit-learn API
LGBMModel
实现了lightgbm
类似于scikit-learn
的接口
class lightgbm.LGBMModel(boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=10, max_bin=255, subsample_for_bin=200000, objective=None, min_split_gain=0.0, min_child_weight=0.001, min_child_samples=20, subsample=1.0, subsample_freq=1, colsample_bytree=1.0, reg_alpha=0.0, reg_lambda=0.0, random_state=None, n_jobs=-1, silent=True,class_weight=None, **kwargs)
参数:
boosting_type
: 一个字符串,指定了基学习器的算法。默认为'gbdt'
。 可以为:'gbdt'
: 表示传统的梯度提升决策树。默认值为'gbdt'
'rf'
: 表示随机森林。'dart'
: 表示带dropout
的gbdt
goss
:表示Gradient-based One-Side Sampling
的gbdt
num_leaves
:一个整数,给出了一棵树上的叶子数。默认为31
max_depth
:一个整数,限制了树模型的最大深度,默认值为-1
。- 如果小于0,则表示没有限制。
learning_rate
: 一个浮点数,给出了学习率。默认为0.1
n_estimators
:一个整数,给出了boosted trees
的数量。默认为10
max_bin
: 一个整数, 指定每个特征的最大分桶数量。默认为255
。class_weight
:给出了每个类别的权重占比。- 可以为字符串
'balanced'
,此时类别权重反比与类别的频率。 - 可以为字典,此时人工给出了每个类别的权重。
- 如果为
None
,则认为每个类别的比例一样。
该参数仅用于多类分类问题。对于二类分类问题,可以使用
is_unbalance
参数。- 可以为字符串
subsample_for_bin
:一个整数,表示用来构建直方图的样本的数量。默认为200000
。objective
: 一个字符串、可调用对象或者为None
,表示问题类型以及对应的目标函数。参考2.2.1 核心参数->objective
。 默认为None
,此时对于LGBMRegressor
为'regression'
;对于LGBMClassifier
为'binary'
或者'multiclass'
;对于LGBMRanker
为'lambdarank'
。 如果为自定义的可调用对象,则它的签名为:objective(y_true, y_pred) -> grad, hess
;或者签名为:objective(y_true, y_pred, group) -> grad, hess
。其中:y_true
: 一个形状为(n_samples,)
(对于多类分类问题,则是(n_samples,n_classes)
) 的array-like
对象,给出了真实的标签值。y_pred
: 一个形状为(n_samples,)
(对于多类分类问题,则是(n_samples,n_classes)
)的array-like
对象,给出了预测的标签值。group
: 一个array-like
对象,给出了数据的分组信息。它用于ranking
任务grad
:一个形状为(n_samples,)
(对于多类分类问题,则是(n_samples,n_classes)
) 的array-like
对象,给出了每个样本的梯度值。hess
:一个形状为(n_samples,)
(对于多类分类问题,则是(n_samples,n_classes)
) 的array-like
对象,给出了每个样本的二阶导数值。
min_split_gain
:一个浮点数,表示执行切分的最小增益,默认为0min_child_weight
:一个浮点数,表示一个叶子节点上的最小hessian
之和。(也就是叶节点样本权重之和的最小值) 默认为1e-3
。min_child_samples
: 一个整数,表示一个叶子节点上包含的最少样本数量。默认值为 20subsample
: 一个浮点数,表示训练样本的采样比例。参考2.2.2 学习控制参数->subsample
。subsample_freq
:一个浮点数,表示训练样本的采样频率。参考2.2.2 学习控制参数->subsample_freq
。colsample_bytree
:一个浮点数,表示特征的采样比例。参考2.2.2 学习控制参数->colsample_bytree
。reg_alpha
: 一个浮点数,表示L1
正则化系数。默认为0
reg_lambda
:一个浮点数,表示L2
正则化系数。默认为0
random_state
:一个整数或者None
,表示随机数种子。如果为None
,则使用默认的种子。默认为None
n_jobs
:一个整数,指定并行的线程数量。如果为-1
,则表示使用所有的CPU
。默认为-1
silent
:一个布尔值,指示是否在训练过程中屏蔽输出。默认为True
。kwargs
:其它的参数。
学员评价