Ensemble Learning 集成学习
个体与集成
集成学习通过构建并结合多个学习器来完成学习任务。
要获得好的集成,个体学习器应好而不同。
集成学习方法分为两大类:
- 个体学习器间存在强依赖关系、必须串行生成的序列化方法。Boosting。降低偏差。
- 个体学习器间不存在强依赖关系、可同时生成的并行化方法。Bagging 和 Random Forest。降低方差。
Boosting
Bagging 与 Random Forest
结合策略
学习器结合的好处:泛化性能变好、避免局部极小、扩大假设空间。
假设集成包含 个学习器,其中在示例上的输出为。
平均法 averaging
对于数值型输出。
不同的集成学习方法可视为通过不同的方式来确定加权平均法中的基学习器权重。
加权平均法的权重一般从训练数据中习得,并不可靠,也可能过拟合。所以加权平均法未必一定优于简单平均法。个体学习器性能相差较大时可用加权平均法,否则简单平均法就可以了。
投票法 majority voting
对于分类任务。
注意,若基学习器的类型不同,则其类概率值不能直接进行比较。这种情况下,就将类概率输出转化为类标记输出(1或0)然后再投票。
学习法 stacking
训练数据很多时。
用另一个学习器 meta-learner来结合,stacking。
Stacking 先从初始数据集训练出初级学习器,然后生成一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当做样例输入特征,而初始样本的标记仍被当做样例标记。
在训练阶段,次级训练集是利用初级学习器生成的,如果直接用初级学习器的训练集生成次级训练集,容易过拟合。所以一般会使用交叉验证或者留一法,用训练初级学习器未使用的样本来产生次级学习器的训练样本。
Things to be mindful of
- With time sensitive data - respect time
- Diversity as important as performance
- Diversity may come from
- Different algorithms.
- Different input features.
- Performance plateauing after N models
- Meta model is normally modest.
Stacking example
1 | from sklearn.ensemble import RandomForestRegressor # import model |
StackNet
todo
多样性
增强多样性的方法,一般思路是在学习过程中引入随机性。常见做法主要是对数据样本(不稳定的基学习器)、输入属性(包含大量冗余属性的数据)、输出表示、算法参数进行扰动。
Ref
[1] 机器学习 - 周志华
[2] 第06章:深入浅出ML之Boosting家族 | 计算广告与机器学习
[3] Coursera - How to Win a Data Competition