![9eafc0913e6d0e8031ca2934dac58605.png](https://i-blog.csdnimg.cn/blog_migrate/e5765b0a813aadb8afaf60e5e0ad0581.jpeg)
集成算法是构建多个学习器,通过一定策略结合来完成学习任务。正所谓三个臭皮匠顶一个诸葛亮,当弱学习器被正确组合时,我们能得到更精确、鲁棒性更好的学习器。由于个体学习器在准确性和多样性存在冲突,追求多样性势必要牺牲准确性。这就需要将这些“好而不同”的个体学习器结合起来。而研究如何产生并结合个体学习器也是集成学习研究的核心。
集成学习的思想时将这些弱学习器的偏置或方差结合起来,从而创建一个强学习机,获得更好的性能
按照个体学习器之间的关系,集成算法分为Bagging、Boosting、Stacking三大类。
Bagging
基于自主采样法(bootstrap sampling)随即得到一些样本集训练,用来分别训练不同的基学习器,然后对不同的基学习器得到的结果投票得出最终的分类结果。自主采样法得到的样本大概会有63%的数据样本被使用(有些数据样本会被重复抽取,有些不会被抽取),剩下的可以用来做验证集。
![15d0bf36c1fd8d3fcfaf25094b16ed2e.png](https://i-blog.csdnimg.cn/blog_migrate/19c8318ef9bc4334877d9092d0d82ad2.jpeg)
Bagging中各个算法之间没有依赖,可以并行计算,他的结果参考了各种情况,实现的是在欠拟合和过拟合之间取折中。
Boosting
Boosting,提升算法,通过反复学习得到一系列弱分类器,然后组合这些弱分类器得到一个强分类器,吧弱学习器提升为强学习器的过程。主要分为两个部分,加法模型和向前分布。
加法模型就是把一系列弱学习器相加串联为强学习器,
其中,
向前分布是指本轮中的学习器是在上一轮学习器的基础上迭代训练得到的,
![d586977b9ead40b97de270f63feb4ab7.png](https://i-blog.csdnimg.cn/blog_migrate/fe3c19ca52534f882ca9fc3c24d409f2.jpeg)
训练过程为阶梯状,基模型按照次序一一进行训练,基模型的训练集按照某种策略每次都进行一定的转化,如果某一个数据在这次分错了,那么在下一次就会给他更大的权重。对所有基模型预测的结果进行线性综合产生最终的预测结果。
一般来说,他的效果会比Bagging好一些,由于新模型是在就模型的基本上建立的,因此不能使用并行方式训练,并且由于对错误样本的关注,也可能造成过拟合。
stacking
stacking训练一个模型用于组合其他各个基模型。具体方法是吧数据分成两部分,用其中一部分训练几个基模型1、2、3,用另一部分数据测试这几个基模型,把1、2、3的输出作为输入,训练组合模型。注意,他不是把模型的结果组织起来,而把模型组织起来。理论上,stacking可以组织任何模型,实际中常用单层logistic回归作为模型。
![253a0fa9f43d29649c72bb5c4bf5b253.png](https://i-blog.csdnimg.cn/blog_migrate/495e10d892dfc3d31b4504834acf9a2d.jpeg)
举个栗子:
![443d075f40c8d4f5e2d5c7bc8d7c9498.png](https://i-blog.csdnimg.cn/blog_migrate/44081351d9de415cbecf91da20ff65b4.jpeg)
- 首先我们会得到两组数据:训练集和测试集。将训练集分成5份:train1,train2,train3,train4,train5。
- 选定基模型。这里假定我们选择了xgboost, lightgbm 和 randomforest这三种作为基模型。比如xgboost模型部分:依次用train1,train2,train3,train4,train5作为验证集,其余4份作为训练集,进行5折交叉验证进行模型训练;再在测试集上进行预测。这样会得到在训练集上由xgboost模型训练出来的5份predictions,和在测试集上的1份预测值B1。将这五份纵向重叠合并起来得到A1。lightgbm和randomforest模型部分同理。
- 三个基模型训练完毕后,将三个模型在训练集上的预测值作为分别作为3个"特征"A1,A2,A3,使用LR模型进行训练,建立LR模型。
- 使用训练好的LR模型,在三个基模型之前在测试集上的预测值所构建的三个"特征"的值(B1,B2,B3)上,进行预测,得出最终的预测类别或概率。
stacking一般是两层就够了。
常用的集成算法
随机森林 Random Forest
概念:通过集成学习的思想将多棵树集成的一种算法。基本单元是决策树。随机森林中每颗决策树都是一个分类器,对于一个输入样本,N棵树会有N个分类结果。随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终输出。
随机森林生成规则:
- 如果训练集大小为N,对于每棵树而言,随机且有放回的从训练集中的抽取N个训练样本,作为该树的训练集。(随机抽样保证每棵树的训练集不同,有放回抽样保证每棵树的训练样本有交集,避免树的结果有很大差异)
- 特征随机。如果每个样本的特征维度是M。指定一个常数m<<M,随机从M个特征中选取m个特征子集,每次树进行分裂时,从m个特征中选择最优的
- 每棵树尽最大程度生长,并没有剪枝过程
- 将生成的多棵树组成随机森林,用随机森林对新的数据进行分类,分类结果按树分类多少而定
特点:
- 在当前所有算法中,具有极好的准确率
- 能够处理具有高维特征的输入样本,而且不需要降维
- 能够评估各个特征在分类问题上的重要性
- 在生成过程中,能够获取到内部生成误差的一种无偏估计
- 对于缺省值也能够获得很好的结果
- 随机森林中的两个“随机性”是随机森林不容易陷入过拟合,并且具有很好的抗噪能力
- 能够处理离散型/连续型数据,无需规范化
- 随机森林不使用全样本,因为全样本忽视了局部样本的规律,不利于模型泛化能力
缺点:
- 随机森林在解决回