zoukankan      html  css  js  c++  java
  • 机器学习之集成算法

    一、集成算法

    目的:让机器学习效果更好,单个机器学习算法不行,就用多个机器算法集成。

    Bagging模型:训练多个分类器取结果的平均

      

    Boosting模型:从弱学习器开始加强,通过加权来进行训练(加入一棵树,要比原来强)

     

    Stacking模型:聚合多个分类或回归模型(可以分阶段来做)

    二、Bagging模型:

    全称: bootstrap aggregation(说白了就是并行训练一堆分类器),最典型的代表就是随机森林(决策树的升级版,多个决策树组合起来)

    随机:数据采样随机,特征选择随机(可以命名为二重随机性)

    森林:很多个决策树并行放在一起

      

    在随机森林模型中,如果是分类任务,那就对结果取众数(如上图所示),如果是预测任务,就对结果取平均值。

    构造树模型:

      

    由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。之所以要进行随机,是要保证泛化能力,如果树都一样,那么最终结果就都是一样的,那就没意义了!

    随机森林相比于决策树优势:

    (1)它能够处理很高维度(feature很多)的数据,并且不用做特征选择。
    (2)在训练完后,它能够给出哪些feature比较重要,比如在下图中特征重要性最低的三个特征就可以去掉。
    (3)容易做成并行化方法,速度比较快。
    (4)可以进行可视化展示,便于分析。

      

    理论上越多的树训练的效果就会越好,但实际上基本超过一定数量最终的效果就差不多上下浮动了。

      

    三、Boosting模型

    典型代表:AdaBoost, Xgboost。

    Adaboost会根据前一次的分类效果调整数据权重,如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重。最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体。

    Adaboost工作流程:每一次切一刀!最终合在一起,弱分类器这就升级了!

      

    四、Stacking模型

    堆叠方式:很暴力的那种,拿来一堆直接上(各种分类器都来了),可以堆叠各种各样的分类器(KNN,SVM,RF,DT等等)

    Stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为训练集进行再训练,从而得到完整的stacking模型。

    分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练 。

      

    堆叠在一起确实能使得准确率提升,但是显然速度是个问题。集成算法是竞赛与论文神器,当我们更关注于结果时不妨来试试!

  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/xiaoyh/p/11281352.html
Copyright © 2011-2022 走看看