【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。
1.结合策略
假定集成包含T个基学习器 { h 1 , h 2 , . . . , h T } \{h_1,h_2,...,h_T \} {h1,h2,...,hT},其中 h i h_i hi在示例 x \mathbf x x上的输出为 h i ( x ) h_i(\mathbf x) hi(x)。本文介绍几种对 h i h_i hi进行结合的常见策略。
2.平均法
对数值型输出 h i ( x ) ∈ R h_i(\mathbf x) \in \mathbb{R} hi(x)∈R,最常见的结合策略是使用平均法(averaging)。
👉简单平均法(simple averaging)
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = \frac{1}{T} \sum^T_{i=1} h_i (x) H(x)=T1i=1∑Thi(x)
👉加权平均法(weighted averaging)
H ( x ) = ∑ i = 1 T w i h i ( x ) H(x) = \sum^T_{i=1} w_i h_i(x) H(x)=i=1∑Twihi(x)
其中 w i w_i wi是个体学习器 h i h_i hi的权重,通常要求 w i ⩾ 0 , ∑ i = 1 T w i = 1 w_i \geqslant 0, \sum^T_{i=1} w_i =1 wi⩾0,∑i=1Twi=1。
非负权重才能确保集成性能优于单一最佳个体学习器,因此在集成学习中一般对学习器的权重施以非负约束。
一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
3.投票法
对于分类任务来说,最常见的结合策略是使用投票法(voting),分为:
- 绝对多数投票法(majority voting):即若某标记得票过半数,则预测为该标记;否则拒绝预测。
- 相对多数投票法(plurality voting):即预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个。
- 加权投票法(weighted voting):与加权平均法类似。
如果分类器输出的是类标记(例如0,1),则称为“硬投票”。如果分类器输出的是类概率,则称为“软投票”。不同类型的分类器输出值不能混用。
4.学习法
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。Stacking是学习法的典型代表。这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)。
Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。Stacking的算法描述如下图所示:
这里我们假定初级学习器使用不同学习算法产生,即初级集成是异质的。
初级学习器也可是同质的。
- 过程2:使用初级学习算法 L t \mathcal{L} _t Lt产生初级学习器 h t h_t ht。
- 过程4:生成次级训练集。
- 过程11:在 D ′ \mathcal{D} ' D′上用次级学习算法 L \mathcal{L} L产生次级学习器 h ′ h' h′。
在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;因此,一般是通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。
以k折交叉验证为例,初始训练集D被随机划分为k个大小相似的集合 D 1 , D 2 , . . . , D k D_1,D_2,...,D_k D1,D2,...,Dk。令 D j D_j Dj和 D ˉ j = D \ D j \bar{D}_j=D\backslash D_j Dˉj=D\Dj分别表示第j折的测试集和训练集。给定T个初级学习算法,初级学习器 h t ( j ) h_t^{(j)} ht(j)通过在 D ˉ j \bar{D}_j Dˉj上使用第t个学习算法而得。对 D j D_j Dj中每个样本 x i \mathbf{x}_i xi,令 z i t = h t ( j ) ( x i ) z_{it}=h_t^{(j)} (\mathbf{x}_i) zit=ht(j)(xi),则由 x i \mathbf{x}_i xi所产生的次级训练样例的示例部分为 z i = ( z i 1 ; z i 2 ; . . . ; z i T ) \mathbf{z}_i=(z_{i1};z_{i2};...;z_{iT}) zi=(zi1;zi2;...;ziT),标记部分为 y i y_i yi。于是,在整个交叉验证过程结束后,从这T个初级学习器产生的次级训练集是 D ′ = { ( z i , y i ) } i = 1 m D'=\{(\mathbf{z}_i,y_i) \}^m_{i=1} D′={(zi,yi)}i=1m,然后 D ′ D' D′将用于训练次级学习器。
次级学习器的输入属性表示和次级学习算法对Stacking集成的泛化性能有很大影响。有研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,简称MLR)作为次级学习算法效果较好,在MLR中使用不同的属性集更佳。
MLR是基于线性回归的分类器,它对每个类分别进行线性回归,属于该类的训练样例所对应的输出被置为1,其他类置为0;测试示例将被分给输出值最大的类。
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️
个人博客网站:https://shichaoxin.com
GitHub:https://github.com/x-jeff