文章目录
一、 个体与集成
集成学习:通过构建并结合多个学习器来完成任务,也称为多分类器系统。基于委员会的学习
1. 集成的方式
- 同质集成:
集成中只包含同种类型的“个体学习器”
相应的学习算法称为“基学习算法” - 异质集成:
个体学习器由不同的学习算法生成。
不存在“基学习算法”
2. 如何得到好的集成:个体学习器“好而不同”
3. 集成学习算法
二、Boosting
Boosting是一族可将弱学习器提升为强学习器的算法,它的思想起源于Valiant提出的PAC(Probably Approximately Correct)学习模型
1. 工作机制
- 从初始训练集训练出一个基学习器
- 根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注
- 基于调整后的样本分布训练下一个学习器
- 重复 2 ~ 3 ,直到基学习器数目达到事先指定的值T
- 对这T个学习器加权结合。
2. 面临的问题
- 如何计算学习误差率
- 如何得到弱学习器权重系数a
- 如何更新权重D
- 使用何种结合策略
3. AdaBoost算法
AdaBoost算法是Boosting族最著名的代表
4. 综合
三、Bagging
Bagging是Bootstrap AGGregatING的缩写,是并行式集成学习方法最著名的代表。
1. 算法描述
- Bagging通过降低基分类器的方差,改善了泛化误差
- 其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏差引起。
- 由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集的任何特定实例。
2. Bagging和Boosting的比较
1. 样本选择上
- Bagging:训练集是在原始数据集中有放回选取的,从原始数据集中选出的各轮训练集之间是独立的。
- Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2. 样例权重
- Bagging:使用均匀取样,每个样例的权重相等。
- Boosting:根据错误率不断调整样例的权重,错误率越大则权重越大。
3. 预测函数
- Bagging:所有预测函数的权重相同
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4. 并行计算
- Bagging:各个预测函数可以并行生成。
- Boosting:各个预测函数只能顺序生成,因为后一个模型需要前一轮模型的结果。
四、随机森林
随机森林(Random Forest)是Bagging的一个扩展变体。
- 基学习器:决策树
- 本质:集成学习/Bagging,依靠于决策树的投票选择来决定最后的分类结果。
- 森林中每棵树的生成规则:
- 设训练集大小为N,对每一棵数而言,随机且有放回地从训练集中抽取N个训练样本。
- 设属性有M个,指定一个常数m << M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的特征。
- 每棵树都尽最大程度的生长,并且没有剪枝过程。
- 随机森林的两个随机:
- 样本随机
- 特征随机
- 两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好的抗噪能力(比如:对缺省值不敏感)
1. 影响随机森林分类效果的两个因素
- 森林中任意两棵树的相关性:相关性越大,错误率越大
- 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减少特征选择个数m,则树的相关性和分类能力会相应的降低;增大m,两者也会随之增大。 所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。
2. 袋外错误率(oob error)
构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error。
- 随机森林的一个重要优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成过程中就可以对误差建立一个无偏估计。
- 在构建每棵树时,对训练集随机且有放回的抽样。所以对于第k棵树而言,大约有36.8%的训练样本没有参与第k棵树的生成,它们称为第k棵树的oob样本。
- 袋外错误率:
- 对每个样本,计算它作为oob样本的树对它的分类情况(越有1/3的树)
- 以简单多数投票作为该样本的分类结果
- 最后用误分个数占样本总数的比率作为随机森林的oob误分率。