Xgboost通俗理解和总结

目标函数:其中的误差函数可以自定义(满足二阶可导),正则项可以L1或L2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gi = 前t-1棵树的预测与真实值的损失函数在y(t-1)处的导数
在这里插入图片描述
在这里插入图片描述
q(x)就是 输入在叶子节点上的映射,w(qx) 就是映射对应的打分
在这里插入图片描述就是对将要生成的树的打分的惩罚项
在这里插入图片描述
将样本数换算为每个节点上的样本数j,总共T个节点,每个节点的得分w是一样的
在这里插入图片描述

在这里插入图片描述
w衡量打多少分是最好,L就是衡量一个树有多好
在这里插入图片描述

正则化在这里插入图片描述
直观上看,节点数值尽量不极端
举个例子:一场达人秀,树就评委,不同节点对每个人打分数就是w,若w给前九个人0~100区间的分,给最后一个人0 到10000的分,明显不公平啊,打分标准不同啊,太偏向最后一个了,所以要加惩罚

总结来说可能就是:在前1棵树的预测基础上 比较和真实值的区别,以此来影响当前树的生成,(假设结构确定)
当优化方法确定后,树的结构就是依据优化方法的指导,采用贪心算法尝试不同的分裂,寻找一个能使Gain较大的分裂方法,以此确定相对较好的结构。

Xgboost的特点:
1.w是最优化求出来的,不是啥平均值或规则指定的
2.支持自定义loss function
3.支持并行化,boosting技术中下一棵树依赖上述树的训练和预测,所以树与树之间应该是只能串行!那么大家想想,哪里可以并行?! 没错,在选择最佳分裂点,进行枚举的时候并行!(据说恰好这个也是树形成最耗时的阶段)
4.Shrinkage,你可以是几个回归树的叶子节点之和为预测值,也可以是加权,比如第一棵树预测值为3.3,label为4.0,第二棵树才学0.7,….再后面的树还学个鬼,所以给他打个折扣,比如3折,那么第二棵树训练的残差为4.0-3.3*0.3=3.01,这就可以发挥了啦,以此类推,作用是啥,防止过拟合

Xgboost参数:
1)eta:shrinkage参数,更新叶子节点权重时,乘以该系数避免步长过大。
2)min_child_weight:default=1]参数默认是 1,每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。
3) max_depth [default=6]:每颗树最大深度
4)max_leaf_nodes:最大叶结点数
5) gamma [default=0]:后剪枝时,用于控制是否后剪枝的参数。
6)subsample [default=1]:样本随机采样,较低的值使得算法更加保守,防止过拟合,但是太小的值也会造成欠拟合。
7)colsample_bytree [default=1]:列采样,对每棵树的生成用的特征进行列采样。一般设置为: 0.5-1。
8) lambda [default=1]:控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
9)alpha [default=0]:控制模型复杂程度的权重值的 L1 正则项参数,参数值越大,模型越不容易过拟合。 (叶节点个数)

在这里插入图片描述
增大树的数量的同时减小学习率

参考链接:
https://www.cnblogs.com/jiangxinyang/p/9248154.html
http://www.cnblogs.com/fujian-code/p/9018114.html
https://blog.csdn.net/u013648367/article/details/79726078
https://blog.csdn.net/ccblogger/article/details/81865540
https://blog.csdn.net/niaolianjiulin/article/details/76574216

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值