sklearn中的子模块有GradientBoostingClassifier类和GradientBoostingRegressor类来实现GBDT算法。算法实现以及参数解释如下。
* ensemble.GradientBoostingClassifier(loss=‘deviance’,learning_rate=0.1,n_estimators=100,subsample=1.0,criterion=‘friedman_mse’, min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_depth=3,min_impurity_decrease=0.0,min_impurity_split=None,init=None,
random_state=None,max_features=None,verbose=0,max_leaf_nodes=None,warm_start=False,presort=‘auto’)
* ensemble.GradientBoostingRegressor(loss=‘ls’,learning_rate=0.1,n_estimators=100,subsample=1.0,criterion=‘friedman_mse’,min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_depth=3,min_impurity_decrease=0.0,min_impurity_split=None,init=None,random_state=None,
max_features=None,verbose=0,max_leaf_nodes=None,warm_start=False,presort=‘auto’)
loss:用于指定损失函数;对于分类可以选择’deviance’(对数似然损失)和’exponential’(指数损失);对于回归预测、可以选择’ls’(平方损失)、’lad’(绝对值损失)、’huber’(Huber函数损失,即前两种的结合体,误差较小使用平方损失、误差较大使用绝对值损失,误差标准度量用alpha参数指定)、’quantile’(分位数回归损失,需要通过alpha参数设定分位数)。
learning_rate 用于指定模型迭代的学习率或步长,即FM(x)=F(m-1)(x)+v *fm(x) 中的v这个值,通常需要利用交叉验证确定、连同基础模型。
n_estimators用于指定基础模型的个数。
subsample用于指定构建基础模型所使用的抽样比率,默认为1表示使用原始数据构建每一个基础模型;小于1时表示构建随机梯度提升树模型、通常导致方差降低、偏差提高。
criterion 用于指定分割质量的度量,默认为’friedman_mse’均方误差,还可以使用’mse’均方根误差和’mae’绝对误差。
min_samples_split用于指定每个基础模型的根节点或中间节点能够继续分割的最小样本量,默认为2.
min_samples_leaf用于指定每个基础模型的叶节点所包含的最小样本量、默认为1.
min_weight_fraction_leaf 用于指定每个基础模型叶节点最小的样本权重,默认为0表示不考虑叶节点的样本权值。
max_depth表示指定每个基础模型所包含的最大深度,默认为3层,
min_impurity_decrease 用于指定每个基础模型的节点是否继续分割的最小不纯度值,默认为0;如果不纯度超过指定的阈值,则节点需要分割否则不分割。
min_impurity_split 该参数在sklearn0.21版本之后删除、功能与min_impurity_decrease类似
init 用于指定初始的基础模型。用于执行初始的分类或预测。
max_features用于指定每个基础模型所包含的最多分割字段数,默认为None表示使用所有的字段。如果为具体的整数则考虑使用对应的分割字段数;如果为0~1的浮点数则考虑对应百分比的字段个数;如果为’sqrt’则表示最多考虑根号P个字段、与指定’auto’效果一致;如果为’log2’则表示最多使用log2 P 个字段;其中P表示所有自变量的个数。
verbose用于指定GBDT算法在计算过程中是否输出日志信息、默认为0表示不输出。
alpha当loss参数为’huber’或’quantile’时,该参数有效、分别用于指定误差的阈值和分位数。
max_leaf_nodes用于指定每个基础模型最大的叶子节点个数,默认为None,表示对叶子节点个数不做任何限制。
warm_start :bool类型参数 是否使用上一轮的训练结果,默认为False
presort:bool类型参数、表示在构建时是否对数据进行预排序(用于快速寻找**分割点),默认为’auto’。当数据密集时、’auto’自动对数据集做预排序;当数据集比较稀疏时则无需预排序,对于稀疏数据来说设置该参数为True反而会提高模型的错误率。
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199710.html