美文网首页
集成学习

集成学习

作者: Zaker_cook | 来源:发表于2019-12-16 14:48 被阅读0次

问题

1. 什么是集成学习,以及为什么要使用集成学习

2. 集成学习常见思想都有哪些,以及它们都有什么作用

3. 哪些算法是基于集成学习的思想


1. 集成学习的概念以及为什么要使用集成学习

    概念

            集成学习 是将若干个同一类的弱学习器组合成一个强学习器

    为什么要使用集成学习

            a. 弱学习器可能存在错误,合并多个弱学习器后,可以减少整体的错误率

            b. 对过大或过小的数据集,可进行有放回的抽样,产生不同的数据子集,并训练不同弱学习器,最后再合并成一个强学习器

            c. 数据划分过于复杂,使用线性模型难以描述,可训练多个模型后再进行模型融合

            d. 多个异构特征(如:线上线下的数据),难以融合,可对每个数据集构建一个模型,最后再将多个模型融合


2. 集成学习常见思想

    a. Bagging 思想

Bagging图示

        在原数据集中,通过有放回的随机抽样,选择出S个子数据集,并对这些子数据集中的数据进行去重操作,再分别训练S个同一类的弱学习器。如果是分类问题,最终结果是各学习器结果中最多的类别,如果是回归问题,最终结果是各学习器结果的均值。

        Bagging思想中的弱学习器可以是:Linear、Ridge、Lasso、Logistic、Softmax、决策树、SVM、KNN等

        Bagging思想的主要目的是 缓解过拟合

        oob 袋外数据: 由于是有放回的随机抽样,就会使得部分数据未能参与到模型训练中,所以可使用这部份数据对模型进行评估,这部分数据大约占比在36%

    b. Boosting 思想

Boosting图示

        Boosting 是一种迭代的集成学习,构建过程是一种串行结构,每一个弱学习器是基于上一个弱学习器预测效果的基础上,对数据做一定的变化后进行构建的,最后将各个弱学习器预测效果融合之后作为最后的效果。

        Boosting 思想的主要目的是  缓解欠拟合


3.  基于集成学习思想的算法

基于Bagging思想

        随机森林算法流程

随机森林

                 a.  从原始数据集中,用有放回采样,随机选出N个去重后的子数据集

                b.  从子数据集中,随机选择K个属性来训练决策树

                c.  重复 a 和 b 步骤,建立M棵决策树

                d.  从M棵决策树的预测结果中,通过多数投票决定数据属于哪一类

        随机森林算法优缺点

                优点

                        1. 训练速度快,这是因为各个子模型是独立的,训练时可以并行

                        2. 训练性能高,这是因为在高维度的情况下,随机选择特征属性

                        3. 泛化能力强,由于在抽取样本时,是有放回的采样,训练出来的模型方差小

                        4. 对于部分缺失数据不敏感

                        5. 训练完后,可以给出特征重要性权重

                缺点

                        1. 在某些噪声数据比较大的数据中,容易陷入过拟合

                        2. 在取值较多的划分特征属性中,可能会影响模型效果


基于Boosting思想

            AdaBoost工作机制

                    首先基于等权重的训练样本数据训练一个弱学习器,其次根据该学习器的预测效果,增大预测错误样本数据的权重,减小预测正确样本数据的权重,以此构成新的训练样本数据,并训练下一个弱学习器,以此反复迭代,直到满足跳出迭代的条件,最后将所有弱学习器加权合并为强学习器。(各弱学习器权重跟学习器预测效果有关,效果好,权重大,反之权重小)

