Ensemble learning - 集成算法

▒ 目的

让机器学习的效果更好, 量变引起质变

继承算法是竞赛与论文的神器, 注重结果的时候较为适用

集成算法 - 分类

▒ Bagging - bootstrap aggregation

◈ 公式

◈ 原理

训练多个分类器取平均, 并行 的训练一堆的分类器

◈ 典例

随机森林

◈ 随机

输入  -  数据源采样随机   -   在原有数据上的进行 60% - 80% 比例的有放回的数据取样

    数据量相同, 但是每个树的样本数据各不相同

特征  -  特征选择随机 

    特征的选择加剧随机性

◈ 森林

多个决策树并行放在一起

每个树的特征数一样, 数据量一样

由于二重的随机性(数据集, 特征) ,  每个树基本上都不会一样, 最终的结果也不一样

随机保证了泛化能力, 如果每个树都是一样, 那就无意义了

◈ 优势

能够处理 高纬度  ( feature 很多 ) 的数据, 而且不用做特征选择 (见ps)

在训练后, 可以对  feature 重要程度 进行比对

容易做成 并行化 方法, 速度较快

可进行 可视化展示 , 便于分析

ps

特征选择

  特征选择的目的是为了查找出权重较大对最终结果影响较大的特征

  比如可以使用将某一特征的数据进行完全破坏再用无用数据填充

  然后与之前的正常特征数据得到的结果比对从而两个的差值大小判断此特征的有用性

  也可以建模忽略预测定的某特征进行与带有此特征的进行比对也是相同的道理

  注意 :  破坏后的特征别用 0 之类的一样的数据进行填充, 完全一样的特征就没意义了

◈ 树模型临界值

随机森林中的树模型理论上是越多越好, 但是其实也会达到临界值

达到一定数量后就会在临界点附近上下浮动

  

▒ Boosting

◈ 公式 

  

◈ 原理 

串行算法, 后面的树基于前面树的残差计算

从弱学习器开始加强, 通过加权来进行训练 ( 加入一颗比原来强的树 )

例子说明:

  比如第一颗树预测的结果相差了50, 那么第二颗的任务就是预测这50

  然后第二颗预测结果是 30 , 与目标又只差了20, 于是第三颗树的任务就是预测剩余的 20

  以此往下类推, 直到尽可能的填满这50的差值让预测结果和真实结果统一

◈ 典例

AdaBoost

Xgboost    - 详细的内容 点击这里

◈ AdaBoost  原理

根据前一次的分类效果调整数据权重

如果某一个数据分错了, 那么在下一次的分配中会给与更高的权重使其更加精准

最终的结果根据每个分类器自身的准确性确定各自的权重再合并

如图所示, 第一个分类器分错了 第一个数据, 因此第二分类器给了第一个数据更高的权重

但是二号又分错了第五个数据, 因此第三个分类器对第五数据更高的权重

▒ Stacking

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

◈ 原理

堆叠 直接一堆分类器叠加起来用, 比如有多个算法直接算完了求平均

可以堆叠各种各样的分类器 (KNN, SVM, RF 等等)

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

如图, 使用 4 种分类器的结果作为二阶段 LR 分类器的输入再次处理后得到最终结果

◈ 优势

准确率确实可以提升, 但是速度是个问题

机器学习 - 算法 - 集成算法 - 分类 ( Bagging , Boosting , Stacking) 原理概述的更多相关文章

  1. 机器学习之——集成算法,随机森林,Bootsing,Adaboost,Staking,GBDT,XGboost

    集成学习 集成算法 随机森林(前身是bagging或者随机抽样)(并行算法) 提升算法(Boosting算法) GBDT(迭代决策树) (串行算法) Adaboost (串行算法) Stacking ...

  2. 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)

    一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...

  3. 【机器学习】Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting

    Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting 这些术语,我经常搞混淆, ...

  4. 机器学习入门-集成算法(bagging, boosting, stacking)

    目的:为了让训练效果更好 bagging:是一种并行的算法,训练多个分类器,取最终结果的平均值 f(x) = 1/M∑fm(x) boosting: 是一种串行的算法,根据前一次的结果,进行加权来提高 ...

  5. 机器学习:集成学习(Bagging、Pasting)

    一.集成学习算法的问题 可参考:模型集成(Enxemble) 博主:独孤呆博 思路:集成多个算法,让不同的算法对同一组数据进行分析,得到结果,最终投票决定各个算法公认的最好的结果: 弊端:虽然有很多机 ...

  6. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  7. 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)

    零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...

  8. 机器学习之KNN算法(分类)

    KNN算法是解决分类问题的最简单的算法.同时也是最常用的算法.KNN算法也可以称作k近邻算法,是指K个最近的数据集,属于监督学习算法. 开发流程: 1.加载数据,加载成特征矩阵X与目标向量Y. 2.给 ...

  9. 集成算法——Ensemble learning

    目的:让机器学习效果更好,单个不行,群殴啊! Bagging:训练多个分类器取平均 Boosting:从弱学习器开始加强,通过加权来进行训练 (加入一棵树,比原来要强) Stacking:聚合多个分类 ...

随机推荐

  1. linux 使用 rz 上传和 sz下载 命令

    linux系统 root权限 lrzsz安装包 ①.在线安装-执行命令 yum install lrzsz  离线安装-需要提前准备好安装包 编译安装 root 账号登陆后,依次执行以下命令: tar ...

  2. briup_JDBC_自建工具类

    1.操作的环境 STS,mysql,oracle orcle 所操作的数据库名为 ORCL 表为 m_stu 表结构如下 mysql  的表为:my_stu 表结构如下 工具类完整代码 package ...

  3. DataSnap初步二

    转:https://blog.csdn.net/a00553344/article/details/51670486 1. 一个典型的DataSnap服务器至少需要三个控件: TDSServer: D ...

  4. selenium八种定位元素方法

    1.driver.find_element_by_id('su') 定位到元素的id一般id是唯一的,可以精确定位到元素 2.driver.find_element_by_name() 通过元素的na ...

  5. okhttp缓存策略源码分析:put&get方法

    对于OkHttp的缓存策略其实就是在下一次请求的时候能节省更加的时间,从而可以更快的展示出数据,那在Okhttp如何使用缓存呢?其实很简单,如下: 配置一个Cache既可,其中接收两个参数:一个是缓存 ...

  6. VMware厚置备延迟置零,厚置备置零,精简置备详解

    1.厚置备延迟置零(zeroed thick) 以默认的厚格式创建虚拟磁盘.创建过程中为虚拟磁盘分配所需空间.创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零. ...

  7. C# 异步编程 (12)

    异步编程重要性 C# 5.0 提供了更强大的异步编程.添加两个新的关键字 async 和 await . 使用异步编程,方法调用是在后台运行(通常在线程或任务的帮助下),并且不会阻塞调用线程. 3种不 ...

  8. unity 用代码控制动画的播放的进度

    https://answers.unity.com/questions/1225328/imported-animated-object-and-slider-tutorial.html using ...

  9. ZOJ4019——贪心&&DP

    题目 链接 大意:有一个容量为$c$的背包,有$n$个$s_1$类物体,价值都为$k_1$,体积分别为$s_{1,1}, s_{1,2}, \cdots, s_{1,n}$,有$m$个$s_2$类物体 ...

  10. 深入了解java线程池(转载)

    出处:http://www.cnblogs.com/dolphin0520/ 本文归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责 ...