目录
1. 个体与集成
集成学习通过构建并结合多个学习器来完成学习任务。一般结构:先产生一组个体学习器,再用某种策略将它们结合起来。
集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等
同质集成:个体学习器是同种类型,称为基学习器。
异质集成:个体学习器由不同算法生成,成为组件学习器/个体学习器。
弱学习器:泛化性能略优于随即猜测的学习器。
* 个体学习器至少不差于弱学习器
要获得集成,个体学习器应该“好而不同”,个体学习器有一点“准确性”,“多样性”,即学习器间有差异。
当基学习器的误差相互独立时,随着集成中个体分类器数目T的增大,集成错误了指数下降,最终趋于0。
集成学习分类 :两大类,1.个体学习器间存在强依赖关系、必须串行生成的序列化方法(代表是Boosting);2.个体学习器间不存在强依赖关系、可同时生成的并行化方法(例如Bagging/随机森林)。
2. Boosting
训练机制:初始化训练一个基学习器→根据表现调整样本分布(预测错误的样本在后续收到更多关注)→训练下一个基学习器→加权结合。
重赋权法(re-weighting):在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。
重采样法(re-sampling):在每一轮学习中,根据样本分布对训练集进行重新采样,再用重新采样得到的样本集进行训练。
注意:每一轮训练都检查当前的基学习器是否满足基本条件(比随即猜测好),若不满足,当前基学习器被抛弃,且学习过程停止。
Boosting主要关注降低bias。
Adaboost(二分类)
损失函数(指数函数):
第k个弱分类器Gk(x)在训练集上的加权误差率为:
第k个弱分类器Gk(x)的权重系数为:
第k+1个弱分类器的样本集权重系数为:
Zk 是规范化因子,
最终的强分类器为:
Adaboost(回归)
计算每个样本的相对误差:
最大误差:
计算回归误差率:
弱学习器的系数:
下一次训练的样本权重分布:
最终强学习器为:
Adaboost正则化
这个正则化项我们通常称为步长(learning rate)。定义为ν。
ν 的取值范围为0<ν≤1。对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
Adaboost优缺点
Adaboost的主要优点有:
1)Adaboost作为分类器时,分类精度很高
2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
3)作为简单的二元分类器时,构造简单,结果可理解。
4)不容易发生过拟合
Adaboost的主要缺点有:
1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。
2)基分类器数目(迭代次数)不好设定
3)对样本不平衡敏感
3. Bagging&随机森林
3.1 Bagging
它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。
Bagging基于自助采样法,即有放回采样,约有63.2%的样本出现在采样集中。Bagging通常对分类任务采用简单投票法、对回归任务使用平均法。Bagging能不经修改的用于多分类、回归等任务。
Bagging主要关注降低方差variance。
3.2 随机森林
RF在以决策树为基学习器构建Bagging的基础上,进一步在决策树的训练过程中引入了随机属性选择。推荐k=log2(d)。随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
RF的主要优点有:
1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
3) 在训练后,可以给出各个特征对于输出的重要性
4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
6) 对部分特征缺失不敏感。
RF的主要缺点有:
1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
4. 结合策略
学习器结合的三方面好处:
- 统计上:由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此使单学习器可能因误选导致泛化性能不佳,结合多个学习器会降低这一风险。
- 计算上:学习算法往往会陷入局部极小,通过多次运行之后进行结合,降低陷入糟糕局部极小的风险。
- 表示上:某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能得到更好的近似。
4.1 平均法
简单平均
加权平均:
- Beriman在研究Stacking回归时发现,必须使用非负权重才能确保集成性能优于单一最佳个体学习器,因此在集成学习中一般对学习器的权重有非负约束。
- 对于规模较大的集成来说,要学习的权重比较多,容易导致过拟合。
- 在个体性能相差较大时宜使用加权平均;在个体学习器性能相近时宜用简单平均法。
4.2 投票法
- 绝大多数投票法:若某标记得票超过半数,则预测为该标记;否则拒绝预测。
- 相对多数投票法:预测为得票最多的标记,若同时有多个标记获得最高票,从中随机选择一个。
- 加权投票法:取加权得票最大值的标记。
分类器的输出:类标记或者类概率。
4.3 学习法
当训练数据很多时,通过另一个学习器来进行结合。
Stacking算法先从初始数据集训练出初级学习器,然后生成一个新数据集用于训练次级学习器。在中国新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记被当作样例标记
5. 多样性
5.1 多样性度量
多样性度量是用于度量集成中个体分类器的多样性。
hi = +1 | hi = -1 | |
---|---|---|
hj = +1 | a | c |
hj = -1 | b | d |
a+b+c+d = m
- 不合适度量
d i s i j dis_{ij} disij = (b+c)/m
d i s i j dis_{ij} disij 值域[0,1],值越大多样性越大 - 相关系数
p i j = a d − b c ( a + b ) ( a + c ) ( c + d ) ( b + d ) p_{ij} = \frac{ad-bc}{\sqrt{(a+b)(a+c)(c+d)(b+d)}} pij=(a+b)(a+c)(c+d)(b+d)ad−bc
值域[-1,1] - Q统计量
Q i j = a d − b c a d + b c Q_{ij} = \frac{ad-bc}{ad+bc} Qij=ad+bcad−bc - k-统计量
k = p 1 − p 2 1 − p 2 k = \frac{p_1-p_2}{1-p_2} k=1−p2p1−p2
取得一致的概率: p 1 = a + d m p_1 = \frac{a+d}{m} p1=ma+d
偶然取得一致的概率: p 2 = ( a + b ) ( a + c ) + ( c + d ) ( b + d ) m 2 p_2 = \frac{(a+b)(a+c)+(c+d)(b+d)}{m^2} p2=m2(a+b)(a+c)+(c+d)(b+d)
若两个分类器完全一致,k=1。
偶然一致,k=0。
k通常>=0.
5.2 多样性增强
一般思路是在学习过程中引入随机性,常见做法是对数据样本、输入属性、输出表示、算法参数进行扰动。
- 数据扰动
通常基于采样法。在Bagging中自助采样,在AdaBoost中序列采样。对于不稳定基学习器很有效。 - 输入属性扰动
从初始属性集中抽取出若干个属性子集。
适用条件:包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会节省时间开销。由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差。
不适用于数据只含少量属性,或者冗余属性很少。 - 输出表示扰动
对输出表示进行操纵以增强多样性。可对训练样本标记稍作变动。如:随即改变一些训练样本的标记;将分类输出转化为回归输出;原任务拆解为多个同时求解的子任务。 - 算法参数扰动
随机设置不同的参数,往往可产生差别较大的个体学习器。
负相关法,显示地通过正则项来强制个体神经网络使用不同的参数。
6. Tips
- 不稳定基学习器:决策树、神经网络等。训练样本稍加变化就会导致学习器有显著变动。
- 稳定基学习器:线性学习器、支持向量机、朴素贝叶斯、KNN等,对数据样本的扰动不敏感。(增强其多样性需要属性扰动等其他机制)
7. 面试问题收集
1. bagging为什么能减小方差?
若各子模型独立,则有,此时可以显著降低variance。若各子模型完全相同,则
,此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。
2. bagging为什么不能减小偏差?
随机采样(数据间具有重叠)+训练的都是同一类模型+最终结果为多数表决或者取平均值。
由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。由于,所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。
3. boosting为什么能减小偏差?
boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。
(总之要记住: 偏差bias跟模型有关,方差variance跟数据有关)
4. Boosting(adaboost)与bagging区别?
(1)并行计算:bagging各基分类器可并行生成;boosting各基分类器串行生成,存在依赖关系
(2)样本选择:bagging有放回抽样,各训练集相互独立;boosting每一轮的训练样本集都依赖于上一轮的学习结果
(3)样本权重:bagging每个样例权重相等;boosting根据错误率,不断更新样本权重
(4)分类器权重:bagging各基分类器没有权重;boosting各基分类器根据上一轮训练误差得到该次基分类器的权重
(5)boosting目标是降低偏差;bagging目标是降低方差
(6)boosting对噪声较敏感;bagging对噪声不敏感
5. 为什么集成学习效果好?
首先,基于多个弱分类器,采取一定规则(多数表决,平均取值)将各学习结果整合,使得结果强于最差的,次于最好的,一定程度上增强的泛化能力。
6. 集成有效的前提–各基分类器必须“好而不同”
“好”,即每个弱分类器要有一定“准确性”,错误率不能高于0.5。—因若太差,最终输出是多数表决/平均值的结果也不会好
“不同”,弱分类器间要有差异,“多样性”。—因相互独立的分类器,随着分类器的数目增多,集成的错误率呈指数下降,即,最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.
7. Boosting的两个核心问题:
(1)每一轮如何改变训练样本权重?提高前一轮分错样本的权重
(2)通过什么方式组合基分类器?加法模型线性组合,减小误差率大的基分类器权重,增大误差率小的基分类器权重
Adaboost相关面试题
-
样本、分类器权重如何确定的?
根据上一轮的误差率e求得本轮分类器权重(与e成反比),再由分类器权重求得样本权重。(面试可能需要让进行公式推导) -
每次迭代的基分类器有何不同,如何去学习的?
关注上一轮被分类错误的样本,改变样本分布,然后基于LR,DT等模型进行学习。 -
输出结果?
加权多数表决(权重*基分类器i结果),加大分类误差率小的弱分类器权重,减小分类误差率大的弱分类器权重。 -
损失函数是什么?
指数损失 -
为什么用指数损失函数?
其连续可微,可替代0-1损失函数作为优化目标 -
讲一讲前向分步思想?
利用前一轮的学习结果更新后一轮训练集权重,再进行学习 -
权重提升怎么体现在分类器上?
体现在每轮的误差率,分类器的权重与该误差率成反比
Ps:机器学习的权重分为三部分:特征权重,样本权重,分类器权重
特征权重:LR,SVM
样本权重:Adaboost,训练样本类别不均衡,
分类器权重:Adaboost -
Adaboost是如何改变样本权重?
提高被分错样本权重,减小分类正确样本权重,根据当前基分类器的权重,将分错样本的权重进行指数级别地增大,分对样本的权重减小。
随机森林面试题
优点:
- 并行
- 随机性的引入,增加了多样性,泛化能力非常强,抗噪声能力强,对缺失值不敏感;
- 可省略交叉验证,因随机采样;
- 并继承决策树有的优点,包括:
(1)可得到特征重要性排序,因此可做“特征选择”;
(2)可处理高维特征,且不用特征选择;
(3)能处理离散型/连续型数据,无需规范化;
缺点:
- 随机森林在解决回归问题时,表现较差,这是因为它并不能给出一个连续的输出。
- 随机森林已经被证明在某些噪音较大的分类或者回归问题上会过拟合。
- 对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,无法控制模型内部运行(可控性差)。
- 对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。
- 可能有很多相似的决策树,掩盖了真实的结果。
- 执行速度虽然比boosting等快(随机森林属于bagging),但比单只决策树慢多了。
面试问题
-
为什么随机抽样?
保证基分类器的多样性,若每棵树的样本集都一样,那训练的每棵决策树都是一样 -
为什么要有放回的抽样?
保证样本集间有重叠,若不放回,每个训练样本集及其分布都不一样,可能导致训练的各决策树差异性很大,最终多数表决无法 “求同”,即最终多数表决相当于“求同”过程。 -
为什么不用全样本训练?
全样本忽视了局部样本的规律,不利于模型泛化能力 -
为什么要随机特征?
随机特征保证基分类器的多样性(差异性),最终集成的泛化性能可通过个体学习器之间的差异度而进一步提升,从而提高泛化能力和抗噪能力 -
需要剪枝吗?
不需要 -
RF与决策树的区别?
(1)RF是决策树的集成;
(2)RF中是“随机属性型”决策树 -
RF为什么比bagging效率高?
bagging无随机特征,使得训练决策树时效率更低