一. XGBoost参数类型
作者把所有的参数分成了三类:
参数 | 任务 |
General Parameters (通用参数) | 宏观参数控制 |
Booster Parameters(模型参数) | 控制每一步的booster |
Learning Task Parameters (学习任务参数) | 控制训练目标的表现 |
2.1. 通用参数:
1. booster[默认gbtree]
选择每次迭代的模型,有两种选择:
gbtree:基于树模型;
gblinear:线性模型
2. silent[默认为0]
当设置为1的时候,静默模式开启,不会输出任何信息。
一般这个参数保持默认的0,这样能帮助我们更好的了解模型
3. nthread [默认为最大可能的线程数]
这个参数用来进行多线程控制,应当输入系统的核数
若不设置,CPU会用全部的核
2.2. 模型参数:
1. eta[默认0.3]:学习率;
用于更新叶子节点的权重,乘以该系数,避免步长过大。参数值越大,越可能无法收敛。把学习率eta设置的小一些,小的学习率可以使得后面的学习更加仔细。
2. min_child_weight[默认1]: 叶子节点最小权重的和;这个参数用于避免过拟合,当这个值较大时,可以避免模型学习到局部的特殊样本。该参数非常影响结果,该参数越小,越容易发生过拟合;但是,如果这个值过高,会导致欠拟合。这个参数需要使用cv来调整。
3. max_depth [default: 6]: 每棵树的最大深度,树越高,越容易发生越拟合。
4. max_leaf_nodes: 最大叶节点数(如果定义了该参数,GBM会忽略max_depth参数)
5. gamma [default: 0]:
在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。
这个参数的值越大,算法越保守。在0.1到0.2之间就可以。这个参数后继也是要调整的。
6. max_delta_step [default = 0]:这个参数在更新步骤中起作用,限制每棵树权重改变的最大步长。(这个参数一般用不到)
7. subsample [default: 1]:生成每棵树的随机样本采样的比例。较低的值使得算法更加保守,防止过拟合,太小的值会造成欠拟合。
8. colsample_bytree [default:1]: 用来控制每棵树随机采样的特征比例,典型值:[0.5-1] 。
9. colsample_bylevel:用来控制树的每个节点分裂,列数采样的占比。(一般用subsample和colsample_bytree参数可以起到相同的作用)
10. lambda [default:1]:权重的L2正则化项。参数越大,模型越不容易过拟合。
11. alpha [default: 1]: 权重的L1正则化项。参数越大,模型越不容易过拟合。
12. scale_pos_weight [default: 1]:各类别样本十分不平衡时,把这个参数设定为一个正直,可以使算法更快收敛。
2.3. 学习目标参数:
这个参数用来控制理想的优化目标和每一步结果的度量方法。
1. objective [reg:linear]
这个参数定义需要被最小化的损失函数。最常用的值有:
binary: logistic二分类的逻辑回归,返回预测的概率(不是类别)
multi:softmax使用softmax的多分类器,返回预测的类别(不是概率)
在这种情况下,你还需要多设置一个参数:num_class(类别数目)
multi: softprob和multi:softmax参数一样,返回的是每个数据属于某个类别的概率。
2. eval_metric [默认值取决于objective参数的取值]:对数据的有效度量方法。
对于回归问题,默认值是rmse,对于分类问题,默认值是error。
典型值有:
rmse均方根误差 (回归问题的默认值)
error:二分类错误率(阈值为0.5) (二分类的错误率)
auc:曲线下的面积。
3. seed(默认为0)
随机数的种子
设置它可以复现随机数据的结果,也可以用于调整参数。