集成学习:通过构建并结合多个学习器来完成学习任务;
集成学习中主要包括boosting算法和bagging算法;
★boosting算法:(线性集成)关注于降低偏差;
- 从初始训练集训练一个基学习器
- 根据①训练效果,对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
- 调整样本分布后,训练下一次的基学习器;
- 进行迭代后,直至基学习器数量达到指定值T,后采用某种策略将其组合,作为最终模型。(每一步迭代都是一个弱分类器)
代表算法:AdaBoost算法:AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大。
★bagging算法:(并行式集成)关注于降低方差
①从原始样本集中使用Bootstraping方法(有放回)随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
②对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
③将模型集合,对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)
★bagging算法和boosting算法间区别:
- 样本选择:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
- 样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
- 预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
- 并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。
将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
◆随机森林(Random Forest):Bagging算法的一种扩展变体;
- 随机森林包括:“随机”和“森林”两部分;
其中“随机”包括两部分,即训练数据随机和训练特征随机;
- 在Bagging算法中,采用有放回的随机抽样,决定了训练数据随机;
- 而在随机森林算法中引入了随机特征选择,即在特征集合随机选择特征子集,在子集中选择最优特征用于结点划分,决定了训练特征随机;
其中“森林”即是基于决策树算法的集成。
注:在随机森林算法中,其不仅通过对多棵树进行集成以提高分类效果,同时通过迭代使得森林中的树变得不断优秀(森林中的树使用更好的特征进行分枝);
随机森林算法过程:
- 从原始训练集随机有放回采样选出k个样本,生成k个训练集;
- 对于k个训练集,分别训练k个决策树模型
- 针对每个决策树随机选择特征个数,进行训练(决策树结点分裂过程中不需要剪枝);
- 将生成的多棵决策树组成随机森林。
特征重要程度计算:
Sklearn 框架实现: