24Xgboost集成算法

本文详细介绍了Xgboost的原理,包括如何利用泰勒展开优化目标函数,以及在实际案例中应用Xgboost进行糖尿病数据集的分类,通过不断迭代提升模型效果。文章还探讨了Adaboost算法,它是集成多个弱分类器的算法,通过调整分类器权重来提高整体性能。
摘要由CSDN通过智能技术生成

唐宇迪《python数据分析与机器学习实战》学习笔记
24Xgboost集成算法

1.Xgboost的原理、推导及求解实例

xgboost可以与决策树结合起来,之前用决策树都是做分类任务,但其实可以做一些回归任务。
叶子节点可以结合权重项,正代表要玩游戏,负数代表不愿意玩。单棵树表达效果不太好,所以采用集成用多棵树(弱分类器)叠加评分值去评估。
在这里插入图片描述在这里插入图片描述
每增加一颗树肯定是希望表达效果变好,所以可看成提升的算法。下列最开始0树预测值为0,接着加一颗树结果表达如下,每次加树前面模型保持不变,以前者为基础重新形成一棵树。
在这里插入图片描述
在这里插入图片描述
之前讲的决策树有惩罚项限制叶子节点个数避免过拟合,这里也要限制,惩罚项如下,树的个数(T)越多惩罚力度越大前面还有个惩罚力度®,后面加w参数的L2惩罚。
在这里插入图片描述
下图第一个式:所有样本预测与真实的差异总和+每个数的正则化惩罚项总和。
第二式:拆分成(原来的t-1棵树+新树),constant代表产生的常数项。
在这里插入图片描述
变换后发现了残差,假设去预测1000,1号树结果950差50,那么2号树就去预测这个差(50),可能得到30,那么3号数就把两者看为一体980差20,接着去预测这20…,最终结果就是所有树结果累加。 反复加树优化,其实就是让这个残差值尽可能小。
在这里插入图片描述
算法求解 :用提取出的目标函数用泰勒展开近似变化,gi表示一阶导,hi表示二阶导。x表示前面所有建立的模型,在构造新模型时相当于固定值不会变相当于一个常数值了,干脆跟后面的constant结合了。
在这里插入图片描述
继续做一些变换化简,遍历对象由样本(i~n)的转换为叶子节点(j-T)。遍历样本=遍历叶子节点,但是后者更加方便。
在这里插入图片描述
用G表示所有样本一阶导(g)的累加和,用H表示二阶导(h)的累加和。
在这里插入图片描述
对于目标函数想让值最小,就要对其求偏导,并让偏导=0,求出w再代回原式。(G、H在你指定好损失函数后还是很好求的)
在这里插入图片描述
有了目标函数后,计算方式如下例:
在这里插入图片描述
之前决策树的衡量标准是熵值或基尼系数,这里则用我们推导出的目标函数去衡量,切分时对比一下切割前后的目标函数值变化再决定是否切。
在这里插入图片描述
Xgboost的安装 :这里我直接在cmd里面用pip安装的,国外下载太慢所以还加了一个镜像网站

pip install xgboost -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2.Xgboost案例实战

这里使用的数据为印度的糖尿病人数据集进行分类,原始数据如下。
在这里插入图片描述
开始训练模型并预测,计算精度值

#导入要用的模块
import xgboost
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

#导入数据
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") 
# 分割出x、y
X = dataset[:,0:8]
Y = dataset[:,8]
#将x、y分割为训练集、测试集
seed = 7
test_size = 0.33   #训练集占
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值