AdaBoost算法

                AdaBoost算法流程

                        1. 采用均值初始化训练样本权重D1=( w_{11},w_{12},...,w_{1m}), w_{1i}=\frac{1}{m}

                        2. 使用带权重的样本训练模型,得到子模型G_m(x) \rightarrow \{+1, -1\}

                        3. 计算训练样本误差率\varepsilon _m=\sum_{i=1}^m w_{1i}I(G_m(x_i)\neq y_i), I=\{1,G_m(x_i)\neq y_i; 0, G_m(x_i)=y_i

                        4. 计算G_m(x)的权重a_m = \frac{1}{2} \ln \frac{1-\varepsilon _m}{\varepsilon _m}

                        5. 更新训练样本权重w_{m+1,i} = \frac{w_{m,i}\varepsilon ^{-a_{m}G_{m}(x_i)y_i}}{\sum_{i=1}^n w_{m,i}\varepsilon ^{-a_{m}G_{m}(x_i)y_i}  } , 分母用来归一化

                        6. 构建子模型 f(x) = \sum_{i=1}^m a_{m}G_{m}(x_i)

                        7. 最终模型 G(x) = sign(f(x))

            AdaBoost 算法优缺点

                        优点

                                构建灵活,预测精度较高,不易过拟合

                        缺点

                                对噪声样本数据比较敏感,因为噪声样本数据可能获得较高的权重

                                由于不是并行模型,在处理大量数据时没有优势


GBDT算法工作机制

         将每一轮产生的残差作为下一轮回归树的输入,让下一轮尽可能的去拟合这个输入的残差,使得下一轮输出的残差不断变小,并将每一轮的残差和作为最后的预测值

        注意一点的是,GBDT构建的树都是CART树

GBDT示例

GBDT 损失函数

            L = \frac{1}{2}(r-f_{m}(x))^2, 其中r=y - F_{m-1}(x)

GBDT算法流程

            a. 初始化预测值 f_{0}(x) =0

            b. 计算残差 r_{ti} = y_{i} - f_{t-1}(x_{i})

            c. 拟合残差 r_{ti} 得到子模型 h_t(x)

            d. 更新 f_{t}(x) = f_{t-1}(x) + h_{t}(x)

            e. 循环T次后,得到模型预测值 f_{T}(x) = f_{0}(x) + \sum_{t=1}^T h_{t}(x)

GBDT 优缺点

        优点

                a. 可灵活处理离散值和连续值的特征

                b. 在较少调参的情况下,能够有较好的预测结果

                c. 使用一些健壮的损失函数,如Huber损失函数,对异常值有较好的鲁棒性

        缺点

                a. 难以并行处理数据,这是因为弱学习器之间有依赖

                b. 数据维度增大时,会加大算法的运算复杂度            


XGBoost算法    (为了优化GBDT中数据维度增大时,导致GBDT算法运算更为复杂),个人理解XGBoost是加了正则项后的GBDT,降低过拟合的可能性

XGBoost算法的损失函数

            L = \sum_{i=1}^n(y_{i}-F_{t-1}(x_{i})-f_{t}(x_{i}))  + \sum_{i=1}^t\Omega (g_{i})

            其中 \Omega (f) = \gamma T + \frac{1}{2} \lambda \sum_{i=1}^T w_{j}^2, 叶子节点个数T,叶子节点的值w

XGBoost算法的优点

          1.损失函数是用泰勒展开式二项逼近,而不是像GBDT里就是一阶导数

          2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性

          3.借鉴随机森林的做法,支持列抽样,不仅可以降低过拟合,还可以减少计算量

          4.支持对缺失值的自动处理。对于特征的值有缺失的样本,可以自动学习分裂方向

          5.支持并行,但是在树的构建过程中,还是串行构建的

          6.弱学习器支持CART、线性回归、逻辑回归

          7.支持自定义损失函数(要求损失函数二阶可导)


参考资料

            [CSDN] will的笔记

            [博客园] boosting家族之xgboost算法

相关文章

  • 11 集成学习 - XGBoost案例 - 波士顿房价进行预测

    08 集成学习 - XGBoost概述09 集成学习 - XGBoost公式推导10 集成学习 - XGBoost...

  • 2019-03-02

    ML——集成学习 个体与集成 集成学习:构建并结合多个学习器来完成学习任务。 同质:集成中只包含同种类型的个体学习...

  • 3.1.1.8 集成学习

    集成学习 原理 《机器学习》周志华 8.1 个体与集成 集成学习(ensemble learning) 通过构建并...

  • 10.machine_learning_model_ensemb

    机器学习集成学习与boosting模型 机器学习中的集成学习 顾名思义,集成学习(ensemble learnin...

  • 西瓜书学习笔记-集成学习

    集成学习 个体与集成 集成学习通过构造多个学习器来完成学习任务。集成学习的构造是先产生一组个体学习器,然后用某种策...

  • Task5 模型集成

    这次主要学习的知识点是:集成学习方法、深度学习中的集成学习和结果后处理思路。 1、集成学习方法 在机器学习中的集成...

  • AdaBoost模型

    集成学习是目前很流行的一种机器学习方法,kaggle比赛取得好成绩的队伍几乎都是用的集成学习。 一、集成学习 集成...

  • CV-模型集成

    集成学习方法 集成学习能够提高预测精度,常见的集成学习方法有stacking、bagging和boosting,同...

  • 集成学习

    集成学习与个体学习器 集成学习是机器学习中常用的一种方法,常用的集成学习方法有boosting,bagging以及...

  • 使用sklearn进行集成学习 理论与实践 Random For

    《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》

网友评论

      本文标题:集成学习

      本文链接:https://www.haomeiwen.com/subject/getfnctx.html