深入理解XGBoost算法

**

XGBoost:

**

通用参数:

宏观函数控制
Booster>>
gbtree:采用数的结构来运行数据
gblinear:基于线性模型运行数据

Silent>>
静默模式,为1时模型运行不输出

Nthread>>
使用线程数,默认为-1,使用所有线程。

Booster参数:

控制每一步的boooster(tree/regression)。可以调控模型效果和计算代价。调参很大程度上就是在调整booster参数

  • n_estimators:
    生成最大树的数目,也是最大的迭代次数。

  • learning_rate:
    默认为0.3,每一步迭代的步长,可以理解为学习效率(eta)。一般使用0.1左右即可。

  • Gamma
    默认为0,一般使用也是0。Gamma指定节点分裂所需的最小损失函数下降值。范围为:0~正无穷

  • Subsample
    默认为1,控制每棵树随机采样的比例。值越小,越保守,避免过拟合。如果值太小,可能导致欠拟合。典型值:0.5-1,0.5表示平均采样,防止过拟合。范围(0,1],不可取0.

  • Colsample_bytree:
    默认为1,一般使用0.8左右。控制每棵树随机采样的列数的占比(每一列为一个特征)典型值0.5-1,范围(0,1】

  • colsample_bylevel:
    默认为1,一般使用也是1.每棵树每次节点分裂的时候采样的比例。

  • Max_depth:
    默认为6,一般使用3-10之间的数字。控制树的最大深度。值越大,模型学习的越具体。设置为0,代表没有限制。范围:0~正无穷

  • Lambda:
    默认为0,权重L2正则化项。在减少过拟合上很有帮助。

  • Alpha:
    默认为0,权重的L1正则化项。用在很高维度的情况下,加快算法运行速度。

  • Scale_pos_weight:
    默认为1,在各类别样本十分不平衡是,将其设定为一个正值,可以使算法更快收敛。通常设置为负样本的数目与证样本数目的比值。

学习目标参数:

控制训练目标的表现。提供二分类、多分类、回归等学习目标。

Objective【默认=reg:linear】

  •  reg:linear: 线性回归
  •  reg:logistic 逻辑回归
  •  binary:logistic: 二分类逻辑回归,输出为概率
  •  binart:logitraw: 二分类逻辑回归,输出结果
  •  multi:softmax: 多分类,需要同时设置num_class(类别个数)
  •  multi:softprob 多分类,输出结果为概率

eval_metric:【默认=通过目标函数选择】

  •  rmse:均方根误差
  •  mae: 平均绝对值误差
  •  logloss:negative log-likelihood
  •  error:二分类错误率=错误分类数目/全部分类数目。对于预测,预测值>0.5被认为是正类,其他归为负类。error@t:不同的划分阈值可以通过 ‘t’进行设置
  •  merror:多分类错误率=错误分类数目/全部分类数目
  •  mlogloss:多分类log损失
  •  auc:曲线下的面积
  •  map:平均正确率

一般来说,使用xgboost.train(params,dtrain)函数来训练模型。

以二分类为例分别展示输出概率和输出结果类型
输出结果:

model = XGBClassifier{ 
'max_depth':10,
'learning_rate':0.1,
'n_estimators':50,
'silent':1,
'objective':'binary: logitraw',
'booster'='gbtree' 			
}
Model.fit(train_x,train_y,eval_metric=’error’, verbose=True)
#Verbose:调节系统输出,设置成10,每次迭代次会输出。
y_pre = model.predict(test_x)
#最终的输出结果为二分类结果(0或1)

输出概率:(输入数据格式为Dtrain格式)

params ={'learning_rate': 0.1,
         'booster':'gbtree',
         'max_depth': 8,
         'num_boost_round':20,
         'objective': 'binary:logistic',
         'random_state': 30,
         'silent':1,
         'subsample':1.0,
         'min_child_weight':5,
         'colsample_bytree':0.2,
         'scale_pos_weight':0.1,
         'eval_metric':'auc',
         'gamma':0.,
         'reg_lambda':0
         }
watchlist = [ (xg_train,'train'), (xg_test, 'test')]
model = xgb.train(params,xg_train, num_boost_round=50, evals=watchlist)
#50为迭代次数
y_pred = model.predict(xg_test)
#最终的输出结果为目标列为1的概率。

算法调参,调整的参数基本上都属于Booster参数一栏中: 最多次数调整的参数有:max_depth、subsample、min_child_weight 、colsample_bytree、eta
、num_round

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xhaoDream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值