Xgboost学习笔记
前言
在按照kaggle官网的教程走Titanic预测流程时,完全按照教程走下来发现正确率并不是很高,打算对结果进行优化,从Xgboost和Sklearn入手来进行学习。
学习笔记
关于如何安装使用Xgboost在这里不再叙述,语言以python为例开始学习
Xgboost是什么?
Xgboost是一个极端梯度增长(Extreme Gradient Boosting),基于近似贪心函数(Greedy Function Approximation)。它是尝试将增长树GBM(boosted trees)用自包涵和富有原则的方式解释并应用于监督学习中。
Xgboost能干什么?
Xgboots用于有监督的机器学习,利用预测值xi来对于目标值yi进行预测,通过选择合适的学习模型学习参数来使预测值达到一个更好高的精确度。
Xgboot参数学习
参数选择作为机器学习领域的一个难题,如何选择合适的参数对于最终的模型结果影响极大,这里简单介绍一些经常用到的参数意义。
普通参数
1.booster [default=gbtree]
用来选择booster的类型,有gbtree,gblinear,dart三种模式,gbtree和dart使用树型结构,gblinear使用线性函数。
2.silent [default=0]
运行结果可见与否,0表示可见,1表示不可见。
3.nthread [default to maximum number of threads available if not set]
cpu线程数,默认为最大数目可用线程。
Tree Booster参数
1.eta[default=0.3, alias: learning_rate],range: [0,1]
和学习率相同,用来缩小没一步的步长以防止过拟合。
2.gamma [default=0, alias: min_split_loss], range: [0,∞]
最小分裂损失,用于数的叶子结点数目,即进行剪枝,越大越保守。
3.max_depth [default=6],range: [0,1]
树的最大深度,过大可能会导致过拟合。
4.subsample [default=1], range: [0,1]
随机选择训练样本的概率。
5.colsample_bytree [default=1],range: [0,1]
生成一棵树时的采样率。
学习任务参数
1.objective [default=reg:linear]
用来选择学习的方法,入线性回归,逻辑回归之类的。
经常用到的有以下参数–
“reg:linear”:线性回归
“reg:logistic”:逻辑回归
“binary:logistic”:二分类问题
“multi:softmax”:多分类问题,同时需要设置num_class参数
2.seed [default=0]
用来设置获取随机样本的种子值
补充
1.num_class
用来设置n分类问题中的n值,及分为多少类。
例:
#这是一个四分类问题的Xgboost参数设置
xgb_params = {
'booster':'gbtree',
'objective':'multi:softmax',
'stratified':True,
# 'gamma':1,
'max_depth':9,
'subsample':0.8,
'colsample_bytree':0.8,
'eta':0.08,
'seed':20,
'silent':1,
'num_class':4
}