一. 确定最佳决策树数量
选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。
先给定boosting主要参数一个初始值,后续再进行调优。
1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。
2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。
3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。
4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。
5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。
二. 主要参数调优
对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。
这里通常使用GridSearch。可先寻找max_depth、min_child_weight,确定后,再对gamma、subsample等调优。
三. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。
四. 降低学习速率,确定理想参数。
参数
xgboost 中,objective 是模型学习任务参数(learning task parameters)中的目标参数,它指定训练任务的目标。
objective 参数详解
objective
参数默认值为 reg:squarederror
。
-
reg:squarederror
:以均方差(即 MSE)损失函数为最小化的回归问题任务。 -
reg:squaredlogerror
:以均方根对数误差为最小化的回归问题任务。 -
reg:logistic
:逻辑回归的二分类,评估默认使用均方根误差(rmse)。 -
reg:pseudohubererror
:以 Pseudo-Huber 损失函数的回归问题。 -
reg:gamma
:使用对数链接(log-link)进行伽马回归。输出是伽马分布的平均值。例如,对于建模保险索赔严重性或对可能是伽马分布的任何结果,它可能很有用。 -
reg:tweedie
:使用对数链接(log-link)进行 Tweedie 回归。常用于建模保险的总损失,或用于可能是 Tweedie-distributed 的任何结果。 -
binary:logistic
:逻辑回归的二分类,输出的也是分类的概率,和reg:logistic
一样,不同的是默认采用错误率评估指标。 -
binary:logitraw
:逻辑回归的二分类,但在进行逻辑回归转换之前直接输出分类得分。 -
binary:hinge
:基于 Hinge 损失函数的二分类,预测输出不是 0 就是 1,而不是分类的概率值。 -
count:poisson
:基于泊松回归的计数任务,输出泊松分布的平均值。-
max_delta_step
:可以设置该值,默认为 0.7。
-
-
survival:cox
:基于 Cox 风险比例回归模型的生存分析任务,如癌症患者生存概率等。 -
survival:aft
:基于加速失效模型(aft)的生存分析任务。 -
aft_loss_distribution
:概率密度函数,基于survival:aft
和 aft-nloglik 作为评价指标。 -
multi:softmax
:使用 softmax 多分类器的多分类任务,返回预测的类别,同时也要设置分类的个数。 -
multi:softprob
:和 softmax 一样,但是输出的一个形式为ndata * nclass
的向量,可以进一步将矩阵 reshape 成 ndata * nclass 的指标,输出的是每个类别的概率值。 -
rank:pairwise
:使用 LambdaMART 进行文档对方法排名(pairwise),并使成对损失最小化。 -
rank:ndcg
:使用 LambdaMART 进行文档列表方法排名(listwise),并使标准化折让累积收益(NDCG)最大化。 -
rank:map
:使用 LambdaMART 进行文档列表方法排名(listwise),并使平均准确率(MAP)最大化。
网友评论