建模调参笔记

XGBOOST笔记:

# 常规参数

gbtree 树模型做为基分类器(默认)

gbliner 线性模型做为基分类器

silent

silent=0时,不输出中间过程(默认)

silent=1时,输出中间过程

nthread

nthread=-1时,使用全部CPU进行并行运算(默认)

nthread=1时,使用1个CPU进行运算。

scale_pos_weight

正样本的权重,在二分类任务中,当正负样本比例失衡时,设置正样本的权重,模型效果更好。例如,当正负样本比例为1:10时,scale_pos_weight=10。

# 模型参数

n_estimatores

含义:总共迭代的次数,即决策树的个数

调参:

early_stopping_rounds

含义:在验证集上,当连续n次迭代,分数没有提高后,提前终止训练。

调参:防止overfitting。

max_depth

含义:树的深度,默认值为6,典型值3-10。

调参:值越大,越容易过拟合;值越小,越容易欠拟合。

min_child_weight

含义:叶子节点最小权重和,默认值为1,。

调参:值越大,越容易欠拟合;值越小,越容易过拟合(值较大时,避免模型学习到局部的特殊样本)。

subsample

含义:训练每棵树时,使用的数据占全部训练集的比例。默认值为1,典型值为0.5-1。

调参:防止overfitting。

colsample_bytree

含义:训练每棵树时,使用的特征占全部特征的比例。默认值为1,典型值为0.5-1。

调参:防止overfitting。

# 学习任务参数

learning_rate

含义:学习率,控制每次迭代更新权重时的步长,默认0.3。

调参:值越小,训练越慢。

典型值为0.01-0.2。

objective 目标函数

回归任务

reg:linear (默认)

reg:logistic

二分类

binary:logistic     概率 

binary:logitraw   类别

多分类

multi:softmax  num_class=n   返回类别

multi:softprob   num_class=n  返回概率

rank:pairwise

eval_metric

回归任务(默认rmse)

rmse--均方根误差

mae--平均绝对误差

分类任务(默认error)

auc--roc曲线下面积

error--错误率(二分类)

merror--错误率(多分类)

logloss--负对数似然函数(二分类)

mlogloss--负对数似然函数(多分类)

gamma

惩罚项系数,指定节点分裂所需的最小损失函数下降值。

调参:

alpha

L1正则化系数,默认为1

lambda

L2正则化系数,默认为1

# 代码主要函数:

载入数据:load_digits()

数据拆分:train_test_split()

建立模型:XGBClassifier()

模型训练:fit()

模型预测:predict()

性能度量:accuracy_score()

特征重要性:plot_importance()

General Approach for Parameter Tuning


调参过程:

1.选择一个相对高一点的学习率(learning rate):通常0.1是有用的,但是根据问题的不同,可以选择范围在[0.05,0.3]之间,根据选好的学习率选择最优的树的数目,xgboost有一个非常有用的cv函数可以用于交叉验证并能返回最终的最优树的数目 

2.调tree-specific parameters(max_depth, min_child_weight, gamma, subsample, colsample_bytree) 

3.调regularization parameters(lambda, alpha) 

4.调低学习率并决定优化的参数

step1:Fix learning rate and number of estimators for tuning tree-based parameters

1.设置参数的初始值:

max_depth = 5 : [3,10],4-6都是不错的初始值的选择

min_child_weight = 1 : 如果数据是不平衡数据,初始值设置最好小于1

gamma = 0 : 初始值通常设置在0.1-0.2范围内,并且在后续的调参中也会经常被调节

subsample, colsample_bytree = 0.8 : 通常使用0.8作为调参的开始参数,调整范围为[0.5-0.9]

scale_pos_weight = 1:因为作者的数据为高度不平衡数据

step2:Tune max_depth and min_child_weight

先调这两个参数的原因是因为这两个参数对模型的影响做大

最优的 max_depth=5,min_child_weight=5 

因为之前的步长是2,在最优参数的基础上,在上调下调各一步,看是否能得到更好的参数

step3:Tune gamma

step4: Tune subsample and colsample_bytree

Step 5: Tuning Regularization Parameters

这一步的作用是通过使用过regularization 来降低过拟合问题,大部分的人选择忽略这个参数,因为gamma 有提供类似的功能

Step 6: Reducing Learning Rate

最后一步就是 降低学习率并增加更多的树

你可能感兴趣的:(建模调参笔记)