1、通用参数
控制XGBoost的宏观功能
名称 | 解释 | 默认值 | 补充 |
---|---|---|---|
booster | 选择每次迭代的模型 | gbtree | gbtree:基于树 gbliner:线性模型 |
slient | 控制是否输出信息 | =1: 不会输出 =0: 输出 输出能够更好的理解模型 | |
nthread | 线程数,=系统核数 | 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它 |
2、Booster参数
尽管有两种booster可供选择,我这里只介绍tree booster,因为它的表现远远胜过linear booster,所以linear booster很少用到。
名称 | 解释 | 默认值 | 补充 |
---|---|---|---|
eta | 类似GBM的learning rate. 通过减少每一步的权重,提高模型的鲁棒性。 | 0.3 [0,1] | 典型值0.01 - 0.2 |
min_child_weight | 决定最小叶子节点样本权重和,用于避免过拟合 | 1 [0, ∞ \infty ∞] | 当值较大时,可以避免模型学习到 局部的特殊样本,但如果过高,会导 致欠拟合,需要使用CV来调整 |
max_depth | 树的最大深度 | 6 [1, ∞ \infty ∞) | 典型值为3 - 10 |
min_leaf_nodes | 树上最大的节点或叶子的数量 | [0, ∞ \infty ∞] | 可以代替max_depth的作用,如果 是二叉树深度为n的树最多生成 n 2 n^2 n2个叶子 |
gamma | 节点分裂所需的最小损失函数下降值 | 0 [0, ∞ \infty ∞] | 在节点分裂时,只有分裂后损失函数 的值下降了,才会分裂这个节点 |
subsample | 随机采样训练样本 | 1 | 减小这个参数的值,算法会更加保守 避免过拟合,典型值0.5-1 |
colsample_bytree | 生成树时进行的列采样 | 1 | 0.5-1 |
剩下的也还有一些参数,但是初级水平接触不到
3、学习目标参数
名称 | 解释 | 默认值 | 经验值 |
---|---|---|---|
objective | 损失函数 | 见下表 | 介绍一下分类参数值,见下表 |
eval_metric | 评价函数 | 回归: rmse 分类: error | 取值有:rmse, mae, logloss, error, merror,mlogloss, auc |
seed | 随机数的种子 | 0 |
其中objective的参数,见下表:
名称 | 解释 |
---|---|
回归问题 | |
reg:linear | 线性回归 |
reg:logistic | 逻辑回归 |
reg:gamma | 使用log-link进行gamma回归。输出是伽玛分布的平均值。它可能是有用的,例如,用于建模保险索赔严重性,或任何可能是伽马分布的结果。 |
reg:tweedie | 带有日志链接的Tweedie回归。它可能是有用的,例如,用于模拟保险中的总损失,或者可能是Tweedie分布的任何结果。 |
分类问题 | |
binary:logistic | 二元分类的逻辑回归,输出概率 |
binary:logitraw | 二元分类的逻辑回归,逻辑变换前的输出得分 |
binary:hinge | 二元分类的铰链损失。这使得预测为0或1,而不是产生概率 |
multi:softmax | 设置XGBoost使用softmax目标进行多类分类,还需要设置num_class(类的数量) |
multi:softprob | 与softmax相同,但输出一个矢量,可以进一步重新整形为矩阵。结果包含属于每个类的每个数据点的预测概率。ndata * nclassndata * nclass |
其他 | |
count:poisson | 计数数据的泊松回归,泊松分布的输出均值,max_delta_step在泊松回归中默认设置为0.7(用于保证优化) |
survival:cox | 对于正确的审查生存时间数据的Cox回归(负值被认为是正确的审查) 请注意: 预测是在风险比率表上返回的(即比例风险函数中的HR = exp(marginal_prediction)), h(t) = h0(t) * HR |
rank:pairwise | 使用LambdaMART执行成对排名,其中成对损失最小化 |
rank:ndcg | 使用LambdaMART执行列表方式排名,其中规范化折扣累积增益(NDCG)最大化 |
rank:map | 使用LambdaMART执行列表方式排名,其中平均平均精度(MAP)最大化 |
疑问:survival:cox在预测中如何发挥作用
4、xgb.cv()的函数
名称 | 解释 | 默认值 | 补充 |
---|---|---|---|
booster | 选择每次迭代的模型 | gbtree | gbtree:基于树 gbliner:线性模型 |
slient | 控制是否输出信息 | =1: 不会输出 =0: 输出 输出能够更好的理解模型 | |
nthread | 线程数,=系统核数 | 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它 |
实例:
import两种XGBoost:
1.xgb - 直接引用xgboost,接下来会用到其中的‘cv’函数
2. XGBClassifier - 是xgboost的sklearn包,允许使用GridSearch和并行处理