集成学习:构建多个分类器(弱分类器),用某种策略将多个结果集成起来,作为最终结果。
要求:每个弱分类器具备一定的“准确性”,分类器之间具备“差异性”。
集成学习有效的理论依据:最简单的voting方法。假设所有的弱分类器的错误率为e。则得出T个分类器得到的结果的错误率类似于二项分布中正确大于T/2的概率的和,小于e。且随着T的增加,错误率指数级下降,趋近于0。
上述基于理论依据,基于每个弱(基)分类器的误差相互独立,但是解决相同问题,此假设不可能做到。因此集成学习的关键是,使得弱分类器之间“好而不同。”
集成学习大致分两大类:1)基分类器之间强依赖,必须串行。Boosting 2)基分类器之间无强依赖,可并行。Bagging、随机森林(Random Forest)。
1. Boosting :一族将弱分类器提升为强分类学习器的算法。
思路:从初始训练集得到基学习器,根据其表现,对训练样本进行调整,使得之前分类错误的样本后续更受关注,用改变后的样本学习下一个分类器。重复学习T个分类器,T个分类器的结果加权得到最终结果。
代表AdaBoost:
2. Bagging(Bootstrap Aggregating 再采样)
要做到各弱分类器之间尽可能相互独立。现实中,做到分类器之间尽可能有较大的差异。如果分出若干子集,在数据量小的情况下不可行。因此,使用相互有交叠的采样子集。
对包含m个样本的集合,采用有放回随机抽样,得到T个训练集,每个训练集包含m个样本。基于每个采样进行训练。对结果采用简单投票法(分类)或者简单平均法(回归)得到最终结果。复杂度(采样+训练+集成计算)与训练单个基学习器近似。
未被采样的样本,称为包外样本。可用作验证集。若为决策树,可辅助剪枝,辅助对0结点的处理。若为神经网络,可辅助early stopping,减小过拟合。
Bagging 关注于降低方差,因此在不剪枝决策树、神经网络等易受样本扰动的学习器上效果明显。
一般采用决策树做variance弱分类器,线性分类器不适合,这是因为: 树分类器训练简单,线性分类器训练时间长。 线性分类器比如说LR和LinearSVM分类准确率都比较高,与弱分类器的定义相违背。 每个弱分类器的作用是学习某一个方面的特征,然后把多个弱的组合成强的,这是决策树的优势。
3. 随机森林
随机采样(Bagging)+随机选择特征(随机的k个子集中取最优)。k决定了随机性的程度。k最大,每棵树与普通决策树无异。k=1,则为单特征决策树。推荐k=log2d。
Bagging减小方差。
4. GBDT: 见决策树一章。
5. 机器学习中的 方差(variance)、偏差(bias)、误差(error)
Error = Bias + Variance+ Noise
Error反映的是整个模型的准确度,Bias反映的是一个模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
网友评论