机器学习入门之集成学习

一、集成学习

集成学习分为3个步骤:

(1)找到误差互相独立的基分类器。

(2)训练基分类器

(3)合并基分类器的结果。(voting和stacking)

机器学习入门之集成学习

首先要说一下,对集成学习的理解,俗话说的好三个臭皮匠抵个诸葛亮,单个预测器的预测效果可能不是很好,但是结合多个预测器,预测的性能就会有所提高。集成学习是大类模型融合策略和方法的统称,包含多种集成学习思想。

二、voting(投票法)

现实生活中的投票原则就是少数服从多数,在集成学习中主要用于解决分类问题的一种策略,投票法则分为硬投票分类和软投票分类。

2.1硬投票分类思想

例如有5个基分类器,三个的分类为1,两个的分类为2,那最终输出的结果就是类别1,而硬投票分类器的结果就是显示标签值。

2.2软投票分类思想

而软投票分类器,最终的分类结果输出的是投票中概率最大的概率值。

三、Bagging

Bagging方法在训练过程当中,各个基分类无强依赖关系,可以进行并行训练,在基分类器选择上只能选择单一基分类器集成多个。它的最经典的代表算法就是随机森林。Bagging方法类似于一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同,可以不同,也可以部分重叠。但由于个体之间存在差异,最终做出的判断不会完全相同。在最终决策时,每个个体单独做出判断,在通过投票的方式做出最后的集体决策。Bagging采用分而治之的方法,通过对训练样本多次采样,并分别训练出多个不同的模型,然后综合,来减少集成分类器的方差。

3.1随机森林算法(RandomForest)

随机森林以决策树为基学习器,包含主要的四个部分:

(1)随机选择样本(放回抽样)

(2)随机选择特征

(3)构建决策树

(4)随机森林投票(平均)

算法的优点:

(1)在在zaosheng数据集上表现较好,相对其他算法有一定的优势(训练速度、预测准确度)

(2)能够处理高维数据,并且不用特征选择,而且在训练完成后,给出特征重要性

(3)容易做成并行化方法

缺点:噪声较大的分类或回归问题上过拟合。

四、Boosting

Boosting方法训练基分类器采用串行的方式,每个基分类器之间存在依赖关系。主要思想:迭代式学习,基本思想是将基分类器层层叠加,每一层在训练的时候,对前一层基器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到结果。

Boosting方法通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。

4.1 Adaboost

在Adaboost算法中任何分类模型都可以作为基分类器,基分类器容易选择树模型,原因是结构简单容易产生随机性所以比较常用。Adaboos其实就是采用Boosting的思想,对分类正确的样本降低了权值,对分类错误的样本升高或保持权重不变,在最后进行模型融合的过程中,根据错误率对基分类器进行加权融合。错误率越低的分类器拥有更大的“话语权”。

4.2 GBDT

Gradient Boosting是Boosting中的算法,基本思想是根据模型当前损失函数的负梯度信息来训练新加入的基分类学习器,然后将训练好的基分类器以累加的形式结合到现有的模型中。

算法的基本流程:在每一轮的迭代中,首先算当前模型所有样本上的负梯度,然后以该值为目标训练一个新的基分类器进行拟合并计算出该基分类器的权重,最终实现对模型的更新。

算法的优点:

(1)预测阶段的计算速度快,树与树之间可并行化计算。

(2)在分布稠密的数据集上,泛化能力和表达能力都很好。

(3)具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且不需要对数据进行特殊的预处理如归一化。

缺点:

(1)在高维稀疏的数据集上,表现不如支持向量机或神将网络

(2)在处理文本类特征问题上,相对其他模型的优势不如在处理数值特征时明显。

(3)训练过程需要串联,只能在决策树内部采用一些局部并行手段的手段提高训练速度。

4.3  XGBoost

XGBoost是在GBDT基础上,对算法进一步提升,在决策树构建完成后再进行剪枝。在决策树构建阶段加入了正则项。

4.4 XGBoost与GBDT不同之处

(1)GBDT是机器学习算法,XGBoost是该算法的工程实现。

(2)在使用CART树作为基分类器时,XGBoost显示的加入了正则化来控制模型的复杂度,有利于防止过拟合,从而提高模型泛华能力。

(3)GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。

(4)传统的GBDT采用CART作为基分类器,则XGBoost支持多种类型的基分类器,比如线性分类器。

(5)传统的GBDT在每轮迭代使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样。

(6)传统的GBDT没有设计对缺失值进行处理,XGBoost则自动学习出缺失值处理策略。