考虑二分类问题 y ∈ { − 1 , + 1 } y\in\{-1,+1\} y∈{−1,+1}和真实函数 f f f,假定基分类器的错误率为 ϵ \epsilon ϵ,即对每个基分类器 h i h_i hi有
P ( h i ( x ) ≠ f ( x ) ) = ϵ P(h_i(\pmb x)\ne f(\pmb x)) = \epsilon P(hi(xxx)=f(xxx))=ϵ
假设集成通过简单投票法结合T个基分类器,若有超过半数的基分类器正确,则集成分类就正确:
H ( x ) = sign ( ∑ i = 1 T h i ( x ) ) H(\pmb x) = \operatorname{sign}(\sum_{i=1}^Th_i(\pmb x)) H(xxx)=sign(i=1∑Thi(xxx))
假设基分类器的错误率相互独立,则由Hoeffding不等式可知,集成学习错误率
P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 [ T / 2 ] ( T k ) ( 1 − ϵ ) k ϵ T − k ≤ exp ( − 1 2 T ( 1 − 2 ϵ ) 2 ) \begin{aligned} P(H(\pmb x) \ne f(\pmb x)) &= \sum_{k=0}^{[T/2]} \begin{pmatrix} T\\ k \end{pmatrix}(1-\epsilon)^k\epsilon^{T-k}\\ &\leq \operatorname {exp}(-\frac{1}{2}T(1-2\epsilon)^2) \end{aligned} P(H(xxx)=f(xxx))=k=0∑[T/2](Tk)(1−ϵ)kϵT−k≤exp(−21T(1−2ϵ)2)
推导过程后续补充
Hoeffding不等式是关于一组随机变量均值的概率不等式。如果为一组独立同分布的参数为p的伯努利分布随机变量,n为随机变量个数。定义随机变量均值为:
X ˉ = X 1 + X 2 + ⋯ + X n n \bar X = \frac{X_1+X_2+\cdots+X_n}{n} Xˉ=nX1+X2+⋯+Xn
对于任意,Hoeffding不等式可以表示为
P ( ∣ X ˉ − E ( X ˉ ) ∣ ≥ δ ) ≤ exp ( − 2 δ 2 n 2 ) P(|\bar X - E(\bar X)|\geq \delta)\leq \operatorname {exp}(-2\delta^2n^2) P(∣Xˉ−E(Xˉ)∣≥δ)≤exp(−2δ2n2)
上式显示出,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋向于零
在AdaBoost算法中,第一个基分类器 h 1 h_1 h1是通过直接将基学习算法用于初始数据分布而得;此后迭代地生成 h t ; α t h_t;\alpha_t ht;αt,当基分类器 h t h_t ht基于分布 D t D_t Dt产生后,该基分类器的权重 α t \alpha_t αt应使得 α t h t \alpha_th_t αtht最小化指数损失函数
ℓ exp ( α t h t ∣ D t ) = E x ∼ D t [ e − f ( x ) α t h t ( x ) ] = E x ∼ D t [ e − α t Ⅱ ( f ( x ) = h t ( x ) ) + e α t Ⅱ ( f ( x ) ≠ h t ( x ) ) ] = e − α t P x ∼ D t ( f ( x ) = h t ( x ) ) + e α t P x ∼ D t ( f ( x ) ≠ h t ( x ) ) = e − α t ( 1 − ϵ t ) + e α t ϵ t \begin{aligned} \ell_{\operatorname {exp}}(\alpha_th_t|D_t) &= E_{x\sim D_t}[e^{-f(x)\alpha_th_t(x)}]\\ &=E_{x\sim D_t}[e^{-\alpha_t}Ⅱ(f(\pmb x)=h_t(\pmb x))+e^{\alpha_t}Ⅱ(f(\pmb x)\ne h_t(\pmb x))]\\ &=e^{-\alpha_t}P_{x\sim D_t}(f(\pmb x)=h_t(\pmb x))+e^{\alpha_t}P_{x\sim D_t}(f(\pmb x)\ne h_t(\pmb x))\\ &=e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t}\epsilon_t \end{aligned} ℓexp(αtht∣Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtⅡ(f(xxx)=ht(xxx))+eαtⅡ(f(xxx)=ht(xxx))]=e−αtPx∼Dt(f(xxx)=ht(xxx))+eαtPx∼Dt(f(xxx)=ht(xxx))=e−αt(1−ϵt)+eαtϵt
其中 ϵ t = P x ∼ D t ( f ( x ) ≠ h t ( x ) ) \epsilon_t =P_{x\sim D_t}(f(\pmb x)\ne h_t(\pmb x)) ϵt=Px∼Dt(f(xxx)=ht(xxx)).考虑指数损失函数的导数
∂ ℓ exp ( α t h t ∣ D t ) ∂ α t = − e − α t ( 1 − ϵ t ) + e α t ϵ t \frac{\partial\ell_{\operatorname {exp}(\alpha_t h_t|D_t)}}{\partial \alpha_t}=-e^{-\alpha_t}(1-\epsilon_t)+ e^{\alpha_t}\epsilon_t ∂αt∂ℓexp(αtht∣Dt)=−e−αt(1−ϵt)+eαtϵt
令上式为零可解得
α t = 1 2 ln ( 1 − ϵ t ϵ t ) \alpha_t = \frac{1}{2}\operatorname{ln}(\frac{1-\epsilon_t}{\epsilon_t}) αt=21ln(ϵt1−ϵt)
AdaBoost算法在获得 H t − 1 H_{t-1} Ht−1之后样本分布将进行调整,使下一轮的基学习器 h t h_t ht能纠正 H t − 1 H_{t-1} Ht−1的一些错误。理想的 h t h_t ht能纠正 H t − 1 H_{t-1} Ht−1的全部错误,即最小化
ℓ exp ( H t − 1 + h t ∣ D ) = E x ∼ D [ e − f ( x ) ( H t − 1 ( x ) + h t ( x ) ) ] = E x ∼ D [ e − f ( x ) H t − 1 ( x ) e − f ( x ) h t ( x ) ] \begin{aligned} \ell_{\operatorname{exp}}(H_{t-1}+h_t|D)&=E_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}]\\ &=E_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}] \end{aligned} ℓexp(Ht−1+ht∣D)=Ex∼D[e−f(x)(Ht−1(x)+ht(x))]=Ex∼D[e−f(x)Ht−1(x)e−f(x)ht(x)]
注意到 f 2 ( x ) = h t 2 ( x ) = 1 f^2(x)=h_t^2(x)=1 f2(x)=ht2(x)=1,式中可使用 e − f ( x ) h t ( x ) e^{-f(x)h_t(x)} e−f(x)ht(x)的泰勒展开式近似为
ℓ exp ( H t − 1 + h t ∣ D ) ≃ E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + f 2 ( x ) h t 2 ( x ) 2 ) ] = E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + 1 2 ) ] \begin{aligned} \ell_{\operatorname{exp}}(H_{t-1}+h_t|D)&\simeq E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h_t(x)+\frac{f^2(x)h_t^2(x)}{2})]\\ &=E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h_t(x)+\frac{1}{2})] \end{aligned} ℓexp(Ht−1+ht∣D)≃Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+2f2(x)ht2(x))]=Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+21)]
于是,理想的基学习器
h t ( x ) = argmin h ℓ exp ( H t − 1 + h ∣ D ) = argmin h E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h ( x ) + 1 2 ) ] = argmax h E x ∼ D [ e − f ( x ) H t − 1 ( x ) f ( x ) h ( x ) ] = argmax h E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ] \begin{aligned} h_t(x) &= \underset{h}{\operatorname{argmin}}\ell_{\operatorname {exp}}(H_{t-1}+h|D)\\ & = \underset{h}{\operatorname{argmin}}E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h(x)+\frac{1}{2})]\\ &=\underset{h}{\operatorname{argmax}}E_{x\sim D}[e^{-f(x)H_{t-1}(x)}f(x)h(x)]\\ &=\underset{h}{\operatorname{argmax}}E_{x\sim D}[\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)]\\ \end{aligned} ht(x)=hargminℓexp(Ht−1+h∣D)=hargminEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+21)]=hargmaxEx∼D[e−f(x)Ht−1(x)f(x)h(x)]=hargmaxEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]
注意到 E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E_{x\sim D }[e^{-f(x)H_{t-1}(x)}] Ex∼D[e−f(x)Ht−1(x)]是一个常数。令 D t D_t Dt表示分布
D t ( x ) = e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] D_t(x)=\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]} Dt(x)=Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)
则根据数学期望的定义,这等价于令
h t ( x ) = argmax h E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ] = argmax h E x ∼ D t [ f ( x ) h ( x ) ] \begin{aligned} h_t(x)&=\underset{h}{\operatorname{argmax}}E_{x\sim D}[\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)]\\ & = \underset{h}{\operatorname{argmax}}E_{x\sim D_t}[f(x)h(x)]\\ \end{aligned} ht(x)=hargmaxEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]=hargmaxEx∼Dt[f(x)h(x)]
由于 f ( x ) , h ( x ) ∈ { − 1 , + 1 } f(x),h(x) \in \{-1,+1\} f(x),h(x)∈{−1,+1},有
f ( x ) h ( x ) = 1 − 2 Ⅱ ( f ( x ) ≠ h ( x ) ) f(x)h(x) = 1-2Ⅱ(f(x)\ne h(x)) f(x)h(x)=1−2Ⅱ(f(x)=h(x))
则理想的基学习器
h t ( x ) = argmax h E x ∼ D t [ Ⅱ ( f ( x ) ≠ h ( x ) ) ] h_t(x)=\underset{h}{\operatorname{argmax}}E_{x\sim D_t}[Ⅱ(f(x)\ne h(x))] ht(x)=hargmaxEx∼Dt[Ⅱ(f(x)=h(x))]
由此可见,理想的 h t h_t ht将在分布 D t D_t Dt下最小化分类误差。因此,弱分类器基于分布 D t D_t Dt来训练,且针对 D t D_t Dt的分类误差应小于0.5。这在一定程度上类似“残差逼近”的思想,考虑到 D t D_t Dt和 D t + 1 D_{t+1} Dt+1的关系,有
D t + 1 ( x ) = D ( x ) e − f ( x ) H t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] = D ( x ) e − f ( x ) H t − 1 ( x ) e − f ( x ) h t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] = D t ⋅ e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ] \begin{aligned} D_{t+1}(x) &= \frac{D(x)e^{-f(x)H_t(x)}}{E_{x\sim D}[e^{-f(x)H_t(x)}]}\\ & = \frac{D(x)e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}}{E_{x\sim D}[e^{-f(x)H_t(x)}]}\\ & = D_t \cdot e^{-f(x)\alpha_th_t(x)}\frac{E_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{E_{x\sim D}[e^{-f(x)H_t(x)}]} \end{aligned} Dt+1(x)=Ex∼D[e−f(x)Ht(x)]D(x)e−f(x)Ht(x)=Ex∼D[e−f(x)Ht(x)]D(x)e−f(x)Ht−1(x)e−f(x)ht(x)=Dt⋅e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]Ex∼D[e−f(x)Ht−1(x)]
希望每个个体学习器相互独立,差异大,一种做法就是对训练样本进行采样,产生若干个不同的子集,但这样每个基学习器只用到了一小部分训练数据,甚至不足以进行有效的学习,可以考虑使用有交叠的采样子集
给定包含m个样本的数据集,先随机选出一个样本放入采样集中,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在采样集中
可采样出T个含有m个样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个类收到同样的票数的情形,则简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。
假定基学习器的计算复杂度为 O ( m ) O(m) O(m),则Bagging的复杂度大致为 T ( O ( m ) + O ( s ) ) T(O(m)+O(s)) T(O(m)+O(s)),考虑到采样与投票/平均过程的复杂度 O ( s ) O(s) O(s)很小,而T通常是一个不太大的常数,因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明Bagging是一个很高效的集成学习算法。与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归任务
学习器结合可能从三个方面带来好处:
对数值型输出 h i ( x ) ∈ R h_i(x) \in \mathbb R hi(x)∈R,最常见的结合策略是使用平均法(averaging)
加权平均法未必一定优于简单平均法,一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法
对分类任务来说,学习器 h i h_i hi将从类别标记集合 { c 1 , c 2 , ⋯ , c N } \{c_1,c_2,\cdots,c_N\} {c1,c2,⋯,cN}中预测出一个标记,最常用的集合策略是使用投票法(voting)。将 h i h_i hi在样本 x \pmb x xxx上的预测输出表示为一个N维向量 ( h i 1 ( x ) ; h i 2 ( x ) ; ⋯ ; h i N ( x ) ) (h_i^1(\pmb x);h_i^2(\pmb x);\cdots;h_i^N(\pmb x)) (hi1(xxx);hi2(xxx);⋯;hiN(xxx)),其中 h i j ( x ) h_i^j(\pmb x) hij(xxx)是 h i h_i hi在类别标记 c j c_j cj上的输出
在现实任务中,不同类型个体学习器可能产生不同类型的 h i j ( x ) h_i^j(\pmb x) hij(xxx)值,常见的有:
不同类型的 h i j ( x ) h_i^j(\pmb x) hij(xxx)值不能混用。对一些能在预测出类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用。若此类值未进行规范化,例如支持向量机的分类间隔值,则必须使用一些技术如 Platt缩放(Platt scaling)、等分回归(isotonic regression) 等进行 “校准”(calibration) 后才能作为类概率使用
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。
Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记被当作样例标记
次级学习器的输入属性表示和次级学习算法对Stacking集成泛化性能有很大影响,研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用 多响应线性回归(Multi-response Linear Regression,简称MLR) 作为次级学习算法效果较好,在MLR中使用不同的属性集效果更佳
对Stacking和BMA进行比较,Stacking通常优于BMA,因为其鲁棒性比BMA更好,而且BMA对模型近似误差非常敏感
欲构建泛化性能强的集成,个体学习器应“好而不同”,假设用个体学习器 h 1 , h 2 , ⋯ , h T h_1,h_2,\cdots,h_T h1,h2,⋯,hT通过加权法结合产生的集成来完成回归学习任务 f : R d ↦ R f:\mathbb R^d \mapsto \mathbb R f:Rd↦R,对示例 x \pmb x xxx,定义学习器 h i h_i hi的 “分歧”(ambiguity) 为
A ( h i ∣ x ) = ( h i ( x ) − H ( x ) ) 2 A(h_i|\pmb x) = (h_i(\pmb x)-H(\pmb x))^2 A(hi∣xxx)=(hi(xxx)−H(xxx))2
则集成的分群是
A ˉ ( h ∣ x ) = ∑ i = 1 T w i A ( h i ∣ x ) = ∑ i = 1 T w i ( h i ( x ) − H ( x ) ) 2 \begin{aligned} \bar A(h|\pmb x) &= \sum_{i=1}^T w_iA(h_i|\pmb x)\\ &=\sum_{i=1}^Tw_i(h_i(\pmb x)-H(\pmb x))^2 \end{aligned} Aˉ(h∣xxx)=i=1∑TwiA(hi∣xxx)=i=1∑Twi(hi(xxx)−H(xxx))2
在一定程度上反映了个体学习器的多样性。个体学习器 h i h_i hi和集成 H H H的平方误差分别为
E ( h i ∣ x ) = ( f ( x ) − h i ( x ) ) 2 E ( H ∣ x ) = ( f ( x ) − H ( x ) ) 2 E(h_i|\pmb x) = (f(\pmb x)-h_i(\pmb x))^2\\ E(H|\pmb x) = (f(\pmb x)-H(\pmb x))^2 E(hi∣xxx)=(f(xxx)−hi(xxx))2E(H∣xxx)=(f(xxx)−H(xxx))2
令 E ˉ ( h ∣ x ) = ∑ i = 1 T w i ⋅ E ( h i ∣ x ) \bar E(h|\pmb x)=\sum_{i=1}^Tw_i\cdot E(h_i|\pmb x) Eˉ(h∣xxx)=∑i=1Twi⋅E(hi∣xxx)表示个体学习器误差的加权均值,有
A ˉ ( h ∣ x ) = ∑ i = 1 T w i E ( h i ∣ x ) − E ( H ∣ x ) = E ˉ ( h ∣ x ) − E ( H ∣ x ) \begin{aligned} \bar A(h|\pmb x) &= \sum_{i=1}^T w_iE(h_i|\pmb x) - E(H|\pmb x)\\ &=\bar E(h|\pmb x)-E(H|\pmb x) \end{aligned} Aˉ(h∣xxx)=i=1∑TwiE(hi∣xxx)−E(H∣xxx)=Eˉ(h∣xxx)−E(H∣xxx)
对所有样本 x \pmb x xxx均成立,令 p ( x ) p(\pmb x) p(xxx)表示样本的概率密度,则在全样本上有
∑ i = 1 T w i ∫ A ( h i ∣ x ) p ( x ) d x = ∑ i = 1 T w i ∫ E ( h i ∣ x ) p ( x ) d x − ∫ E ( H ∣ x ) p ( x ) d x \sum_{i=1}^Tw_i\int A(h_i|\pmb x)p(\pmb x)dx = \sum_{i=1}^Tw_i\int E(h_i|\pmb x)p(\pmb x)dx - \int E(H|\pmb x)p(\pmb x)dx i=1∑Twi∫A(hi∣xxx)p(xxx)dx=i=1∑Twi∫E(hi∣xxx)p(xxx)dx−∫E(H∣xxx)p(xxx)dx
类似的,个体学习器 h i h_i hi在全样本上的泛化误差和分歧项分别为
E i = ∫ E ( h i ∣ x ) p ( x ) d x A i = ∫ A ( h i ∣ x ) p ( x ) d x E_i = \int E(h_i|\pmb x)p(\pmb x)d\pmb x\\ A_i = \int A(h_i|\pmb x)p(\pmb x)d\pmb x\\ Ei=∫E(hi∣xxx)p(xxx)dxxxAi=∫A(hi∣xxx)p(xxx)dxxx
集成的泛化误差为
E i = ∫ E ( H ∣ x ) p ( x ) d x E_i = \int E(H|\pmb x)p(\pmb x)d\pmb x Ei=∫E(H∣xxx)p(xxx)dxxx
令 E ˉ = ∑ i = 1 T w i E i \bar E = \sum_{i=1}^Tw_iE_i Eˉ=∑i=1TwiEi表示个体学习器泛化误差的加权均值, A ˉ = ∑ i = 1 T w i A i \bar A = \sum_{i=1}^T w_iA_i Aˉ=∑i=1TwiAi表示个体学习器的加权分歧值,有
E = E ˉ − A ˉ E = \bar E-\bar A E=Eˉ−Aˉ
这个式子明确的提示出:个体学习器准确性高、多样性越大,则集成越好,称为 “误差-分歧分解”(error-ambiguity decomposition) 。上面的推导过程只适用于回归学习,难以直接推广到分类学习任务上去。
以上介绍的都是 “成对型”(pairwise) 多样性度量,可以通过2维图绘制出来
数据样本扰动
数据样本扰动通常是基于采样法,例如在Bagging中使用自主采样法,在AdaBoost中使用序列采样。数据样本扰动法对 “不稳定基学习器” 很有效(决策树、神经网络)。有一些基学习器对数据样本扰动不敏感,称为 稳定基学习器(stable base learner) (线性学习器、支持向量机、朴素贝叶斯、k近邻学习器)
输入属性扰动
训练样本通常是由一组属性描述,不同的“子空间”(subspace,即属性子集)提供了观察数据的不同视角。著名的随机子空间(random subspace)算法就依赖于输入属性扰动。对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差
输出表示扰动
此类做法的基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如 “翻转法”(Flipping Output) 随机改变一些训练样本的标记;也可对输出表示进行转化,如“输出调制法”(Output Smearing)将分类输出转化为回归输出后构建个体学习器;还可将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器
算法参数扰动
基学习器一般都有参数需进行设置,例如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。例如 “负相关法”(Negative Correlation) 显式地通过正则化来强制个体神经网络使用不同的参数。对参数较少的算法,可通过将其学习过程中某些环节用其他类似方式代替,从而达到扰动的目的。例如可将决策树使用的属性选择机制替换成其他的属性选择机制
不同的多样性增强机制可同时使用,随机森林同时使用了数据样本扰动和输入属性扰动,有些方法甚至同时使用了更多机制
西瓜书内容不太熟悉,学习总结笔记基本全是书上内容,计划二刷过程中,补充公式推导和内容精简。