超参搜索参数设置
由bigquant创建,最终由bigquant 被浏览 193 用户
需要搜索的参数如以下,更详细的可以参考xgboost的官方文档:
-
学习率,eta [default=0.3],常用的区间 {0.3, 0.1, 0.05, 0.01}
-
树的最大深度,max_depth,常用的区间 {3 ~ 8}
-
采样比例,subsample [default=1],常用的区间 {0.5 ~ 1}
-
分裂收益阈值,gamma [default=0],
\
参数的设置具体还需要根据数据的大小以及因子的数量来设置,主要的两类参数可以用户自定义:
- General Parameters,即与整个模型属基调相关的参数;
- Booster Parameters,即与单颗树生成有关的参数;
- Learning Task Parameters,与模型调优相关的参数;
General Parameters
-
booster [default=gbtree]
即xgboost中基学习器类型,有两种选择,分别是树模型(gbtree)和线性模型(linear models)
-
即控制迭代日志的是否输出,默认输出;
-
nthread [default to maximum number of threads available if not set]
即控制模型训练调用机器的核心数,与sklearn中n_jobs的含义相似;
Booster parameters
因为booster有两种类型,常用的一般是树模型,这里只列树模型相关的参数:
-
eta [default=0.3]
学习率,这个相当于sklearn中的learning_rate,常见的设置范围在0.01-0.2之间
-
min_child_weight [default=1]
叶节点的最小权重值;
这个参数与GBM(sklearn)中的“min_samples_leaf”很相似,只不过这里不是样本数,而是权重值,如果样本的权重都是1,这两个参数是等同的;
这个值设置较大时,通常树不会太深,可以控制过拟合,但太大时,容易造成欠拟合的现象,具体调参需要cv;
-
max_depth
树的最大深度,含义很直白,控制数的复杂性;通常取值范围在3-10;
-
max_leaf_nodes
最大叶节点数;一般这个参数与max_depth二选一控制即可;
-
gamma [default=0]
分裂收益阈值;即用来比较每次节点分裂带来的收益,有效控制节点的过度分裂;这个参数的变化范围受损失函数的选取影响;
-
max_delta_step [default=0]
这个参数暂时不是很理解它的作用范围,一般可以忽略它;
-
subsample [default=1]
采样比例;与sklearn中的参数一样,即每颗树的生成可以不去全部样本,这样可以控制模型的过拟合;通常取值范围0.5-1;
-
colsample_bytree [default=1]
特征采样的比例(每棵树);即每棵树不使用全部的特征,控制模型的过拟合;通常取值范围0.5-1;
-
colsample_bylevel [default=1]
特征采样的比例(每次分裂);这个与随机森林的思想很相似,即每次分裂都不取全部变量;当7、8的参数设置较好时,该参数可以不用在意;
-
lambda [default=1]
L2范数的惩罚系数,叶子结点的分数?;
-
alpha [default=0]
L1范数的惩罚系数,叶子结点数?;
-
scale_pos_weight [default=1]
与类别不平衡的问题相关;
Learning Task Parameters
-
objective [default=reg:linear]
目标函数。通常的选项分别是:binary:logistic,用于二分类,产生每类的概率值;multi:softmax,用于多分类,但不产生概率值,直接产生类别结果;multi:softprob,类似softmax,但产生多分类的概率值;
-
eval_metric [ default according to objective ]
评价指标。一般有:rmse ,均方误差;mae ,绝对平均误差;logloss ,对数似然值;error ,二分类错误率;merror ,多分类错误率;mlogloss ;auc
\