Xgboost 方式一
from xgboost import XGBClassifier
model = XGBClassifier(
learning_rate =0.1, # 学习率,控制每次迭代更新权重时的步长,默认0.3。值越小,训练越慢
use_label_encoder=False,
n_estimators=10, # 总共迭代的次数,即决策树的个数
max_depth=5, # 深度
min_child_weight=1, # 默认值为1,。值越大,越容易欠拟合;值越小,越容易过拟合
gamma=0, # 惩罚项系数,指定节点分裂所需的最小损失函数下降值。
# 训练每棵树时,使用的数据占全部训练集的比例。默认值为1,典型值为0.5-1。防止overfitting
subsample=0.8,
colsample_bytree=0.8,
objective= 'binary:logistic', # 目标函数
eval_metric = ['merror'], # 验证数据集评判标准
nthread=4,) # 并行线程数
eval_set = [(X_test, y_test),(X_train,y_train)]
model.fit(X_train,y_train,eval_set = eval_set,verbose = True)
Xgboost 方式二
import xgboost as xgb
param = {'learning_rate':0.1, 'n_estimators':10,
'max_depth':5,'min_child_weight':1,'gamma':0,'subsample':0.8,
'colsample_bytree':0.8, 'verbosity':0,'objective':'multi:softprob'}
model = xgb.XGBClassifier(**param)
model.fit(X_train, y_train, early_stopping_rounds=20, eval_metric='merror',
eval_set=[(X_test, y_test)])
Xgboost 方式三
import xgboost as xgb
dtrain = xgb.DMatrix(data = X_train,label = y_train)
dtest = xgb.DMatrix(data = X_test,label = y_test)
param = {'learning_rate':0.1,'use_label_encoder':False,'n_estimators':20,
'max_depth':5,'min_child_weight':1,'gamma':0,'subsample':0.8,
'eval_metric':['merror','mlogloss'],'colsample_bytree':0.8,
'verbosity':0,'objective':'multi:softmax','num_class':3 }
num_round = 10
evals = [(dtrain,'train'),(dtest,'eval')]
bst = xgb.train(param, dtrain, num_round,evals = evals,)
y_ = bst.predict(dtest)
display(y_,accuracy_score(y_test,y_)) # 0.9722222222222222
算法差异:
- 传统GBDT以CART(gini系数进行裂分的决策树)作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
- (经过GBDT推导,目前GBDT也是二阶导数):传统GBDT在优化时只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,XGBoost工具支持自定义代价函数,只要函数可一阶和二阶求导。
- XGBoost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。正则降低了模型的方差,使学习出来的模型更加简单,防止过拟合,这也是XGBoost优于传统GBDT的一个特性。
- Shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点

XGBoost是一种优化的梯度提升决策树库,它在GBDT的基础上增加了许多特性,如正则化、列抽样和并行计算,以提高效率和防止过拟合。文章介绍了XGBoost的基本概念,包括目标函数的定义、泰勒展开和决策树的构建,以及三种不同的使用方式。
最低0.47元/天 解锁文章
1735

被折叠的 条评论
为什么被折叠?



