8.1个体与集成
集成学习通过构建多个学习器来完成学习任务,(注意和多模型融合不一样)。
个体学习器通常由一个算法训练数据产生,包括单一同质(homogeneous),和不同模型融合的异质(hetegeneous),异质集成的个体学习器由不同的学习算法产生,。
集成学习的结果由投票产生。
某种意义上,孔多塞陪审团定理形象的描述了上面提到的集成概念。该定理的内容为:如果评审团的每个成员做出独立判断,并且每个陪审员做出正确决策的概率高于 0.5,那么整个评审团做出正确的总体决策的概率随着陪审员数量的增加而增加,并趋向于一。另一方面,如果每个陪审员判断正确的概率小于 0.5,那么整个陪审团做出正确的总体决策的概率随着陪审员数量的增加而减少,并趋向于零。
✅:表示预测正确。 ❌:表示预测错误。
从图中可以看出来,1.要获得好的集成,个体学习器要有一定准确性。2.学习器间有适当差异,即多样性。
根据个体学习器的生成方法,目前集成学习有两大类,一类是个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表是boosting,另一类是个体学习器间没有强依赖关系,代表是bagging和random forest。
8.2 Boosting
Boosting先从初始训练集中训练出第一个基学习器,再根据基学习器的表现进行调整,先前做错的样本得到重点关注,基于调整后的分布训练出第二个基学习器,如此反复得到想要的基学习器数量。
考虑二分类问题
f
∈
−
1
,
1
f\in{-1,1}
f∈−1,1,基分类器的错误率为
ϵ
\epsilon
ϵ,对每个基分类器
h
i
h_i
hi有
P
(
h
i
(
x
)
≠
f
(
x
)
)
=
ϵ
(
3.1
)
P(h_i(x)\neq f(x)) = \epsilon \qquad\qquad(3.1)
P(hi(x)=f(x))=ϵ(3.1)
有T个基分类器,
H
(
x
)
H(x)
H(x)为集成投票结果
H
(
x
)
=
s
i
g
n
(
∑
i
=
1
T
h
i
(
x
)
)
(
3.2
)
H(x)=sign(\sum^T_{i=1}h_i(x))\qquad\quad(3.2)
H(x)=sign(i=1∑Thi(x))(3.2)
🈶️hoeffding不等式得集成的错误率
P
(
H
(
x
)
≠
f
(
x
)
)
=
∑
k
=
0
T
/
2
C
(
k
,
T
)
(
1
−
ϵ
)
k
ϵ
(
T
−
k
)
P(H(x)\neq f(x) )=\sum^{T/2}_{k=0}C(k,T)(1-\epsilon)^k\epsilon^{(T-k)}
P(H(x)=f(x))=k=0∑T/2C(k,T)(1−ϵ)kϵ(T−k)
≤
e
x
p
(
−
1
2
T
(
1
−
2
ϵ
)
2
)
(
8.3
)
\qquad\qquad\le exp(-\frac{1}{2}T(1-2\epsilon)^2) \qquad \qquad (8.3)
≤exp(−21T(1−2ϵ)2)(8.3)
AdaBoost来解决一个二分类问题,用基学习器的线性组合来推导。
H
(
x
)
=
∑
t
=
1
T
a
t
h
t
(
x
)
.
(
8.4
)
H(x) = \sum_{t=1}^Ta_th_t(x). \qquad\qquad\qquad(8.4)
H(x)=t=1∑Tatht(x).(8.4)
来最小化损失函数
l
e
x
p
(
H
∣
D
)
=
E
x
−
D
(
e
−
f
(
x
)
H
(
x
)
)
l_exp(H|D) = E_{x-D}(e^{-f(x)H(x)})
lexp(H∣D)=Ex−D(e−f(x)H(x))
Adaboosting算法伪代码(论文要用二线表或者三线表,katex这里不支持,同样,前面公式对齐katex我暂时也找不到方法,如果有会katex下对齐的大佬,务必不吝赐教万分感谢)
初始化样本权值分布,基于分布
D
t
D_t
Dt从数据集D中训练出分类器
h
t
h_t
ht
估计
——————————————————————————————
输入:训练集 D = {{x1,y1, {x2,y2},……{xm,ym}},
训练学习算法A
训练轮数T
——————————————————————————————
过程:
1:
D
1
(
x
)
=
1
/
m
D_1(x)=1/m
D1(x)=1/m
.
2: for t = 1,2,3……T do
.
3:
h
t
=
A
(
D
,
D
t
)
;
h_t =A(D,D_t);
ht=A(D,Dt);
.
4:
ϵ
=
P
x
−
D
(
h
t
(
x
)
≠
f
(
x
)
)
;
\epsilon = P_{x-D}(h_t(x)\neq f(x));
ϵ=Px−D(ht(x)=f(x));
.
5. IF
ϵ
t
>
0.5
\epsilon_t>0.5
ϵt>0.5 then break
.
6.
a
t
=
1
2
l
n
(
1
−
ϵ
ϵ
)
;
a_t = \frac{1}{2}ln(\frac{1-\epsilon}{\epsilon});
at=21ln(ϵ1−ϵ);
.
7.
D
t
+
1
(
x
)
=
D
t
(
x
)
2
∗
(
−
a
t
f
(
x
)
h
t
(
x
)
)
/
Z
t
D_{t+1}(x)=\frac{D_t(x)}{2}*(-a_tf(x)h_t(x))/Z_t
Dt+1(x)=2Dt(x)∗(−atf(x)ht(x))/Zt
.
8.end for
——————————————————————————————
Z t Z_t Zt是规范化因子 Z t = ∑ i = 1 m ( D t i ∗ e x p − a t y i h t ( x ) Z_t = \sum_{i=1}^m(D_{ti}*exp{-a_ty_ih_t(x)} Zt=∑i=1m(Dti∗exp−atyiht(x),确保 D t + 1 D_{t+1} Dt+1是个分布。
基于加性模型迭代式优化损失函数角度的推导这里暂时省略。
重点是对于
D
t
(
x
)
D_t(x)
Dt(x)分布的理解:样本在数据集中的权重系数
对算法的理解(图片来自星海千寻
)
boosting算法总结:
8.3 Bagging和随机森林
Bagging是并行式集成学习方法最著名的代表,给定m个样本的数据集,我们先随机取出一个样本放入采样集,再把样本放回数据集,这样,经过m次随机采样,我们得到m个样本的采样集,有的样本多次出现,有的没出现过。
8.4 集合策略
学习器结合有三个好处
- 1.泛化的角度,学习任务的假设空间往往很大,可能有多个假设在训练集达到同等性能,此时单学习器可能因为误选导致泛化性能不佳,多学习器结合减少了此风险。
- 2.计算的角度,降低了进入局部极小的风险
- 3.表示的角度,多学习器结合使假设空间扩大,得到更好的近似。
8.4.1平均法
对于数值回归问题
有T个学习器{
h
1
,
h
2
,
.
.
.
.
.
.
,
h
T
h_1,h2,......,h_T
h1,h2,......,hT}.
- 简单平均法:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = \frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T1i=1∑Thi(x) - 加权平均法
H ( x ) = ∑ i = 1 T w i h i ( x ) H(x)=\sum_{i=1}^Tw_ih_i(x) H(x)=i=1∑Twihi(x)
其中
w
i
≥
0
,
∑
w
i
=
1
w_i\ge0,\sum w_i = 1
wi≥0,∑wi=1.
加权平均法的权重一般从训练数据中学习,规模比较大,要学习的w比较多的时候,容易产生过拟合,加权未必一定好于平均。
8.4.2投票法
对于分类问题
- 多数投票法
H ( x ) = ( c j , i f ∑ i = 1 T h i j ( x ) > 0.5 ∑ k = 1 N ∑ i = 1 T h i k ( x ) r e j e c t , o t h e r w i s e ) H(x) = \left(\begin{matrix} c_j, \qquad if \sum^T_{i=1}h_i^j(x)>0.5\sum^N_{k=1}\sum^T_{i=1} h_i^k(x) \\ \\ reject, \qquad otherwise \end{matrix}\right) H(x)=⎝⎛cj,if∑i=1Thij(x)>0.5∑k=1N∑i=1Thik(x)reject,otherwise⎠⎞
如果投票超过半数就预测该标记。 - 相对多数投票
- 加权投票 大同小异,不一一赘述
8.4.3 学习法(Stacking)
8.5多样性
8.5.1误差-分歧分解
Reference
1martin-huang机器学习基石笔记
2.https://ithelp.ithome.com.tw/articles/10247936
3.https://iter01.com/578574.html机器学习笔记-星海千寻
4.蓝桥云课-机器学习开放课程
5.集成学习中的 stacking 以及python实现 -小舔哥的博客