1、集成
集成指用多个基学习器共同构成一个更加强大的学习器。
集成包含三种方法:Boosting,Bagging,Stacking
1、Boosting:包括GBDT和Adaboost,各学习器间存在强依赖关系,只能串行实现
2、Bagging的代表算法是随机森林,各学习器间不存在强依赖关系,可以并行实现
3、Stacking主要是分层结构。每个初级学习器负责一部分的领域知识并构成次级学习器。
2、Boosting
1、GBDT:梯度提升决策树
原理简介如下图所示:
它的基本思想是:迭代第m次的基函数是根据上一颗树的伪残差训练出来的。
2、Adaboost
输入:训练数据集
D={(x1,y1),(x2,y2),...,(xN,yN)}
初始化:为每条数据赋一个权重,通常
Dw={w11,w12,...,w1N}
,其中,1表示第1次迭代。
步骤:
Step1:找到一个二分类器
Gm(x)
,使下式的这个损失最小:
em=∑i=1NwmiI(Gm(xI)≠yi)
Step2:计算
am=12log1−emem
Step3:更新权值
wm+1,i=wmizmexp(−αmyiGm(xi))
其中,
zm
为一归一化因子
Step4: m=m+1 ,并返回Step1进行迭代。
最终求得的分类函数为
f(x)=∑m=1NαmGm(x)
3、Bagging
比较有代表性的Bagging算法就是随机森林,它就是随机采一些样本,随机采一些属性生成多棵决策树进行共同决策。
Bagging可以减少方差
Boosting可以减少偏差