https://blog.csdn.net/weixin_41580067/article/details/86220782
关于分类算法我看过最好的一篇文章了
- 对于缺失值,xgboost将其划分为左子树和右子树,然后比较左子树和右子树的score,取最大的score为缺失值划分方向
参数
一般参数
(1) booster [default=gbtree],助推器[默认gbtree]
选择要在每次迭代时运行的模型类型。它有2个选项:
gbtree:基于树的模型,gblinear:线性模型
(2)silent [default=0],无声模式[default = 0]:
静音模式激活设置为1,即不会打印正在运行的消息。
取0时表示打印出运行时信息,有助于理解模型。
(3)nthread [默认为未设置的最大线程数]
运行时的线程数(并行处理)。缺省值是当前系统可以获得的最大线程数
(4)num_pbuffer:预测缓冲区大小,通常设置为训练实例的数目。缓冲用于保存最后一步的预测结果,无需人为设置。
(5)num_feature:Boosting过程中用到的特征维数,设置为特征个数。XGBoost会自动设置,无需人为设置。
助推器参数
max_depth [default=6] :树的最大深度,缺省值为6 ,取值范围为:[1,∞]。用于控制过拟合,因为更高的深度将允许模型学习特定于特定样本的关系,需要使用CV函数来进行调优,典型值:3-10
max_leaf_nodes:树中终端节点或叶子的最大数量,可以代替max_depth。gamma [default=0] :Gamma指定节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守,该值可能会根据损失函数而有所不同,因此应进行调整。 取值范围为:[0,∞]
eta [default=0.3] :为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。 eta通过缩减特征的权重使提升计算过程更加保守,使模型更健壮。缺省值为0.3 ,取值范围为:[0,1]
min_child_weight [default=1] :子节点最小样本权重和。如果一个叶子节点的样本权重和小于min_child_weight,则拆分过程结束。在线性回归模型中,该参数是指建立每个模型所需要的最小样本数。可用于避免过拟合,值较大时可以避免模型学习到局部的特殊样本,但值过高时会导致欠拟合。可用CV来调整,范围:[0,∞]
助推器参数
subsample [default=1] :用于训练模型的子样本占整个样本集合的比例,能够防止过拟合,取值范围为:(0,1]
colsample_bytree [default=1] :在建立树时对特征采样的比例,缺省值为1 ,取值范围为:(0,1]
Linear Booster参数:
alpha [default=0] :L1 正则的惩罚系数
lambda [default=0] :L2 正则的惩罚系数
lambda_bias :在偏置上的L2正则。缺省值为0
学习任务参数
- objective [ default=reg:linear ]
定义学习任务及相应的学习目标,可选的目标函数如下:
reg:linear —— 线性回归。
reg:logistic—— 逻辑回归。
binary:logistic—— 二分类的逻辑回归问题,输出为概率。
binary:logitraw—— 二分类的逻辑回归问题,输出的结果为wTx。
count:poisson—— 计数问题的poisson回归,输出结果为poisson分布。
multi:softmax——让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参 数num_class(类别个数)
multi:softprob ——和softmax一样,输出的是ndata * nclass的向量,可以将该向量reshape成 ndata行nclass列的矩阵。每行数据表示样本所属于每个类别的概率。
rank:pairwise——set XGBoost to do ranking task by minimizing the pairwise loss
- eval_metric [ default according to objective ]
校验数据所需要的评价指标,不同的目标函数将会有缺省的评价指标
(rmse for regression, and error for classification, mean average precision for ranking)
用户可以添加多种评价指标,可供的选择如下:
rmse 均方根误差
mae 平均绝对误差
logloss 负对数似然函数值
error 二分类错误率(阈值为0.5)
merror 多分类错误率
mlogloss 多分类logloss损失函数
auc 曲线下面积
- seed [ default=0 ] 随机数的种子。缺省值为0
关于base_score:
base_score就是总体的均值,对于二元分类问题,base_score就是1占据的比重;对于回归问题,base_score就是整体的均值。
如果样本有权重,base_score就应该设置为加权均值。
base_score相当于是迭代的初始的起点,如果设置base_score的话,并且设置为总体均值的话,应该能够起到加快收敛的效果,但是即使没有设置base_score,只要Learning rate适当,迭代步数够多,设置base_score与否也不影响最终结果。