(这一章的内容感觉很琐碎,很难提出主线。总的来说,应该还是正则路径和重要性采样的学习集成两块内容)
目录
16.1 导言
- P605 集成学习ensemble learning的思想是通过结合一系列简单基础模型的优点来建立一个预测模型.包括:bagging、boosting、stacking、非参回归的贝叶斯方法。事实上,可以将任何字典方法dictionary method看成集成学习,其中基函数充当弱学习器weak learners,比如回归样条(这句是指把特征变换这个操作当作弱学习器,然后带权重地集成在一起?)
- P606 早期10分类,纠错码error-correction code的方式。变成15个二分类问题。定义判别函数为
δ
k
(
x
)
=
∑
l
=
1
L
∣
C
k
l
−
p
^
l
(
x
)
∣
\delta_k(x)=\sum_{l=1}^L|C_{kl}-\hat p_l(x)|
δk(x)=∑l=1L∣Ckl−p^l(x)∣
汉明码,汉明距离。
(感觉像是把多分类问题转成多个二分类问题,然后集成)
James and Hastie (1998)分析了纠错码ECOC方法,展示随即便吗和和最优构造的纠错码效果一样好。此外,还声称编码coding的主要收益在于降低方差,因为不同编码问题得到不同的树,而解码有类似平均的效果
16.2 提升和正则化路径Regularization Path
- P607 gradient boosting产生的模型序列与在高维特征空间中正则化模型相似.这最初是通过观测到boosted版本的线性模型和 lasso之间有着紧密联系得到的
16.2.1 带惩罚的回归Penalized Regression
- P607 Gradient boosting的式10.41收缩正则可以通过类比含有很多基展开的带惩罚的线性回归得到。考虑所有可能的
J
J
J个终止结点的回归树
T
=
{
T
k
}
\mathcal T=\{T_k\}
T={Tk}所形成的字典作为
R
p
\mathbb R^p
Rp的基函数集合。线性模型为
其中 K = c a r d ( T ) K=card(\mathcal T) K=card(T). 因为树的个数可能比训练集大很多,所以采用正则化,令 α ^ ( λ ) \hat \alpha(\lambda) α^(λ)是下式的解
J ( α ) J(\alpha) J(α)是关于系数的惩罚函数,如ridge、lasso等。因为只有候选树的一小部分会在拟合时起作用,所以Lasso是合理的
算法16.1给出了算法细节。注意 ϵ \epsilon ϵ的一步是一个无穷小量
(算法16.1的前向分段线性回归Forward Stagewise Linear Regression和3.8.1节的增长向前分段回归非常像。感觉差别是基不一样,算法16.1中是一堆树。不过算法16.1中2(a)步好像不是找最相关的,而是能让loss减的最小的,这两者在基归一化后应该是一样的)
原则上,这个过程可以一直迭代到所有的残差为 0 0 0,或 β ∗ = 0 β^∗=0 β∗=0.第二种情况会发生在 K < N K<N K<N时,此时对应 λ = 0 \lambda=0 λ=0
迭代 M < ∞ M<\infty M<∞次后,许多系数变为0. 这个表现像是Lasso - P608 线性回归中,如果 K > N K>N K>N,一般没有唯一的最小二乘,可以选L1最下的作为唯一解。(这似乎就是基追踪问题了。另一方面,也就是说正则能让ill-posed病态问题改善)
- P609 如果所有的基函数互不相关,当
ϵ
↓
0
,
M
↑
\epsilon \downarrow 0, M \uparrow
ϵ↓0,M↑(
ϵ
\epsilon
ϵ单调递减收敛于0,
M
M
M单调递增),使得
M
ϵ
→
t
M\epsilon \to t
Mϵ→t时,算法16.1得到的跟lasso一样的路径和解。
或者同3.8.1节,两者要相等需使Lasso中参数沿路径单调,这里的基函数不相关可能能保证这一点。如果特征不相关,也经常是这种情况(其实也能理解,特征不相关,意味着各自发挥的作用不同)
如果 α ^ k ( λ ) \hat \alpha_k(\lambda) α^k(λ)不是关于 λ \lambda λ单调,则解集合不同,算法 16.1解的集合正则参数值趋向于没有lasso改变得快 - P610 Efron et al. (2004)通过在 ϵ \epsilon ϵ极限的情形下特征化解的路径,精确描述了这种联系,证明lasso和前向分段,系数的路径都是分段线性函数.从而提出高效的算法,使得整个路径计算时仅用到单个最小二乘拟合相同的花费,即最小角回归least angle regression算法
- P610 带收缩的boosting树算法式10.41和算法16.1非常接近,区别在于每一次迭代时最优树的选取是通过自上而下的贪婪生成.对于其他的损失函数,如AdaBoost指数损失和交叉熵,Rosset et al. (2004a)展示类似这里的结果.因此,可以将带收缩的boosting树看成在所有可能树
J
J
J个终止结点上的单调病态回归的形式,将lasso的惩罚作为正则化项。
无收缩的boosting类似前向逐步回归forward-stepwise regression和最优子集选择best-subset selection,也即惩罚线性回归中非零参数个数 J ( α ) = ∑ k ∣ α k ∣ 0 J(\alpha)=\sum_k |\alpha_k|^0 J(α)=∑k∣αk∣0. 对于起作用变量少时,最优子集方法经常取得好效果,如果有较多强变量的情形下,最优子集非常greedy,与其他不太aggressive的算法,如lasso或岭回归相比,经常得到很差的结果。这也是boosting采用收缩得到改善的又一个说明(这也太神奇了)
16.2.2 "Bet on Sparsity"原则
- P610,611
L
1
L_1
L1建立比较慢,带收缩的boosting建立也比较慢。
L
2
L_2
L2则快很多,如12.3.7节解析解。有时boosting的表现高于某些如支持向量机,很大程度上是因为
L
1
L_1
L1和
L
2
L_2
L2的区别,因为
L
1
L_1
L1产生稀疏解
假设有10000个数据点,模型是一百万棵树的组合。 L 2 L_2 L2系数稠密,但因为数据太少,想估计大量非零系数,这会有维度灾难造成的损失,很难拟合。(可是 L 2 L_2 L2的参数有效数少了呀,确实收缩了。不知道作者这里怎么思考这个方面的)
换句话说, L 1 L_1 L1惩罚遵循了"bet on sparsity"的这一高维问题的准则:采用在稀疏问题表现好的方法,因为没有方法在稠密问题表现好.
这些讨论需要一些限制条件:- 对于给定的应用,稀疏度取决于未知的真实函数个数,以及选定的字典集 T \mathcal T T
- 稀疏还是稠密,和训练数据集的大小、噪信比noise-to-signal ratio, NSR有关.越大的训练集允许我们估计更小标准差的系数.当给定样本大小,小NSR中能识别出更多的非零系数
- 字典集的大小. 增大字典集可能导出更稀疏的表示,但是问题会变得更难,导致更高方差
- P612 图16.2用模拟数据说明分类和回归中 L 1 L_1 L1比 L 2 L_2 L2更好. L 2 L_2 L2无论在哪都表现差,Lasso只在稀疏系数下表现好,(未知的真实函数稠密时,Lasso好像表现不如Ridge)
- P612 解释的方差百分比percentage squared prediciton explained,解释的误分类率的百分比percentage misclassification error explained,这两个值越大越好
- P613 噪信比NSR
16.2 正则化路径,过拟合与间隔Margin
- P613 经常观察到boosting很慢才会过拟合.这个现象的部分原因在介绍随机森林时给出——分类错误率比均方误差对方差更不敏感(这句话我还是理解不能),并且分类是boosting的主要研究对象.这节将说明boosted模型的正则路径表现很好,而且对于特定的损失函数,有吸引人的极限形式
- P614 (LAR可以用于精确计算Lasso和前向分段线性回归 F S 0 FS_0 FS0,因为LAR只需要在找方向的方法上稍加修改,就可以实现这两种分段线性的路径)
- P614 造数据的例子中,向前分段路径趋于单调、光滑,而lasso振荡,这是因为变量集间的强相关性,lasso某种程度上受到多重共线性的影响. 图16.4中这两模型的性能相似,达到相同的最小值.在 F S 0 FS_0 FS0的后期需要更长时间来过拟合,这可能是更光滑路径的结果.(P88也提到 F S 0 FS_0 FS0比Lasso的约束要强。感觉LAR约束要强于Lasso,弱于 F S 0 FS_0 FS0)
- P614 Hastie et al. (2007)证明 F S 0 FS_0 FS0求解了平方误差损失下Lasso的单调版本,考虑 T α = T ∪ { − T } \mathcal T^\alpha=\mathcal T\cup \{-\mathcal T\} Tα=T∪{−T}(这就很奇怪了, T \mathcal T T里面不包含自身的负吗),以及 α k ≥ 0 \alpha_k \ge 0 αk≥0的模型 f ( x ) = ∑ T k ∈ T α α k T k ( x ) f(x)=\sum_{T_k\in \mathcal T^\alpha} \alpha_k T_k(x) f(x)=∑Tk∈TααkTk(x),此时Lasso系数路径是正的, F S 0 FS_0 FS0则是单调非降
- P614 关于Lasso和 F S 0 FS_0 FS0单调的一段偏微分方程分析(没看懂啊)
- P614 有建议表明boosting对于二分类问题表现很好是因为它有最大化间隔margin的特点,像4.5.2节和12章的支持向量机.Schapire et al. (1998)定义拟合模型
f
(
x
)
=
∑
k
α
k
T
k
(
x
)
f(x)=\sum_k \alpha_k T_k(x)
f(x)=∑kαkTk(x)的标准化
L
1
L_1
L1间隔为
这里分母换成L2范数,就变成SVM式4.40. L 1 L_1 L1间隔 m ( f ) m(f) m(f)用 L ∞ L_{\infty} L∞的单位、即最大的坐标距离,衡量到最近的训练点的距离(这个式子选择的仍然是离判别界面最近的点,更准确说是分得最错的点,毕竟选点只和分子有关,这个分子和点到直线距离公式的分子一样。但是用 L ∞ L_\infty L∞为单位这句不懂) - P616 一些关于Adaboost收敛到某个 L 1 L_1 L1 margin解的结论
- P616 综合本节结论:Boosted分类器的序列形成了一个关于间隔最大化解的 L 1 L_1 L1正则化单调路径
16.3 学习集成Learning Ensembles
-
P616 利用前面章节,得到更高效的集成模型。考虑如下形式函数
其中 T \mathcal T T是基函数字典,一般是树
Friedman and Popescu (2003)提出混合方式,将该过程分成两步- 从训练集导出有限基函数字典 T L = { T 1 ( x ) , T 2 ( x ) , … , T M ( x ) } \mathcal T_{L}=\{\mathcal T_1(x), \mathcal T_2(x), \dots, \mathcal T_{M}(x)\} TL={T1(x),T2(x),…,TM(x)}
- 函数族 f λ ( x ) f_\lambda(x) fλ(x)通过拟合Lasso路径得到
T L \mathcal T_L TL通过梯度提升或随机森林的方式得到. 该模型的最简单形式可看作是对提升boosting或随机森林的后处理post-processing boosting。通过对这些树进行 lasso 路径拟合,一般我们会得到更加简化的集合,它会大大减少未来预测的计算量和存储量。在下一节,将讨论这种方法的变种,进而降低 T L \mathcal T_L TL中的相关性,并且提高lasso post processor的表现
-
P618 图16.6展示了lasso post-processing对随机森林有较大程度改善,并且将森林降至40棵树,而不是原来的1000棵.这个post-processed表现与gradient boosting相当(这也太强了。等于说是先random forest选一堆树,不是直接平均,而是lasso后处理)
16.3.1 学习一个好的集成
-
P617 并非所有 T L \mathcal T_L TL都能通过后处理表现好,需要一个能把所需要空间覆盖地好,并且基函数之间足够不同的集合
-
P618 Friedman and Popescu (2003)从数值积分numerical quadrature和重要性采样importance sampling获得启发,把未知函数看成积分
其中 γ ∈ Γ \gamma \in \Gamma γ∈Γ用于索引基函数 b ( x ; γ ) b(x;\gamma) b(x;γ). 寻找 M M M个赋值点 γ m ∈ Γ \gamma_m \in \Gamma γm∈Γ和权重 α m \alpha_m αm使 f M ( x ) = α 0 + ∑ m = 1 M α m b ( x ; γ m ) f_M(x)=\alpha_0 + \sum_{m=1}^M \alpha_m b(x;\gamma_m) fM(x)=α0+∑m=1Mαmb(x;γm)在 x x x的定义域内近似 f ( x ) f(x) f(x)(类似蒙特卡洛积分),重要性采样对 γ \gamma γ随机采样,但是对 Γ \Gamma Γ空间中相关区域赋予更大权重(应该是指高概率区域)。采用式16.9衡量相关性的缺失
全局最小点为 γ ∗ = arg min γ ∈ Γ Q ( γ ) \gamma^* = \arg\min_{\gamma \in \Gamma}Q(\gamma) γ∗=argminγ∈ΓQ(γ),引入随机性必然得到次优的 Q ( γ ) ≥ Q ( γ ∗ ) Q(\gamma)\ge Q(\gamma^*) Q(γ)≥Q(γ∗). 他们提出采样模式 S \mathcal S S的特征宽度characteristic width σ \sigma σ的自然度量
σ \sigma σ太窄意味着许多 b ( x ; γ m ) b(x;\gamma_m) b(x;γm)很接近 b ( x ; γ ∗ ) b(x;\gamma^*) b(x;γ∗);太宽意味着 b ( x ; γ m ) b(x;\gamma_m) b(x;γm)过于分散,可能包含许多无关情形。他们提出采用子采样sub-sampling作为引入随机性的机制,得到集成生成ensemble-generation算法16.2.
其中 S m ( η ) S_m(\eta) Sm(η)是大小为 N ⋅ η ( η ∈ ( 0 , 1 ] ) N\cdot\eta(\eta\in (0,1]) N⋅η(η∈(0,1])的训练观测的无重复子样本,模拟建议 η ≤ 1 / 2 \eta\le 1/2 η≤1/2,并对于大 N N N,取 η ∼ 1 / N \eta\sim 1/\sqrt N η∼1/N. 降低 η \eta η会提高随机性,从而提高宽度 σ \sigma σ. 参数 ν ∈ [ 0 , 1 ] \nu\in [0,1] ν∈[0,1]对随机化的过程引入记忆memory,越大越能避免 b ( x ; γ ) b(x;\gamma) b(x;γ)与之前找的一致。
(注意该算法只生成字典,并没有完成最后的拟合)
很多熟悉的随机化模式都是该算法的特殊情形- Bagging: η = 1 , ν = 0 \eta=1, \nu=0 η=1,ν=0,且有放回采样
- 随机森林:类似,通过划分变量引入更多随机性。对比样本的子采样 η \eta η和随机森林特征子采样 m m m,效果类似,但后者会有潜在提升的偏差
- 梯度提升: η = 1 \eta=1 η=1,一般得不到充分大的 σ \sigma σ
- 随机梯度提升stochastic gradient boosting:完全遵循该方法
作者建议 ν = 0.1 , η ≤ 1 / 2 \nu=0.1,\eta \le 1/2 ν=0.1,η≤1/2,并且称结合过程——集成生成和后处理,为重要性采样的学习集成importance sampled learning ensemble(ISLE)
-
P620 用随机梯度提升采样,lasso后处理没有提升精度,但是大幅减少了树的数量
(总的感觉是,bagging和随机森林产生 σ \sigma σ太宽,产生很多无用的树;而梯度提升的 σ \sigma σ太窄,产生的树不够多样)
16.3.2 规则集成Rule Ensembles
- P622 通过从集合中的每棵树构造一系列规则来集成树. 把树中每个结点都看作一条规则,这是树的过完备over-complete的基。对于一个集成
T
\mathcal T
T中的每棵树
T
m
T_m
Tm,可以构造最小集成规则mini-ensemble of rules
T
R
U
L
E
m
\mathcal T^m _{RULE}
TRULEm,形成更大的集成
然后像其他集成一样处理,通过lasso等方式进行后处理
对于这种方法,从更复杂的树导出规则,有以下优点:- 模型空间增大
- 规则比树更好解释,所以有更简单模型的潜力
- 通常通过把单个变量 X j X_j Xj各自地引入规则,允许集成建立好的线性函数
- P623 例子展示,可以和线性函数一起使用
文献笔记
- P624 神经网络可以看作是集成,学习隐变量参数作为基函数,进而思考如何组合
- P624 SVM也可以看作集成,在高维特征空间中用 L 2 L_2 L2正则化
- P624 Boosting和Lasso通过 L 1 L_1 L1产生稀疏性,克服高维问题。而SVM依赖 L 2 L_2 L2正则的核技巧
参考文献:
[1] Trevor Hastie, Robert Tibshirani, Jerome Friedman. The Elements of Statistical Learning, Second Edition
[2] ESL CN