集成学习
简介
决策树
GBDT
拟合残差
一般 GBDT
XGBOOST
弓
1
能表达样本落入的子节点,但是不能把表示结构
2
3.正则项 – 惩罚
防止过拟合,比如一个值总共有10颗树都是由同一颗树决定的,过拟合
5
找到一种方式不依赖于损失函数 – 二阶泰勒
gi – 一阶梯度 hi–二阶梯度
凸函数Hj为正,lambda为正
7 确定树结构
- 穷举 – 所有组合,复杂度太高,不可行
- gain – 贪心算法
- 增益 = obj前 - obj后
不需要考虑排列组合的过程
停止分裂:
1 max(gain) <= 0
2 叶子节点个数
3 效果
作者代码
唐宇迪
O b j ( Θ ) = L ( Θ ) + Ω ( Θ ) Obj(\Theta) = L(\Theta)+\Omega(\Theta) Obj(Θ)=L(Θ)+Ω(Θ)
损失:
L
=
∑
i
=
1
n
l
(
y
i
,
y
i
^
)
L = \sum_{i=1}^{n}{l(y_i,\hat{y_i})} \hspace{4cm}
L=∑i=1nl(yi,yi^)
O b j = ∑ i = 1 n l ( y i , y i ^ ) + ∑ = 1 t Ω ( f i ) Obj= \sum_{i=1}^{n}{l(y_i,\hat{y_i})}+\sum_{=1}^{t}\Omega({f_i)} \hspace{4cm} Obj=∑i=1nl(yi,yi^)+∑=1tΩ(fi)
样本的遍历转化为叶子节点的遍历是等价的
Gain
xgboost的安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/
搜索xgboost
https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost
xgboost参数:
‘booster’:‘gbtree’,
‘objective’: ‘multi:softmax’, 多分类的问题
‘num_class’:10, 类别数,与 multisoftmax 并用
‘gamma’:损失下降多少才进行分裂
‘max_depth’:12, 构建树的深度,越大越容易过拟合
‘lambda’:2, 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
‘subsample’:0.7, 随机采样训练样本
‘colsample_bytree’:0.7, 生成树时进行的列采样
‘min_child_weight’:3, 孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束
‘silent’:0 ,设置成1则没有运行信息输出,最好是设置为0.
‘eta’: 0.007, 如同学习率
‘seed’:1000,
‘nthread’:7, cpu 线程数
为什么xgboost要用二阶泰勒展开,优势在哪里?
xgboost进行了二阶泰勒展开, 使用梯度下降求解时收敛速度更快。
引入二阶泰勒展开是为了统一损失函数求导的形式,以支持自定义损失函数。二阶泰勒展开可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化(参数选择)分开了。 这种去耦合方法增加了xgboost的适用性, 使得它可以自定义损失函数, 可以用于分类, 也可以用于回归。
————————————————
版权声明:本文为CSDN博主「Yasin_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yasin0/article/details/82154768
Adaboost
2 特征选择
2.1
2.2 参数
1.1 weight
特征在所有树中作为划分属性的次数。
1.2 gain
特征在作为划分属性时loss平均的降低量(也就是特征的信息增益),以特征k=1,2,…,K为例,其重要度计算可以表述如下:
这里k表示某节点,T表示所有树的数量,N(t)表示第t棵树的非叶子节点数量, [公式] 表示第t棵树的第i个非叶子节点的划分特征,所以 [公式] ,I(.)是指示函数, [公式] 分别表示落在第t棵树的第i个非叶子节点上所有样本的一阶导数和二阶导数之和,[公式]分别表示落在第t棵树上第i个非叶子节点的左、右节点上的一阶导数之和,同理,[公式]分别表示落在第t棵树上第i个非叶子节点的左、右节点上的二阶导数之和,所以有
λ为正则化项的超参数。
1.3 cover
这个计算方法,需要在定义模型时定义。之后再调用model.feature_importance_得到的便是cover得到的贡献度。
cover形象地说,就是树模型在分裂时,特征下的叶子节点涵盖的样本数除以特征用来分裂的次数。分裂越靠近根部,cover值越大。比如可以定义为:特征在作为划分属性时对应样本的二阶导数之和的平均值: