一、主要内容html
介绍集成学习,而后讲述boosting和bagging的区别与联系,同时对adaBoost进行推导而后进行gbdt的推导,最后比较随机森林和gdbt的区别和联系。算法
二、集成学习bootstrap
集成学习(ensamble learning)经过构建多个学习器来完成任务。集成学习的通常结构:先产生一组“个体学习器”,而后再用某种策略将这些个体学习器进行联系起来,个体学习器由现有的一个算法产生,好比说c4.5决策树,bp神经网络等。根据集成学习中个体学习器是否相同能够分为同质集成和已质集成,同质集成中个体学习器被称为“基学习器”,已质集成中的个体学习器称为“组件学习器”。网络
集成学习经过使用多个学习器进行组合得到强大的功能,一般个体学习器为弱分类器:分类结果不是太好可是要比随机猜想的预测结果好(精度高于50%)。目前集成学习的生成方式有两类:框架
1)、boosting:个体学习器之间存在强烈的依赖关系,只能进行串行生成不一样的个体学习器,以adaboost和gdbt为表明函数
2)、bagging:个体学习器独立生成,互相之间没有关系,以随机森林为表明性能
三、boosting 和 bagging学习
boosting的工做机制:从初始训练数据集出发训练出一个基学习器,而后再根据基学习器的表现对训练的样本进行调整,使得先前基学习器中学习结果错误的样本权重提高得到更大的关注,而后使用调整后的训练样本进行训练下一个基学习器,如此重复直到产生足够数量的基学习器。spa
bagging的工做机制:都训练样本进行又放回的抽样(bootstrap sampling)产生和训练数据规模相同的新的训练数据,重复动做产生N个训练样本,而后使用这N个样本数据进行分别训练基学习器,基学习器之间没有关系,相互独立。3d
四、adaboost算法
输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}; 其中xy = {-1, +1};弱分类器算法
输出:最终分类器G(x),此处获得的是一个分类器
(1)、初始化训练数据的分布权重
D1 = {w11,w12,....,w1i,.....,w1N}, i = 1,2,3, ..... , N
w1i = 1/N
(2)、对于要生成M个基学习器,则对于m = 1,2,.....,M:
(a)、使用具备权重分布Dm的训练数据进行生成基学习器:
(b)、计算Gm(x)在训练数据集上的分类偏差率:
关于这个偏差率计算的问题,针对不一样的问题有不一样的计算方法,此处为分类器的计算方法,上式还能够写为:
这个表达式就代表了计算分类错误率时就是被Gm(x)误分类样本的权重之和,从这个关系上能够看出分类偏差率和样本权重之间的关系。在此处,实际工程中须要判断如下偏差率是否小于0.5,若是小于则表示这个基学习器还不如随机预测的结果,若是加入到最终分类器中会严重影响分类器的性能须要抛弃该学习器。
(c)、计算基学习器Gm(x)的系数
基学习器Gm(x)的系数就是这个学习器正确分类的几率除以分错几率的对数值的一半。当em越小时αm也就越大,也就是说分类偏差率越小的分类器在最终的分类器中的做用就愈来愈大,也是保证了最终分类器性能强劲的缘由。同时若是 em 》0.5的话,结果小于0.这是不容许的,这就是上面要抛弃掉分类偏差大于0.5的学习器的缘由。
(d)、更新训练数据集的权重分布
其中Zm为:
从更新权重值的公式能够看出,正确分类的样本数据的权重减少了(e-am < 1),一样错误分类的样本的权重变大了,所以错误样本在下一轮的训练中会被重视,若是这个样本仍是算错那么偏差率必然会很大,由于必然会致使基学习器变换分类策略使得偏差率变小,经过更新权重避免了改变训练数据,使不一样的训练数据在基学习器的学习过程当中起到不一样的做用,这是adaBoost的一个特色。
(3)、构建基本分类器的线性组合
获得最终的分类器:
须要注意的是这里的αm的和并不等于1,表示每一个分类器的重要程度,f(x)的符号代表了x的类别,|f(x)|表示分类的确信度,越大分类结果越可靠。
对于adaBoost的回归状况分析,如下内容来自http://www.cnblogs.com/pinard/p/6133937.html
回归问题与分类问题算法的不一样点在于偏差率计算的方式不一样,分类问题通常都采用0/1损失函数,而回归问题通常都是平方损失函数或者是线性损失函数,所以此处会有较大的不一样。
对于第k个弱学习器,计算他在训练集上的最大偏差:
而后计算每一个样本的相对偏差结果:
此处使用的是线性偏差的状况,若是是平方偏差,则
若是采用指数偏差函数那么:
最终获得第k个弱学习器的偏差率:
有了偏差率后看学习器的权重系数的计算:
计算完学习器的权重系数后更芯样本权重Dm+1:
最后进行线性组合:
同时其余的adaBoost的算法能够参考:http://www.cnblogs.com/jcchen1987/p/4581651.html
这里对Adaboost算法的优缺点作一个总结。
Adaboost的主要优势有:
1)Adaboost做为分类器时,分类精度很高
2)在Adaboost的框架下,可使用各类回归分类模型来构建弱学习器,很是灵活。
3)做为简单的二元分类器时,构造简单,结果可理解。
4)不容易发生过拟合
Adaboost的主要缺点有:
1)对异常样本敏感,异常样本在迭代中可能会得到较高的权重,影响最终的强学习器的预测准确性
五、随机森林
bagging的典型表明。未完