3.1 什么是集成算法
目的是让最终的结果越好
Bagging
训练多个分类器然后取平均(并行的训练平行的分类器,比如随机森林)
f ( x ) = 1 M ∑ M = 1 M f m ( x ) f(x)=\frac{1}{M}\sum_{M=1}^{M}f_m(x) f(x)=M1∑M=1Mfm(x)
Booting
从弱学习器开始强化,通过加权来进行训练
F m ( x ) = F m − 1 + a r g m i n h ∑ i = 1 n L ( y i , F m − 1 ( x i ) + h ( x i ) ) F_m(x)=F_{m-1}+argmin_h\sum_{i=1}{n}L(y_i,F_{m-1}(x_i)+h_{(x_i)}) Fm(x)=Fm−1+argminh∑i=1nL(yi,Fm−1(xi)+h(xi))
stacking
聚合多个分类或回归模型(可以分阶段做)
3.2 平行模型
Bagging
可以用一个数据集,每棵树随机各取60%的数据来进行分别训练
让每棵树都有它的差异性
一般会选择,100棵树左右。
它能够处理高维度(feature很多)的数据,并不用特征选择
在训练完后,它能够给出哪些feature比较重要
比如ABCD四个特征,破坏掉B 产生一个B’ 使用ABCD AB’CD分别训练。比较结果
容易做成并行化方法,速度比较快
可以进行可视化展示,便于分析
3.3 提升模型
boosting
串行学习,树相加
F
m
(
x
)
=
F
m
−
1
+
a
r
g
m
i
n
h
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
i
)
+
h
(
x
i
)
)
F_m(x)=F_{m-1}+argmin_h\sum_{i=1}{n}L(y_i,F_{m-1}(x_i)+h_{(x_i)})
Fm(x)=Fm−1+argminh∑i=1nL(yi,Fm−1(xi)+h(xi))
先算A树 然后B树计算A与实际值得残差 与结果更近一步,再经过C
典型代表
AdaBoost Xgboost
AdaBoost 根据前一次的分类效果调整数据权重,分类器权重越大,越好
3.4 堆叠模型
stacking
使用一堆直接上得出结果后,再训练一个分类器