6.集成学习
基本概念
将多个模型的决策结合起来,提高整体效果;集成学习模型通过将多个学习器组合,获取比单一学习显著优越的泛化能力。分类大纲:
模型融合:将训练出的强学习器组合进一步提高性能。
多数法(Max Voting)
平均法(Averaging)
加权平均法(Weighted Averaging)
堆叠法(Stacking)
混合法(Blending)
机器学习元算法:弱学习器的组合。
袋装法(Bagging)
袋装通用(Bagging Meta-Estimator)
随机森林(Random Forest)
提升法(Boosting)
Adaboost
XGBoost
Gradient Boost
1. 模型融合
步骤:
先训练出多个功能强大的学习器
然后,进一步提高学习器能力,尝试将其组合起来
优缺点:
好处是增强模型的预测和泛化能力
坏处是多模型的学习加上再学习的过程会增加计算代价
目标:好而不同:
好表示个体学习器的性能都要好
不同是个体模型的类别不同
1.1. 多数法(Max Voting)
通常用于分类,使用多个模型对每个数据预测,每个模型预测视为“投票”,大多数模型得到的结果为最终预测结果。
1.2. 平均法(Averaging)
采用所有模型的平均预测值进行最终预测,可用于回归和分类中的概率预测。
1.3. 加权平均(Weighted Averaging)
平均法的扩展,根据模型的重要性分配不同权重(权重总和为1.0)。
1.4. 堆叠(Stacking)
堆叠法来自多个模型(KNN、SVM、决策树)的预测来构建新模型,使用多个模型,在交叉验证基础上,使用部分训练数据训练,然后部分数据测试,最终得到每个模型的预测结果,最终将多个模型融合到一起。(过程很复杂)
1.5. 混合法(Blending)
混合法和堆叠法类似,区别是它仅使用验证集来重新建模并进行预测,模型是一样的,但训练部分使用的数据集有所区别(训练集、验证集、测试集)。
2. 机器学习元算法
不使用多个算法,一般只使用一个算法,同一个算法创建不同的模型,后期使用投票的方式处理(如使用决策树),每个分类器都是弱分类器,但最终组合后效果比强分类器好。
分成两大类:
Bagging个体学习器相互之间不依赖,同时对样本随机采样并行化生成个体学习器。——对样本随机取样产生多个独立模型,平均所有模型预测值,目的是减小方差(Variance),模型稳定。
Boosting的个体学习器之间存在依赖,在前边模型的训练结果生成的模型,必须串行化生成。——拟合前一个模型的误差,主要是减小偏差(Bias),模型准确但稳定性不是很好。
下图Variance和Bias区别:准和稳。
2.1. 抽样技术
抽样:
在训练数据集可取回时的抽样(Bagging/Boosting)
在输入特征上抽样(Random Forest = Bagging + 特征抽样)
2.2. Bagging
上图中构造One-Level二分类树:两个切割点,一层二元树最终准确率极限:70%。如果使用袋装,在该例子上重复抽样10次,依旧使用的切割点。
十个分类器投票来计算结果,最终根据Sum
的结果综合投票计算——都是一层二元树,而投票结果却有二层二元树的能力。这个例子的假设:
每一层的实例的权重是一样的,各自独立,一视同仁。
不太容易出现过拟合(Model Overfitting)。
2.3. Random Forest
随机森林是特别针对决策树的Bagging方法,除了对训练数据上做随机,它还会在算法上做随机,从K个最好的字段中随机挑选特征,并从这些特征中选择最好的:
训练数据上随机抽样
特征上随机抽样(比通用Bagging多的一个特点)
Bagging的方法不一定要和随机森林配搭,它允许搭配任何算法,所以Random Forest = Bagging + 特征抽样。
2.4. Boosting
梯度提升决策树(GBDT:Gradient Boosting Decision Tree),集成许多弱(决策树)分类器,以发展最优模型的方法。Boosting是利用迭代找到优化后的模型,一旦碰到数据集非常复杂时,成千上万计算会成为瓶颈,所以有了极限梯度提升(XGBoost:eXtreme Gradient Boosting),之后微软训练了效率更高、准确率更高的LightGBM(Light Gradient Boosting Machine)。
同样是在训练数据上做手脚,在挑选训练数据时会动态调整每一笔数据被动态抽到的概率,针对难以分类正确的数据提高其抽样概率,它对训练数据提供了一个概率的权重,让某些数据更容易被抽样。——根据上一次的结果调整权重,决定下一次哪些数据必须被抽中。
最开始每笔数据权重都是
然后发现某些数据分类错误,于是调整其权重。
权重低不代表不会被抽中。
参考下图:
4的概率在后续抽样提高了,而其他正确的分类下的概率降低了。
权重分配后,权重的总和依旧是
1.0
。
越后面的分类器越重要,从图上可以看到三个分类器最终调整的权重会不一样,Boosting的结果最终是加权的结果,容易产生过拟合,XGBoost全称是Extreme Gradient Boosting,它最大的特点是在于能够自动利用CPU的多线程进行并行,大幅度提高模型运算效率。
下图是提升法原理:
最终产生的是非线性的结果。
2.5. GBDT
原理:
使用训练集和样本真集(标准答案)训练一棵树,使用这个树预测训练集,得到每个样本预测值,使用预测和真实的差异,二者相减得到“残差”。
然后训练第二棵树,此时使用残差代替真值做标答,两棵树训练完成后,再次得到每个样本的残差。
然后训练第三棵树,依次类推,监控某个指标来停止训练。
XGBoost在分布式应用上也有优势,可以直接在YARN和Spark机器学习上使用。
最后更新于
这有帮助吗?