结合策略

学习器结合可能会从三个方面带来好处:

  1. 1、从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减少这一风险。

  2. 2、从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险。

  3. 3、从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单个学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。

平均法

简单平均法: H(x)=1Ti=1Thi(x)H(x) = \frac{1}{T}\sum\limits_{i=1}^Th_i(x)

加权平均法: H(x)=1Ti=1Twihi(x),  wi0 i=1Twi=1H(x) = \frac{1}{T}\sum\limits_{i=1}^Tw_ih_i(x),\ \ w_i\geq0\ \sum\limits_{i=1}^Tw_i=1 (若 wi=1Tw_i = \frac{1}{T}即简单平均 )

投票法

对分类任务来说,学习器 hih_i 将从类别标记集合 {c1,c2,,cN}\{c_1,c_2,\dots,c_N\} 中预测出一个标记,最常见的结合策略是使用投票法。我们将 hih_i 在样本 xx 上的预测输出表示为一个 NN 维向量(hi1(x);hi2(x);,hiN(x))(h_i^1(x);h_i^2(x);\dots,h_i^N(x)),其中 hij(x)h_i^j(x)hih_i 在类别标记 cjc_j 上的输出。

绝对多数投票法(即若某标记过半数,则预测为该标记,否则拒绝预测):

H(x)={cj,         if i=1Thij(x)>0.5k=1Ni=1Thik(x)reject,  otherwiseH(x)=\begin{cases}c_j,\ \ \ \ \ \ \ \ \ if\ \sum\limits_{i=1}^Th_i^j(x)>0.5\sum\limits_{k=1}^N\sum\limits_{i=1}^Th_i^k(x)\\ reject,\ \ otherwise\end{cases}

相对多数投票法(即预测为得票最多的标记,若有多个标记获最高票,随机选取其中一个):

H(x)=cargminji=1Thij(x)H(x) = c_{\mathop{\arg \min}\limits_j\sum\limits_{i=1}^Th_i^j(x)}

加权投票法(与加权平均法类似):

H(x)=cargminji=1Twihij(x)H(x) = c_{\mathop{\arg \min}\limits_j\sum\limits_{i=1}^Tw_ih_i^j(x)}

学习法

Stacking

Stacking是学习法的典型代表。这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。Stacking先从初始数据集训练出初级训练器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

  1. 输入:训练集 D={(x1,y1),(x2,y2),,(xm,ym)}D=\{(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)\}

  2. 初级学习算法 f1,f2,,ftf_1,f_2,\dots,f_t ,次级学习算法 ff

  3. 1、for t=1,2,,Tt = 1,2,\dots,T do

  4. 2、 ht=ft(D)h_t = f_t(D)

  5. 3、D=D'=\varnothing

  6. 4、for i=1,2,,mi = 1,2,\dots,m do

  7. 5、 for t=1,2,,Tt = 1,2,\dots,T do

  8. 6、 zit=ht(xi)z_{it} = h_t(x_i)

  9. 7、 D=D((zi1,zi2,,ziT),yi)D'=D'\cup((z_{i1},z_{i2},\dots,z_{iT}),y_i)

  10. 8、 h=f(D)h' = f(D')

  11. 输出: H(x)=h(h1(x),h2(x),,hT(x))H(x) = h'(h_1(x),h_2(x),\dots,h_T(x))

Last updated