关于boost算法


  boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning)。其根本思想在于通过多个简单的弱分类器,构建出准确率很高的强分类器,PAC学习理论证实了这一方法的可行性。下面关于几种Boost算法的比较,是基于文章《Additive Logistic Regression a Statistical View of Boosting》整理的。

几种boost算法步骤


  通常使用最多的应该是离散的Adaboost算法(Discrete AdaBoost),主要因为它的简单却不俗的表现,Discrete Adaboost算法的步骤如下:

  可以看出,Discrete AdaBoost的每一个弱分类的输出结果是1或-1,并没有属于某个类的概率,略显粗糙。
如果让每个弱分类器输出样本属于某个类的概率,则可以得到Real AdaBoost算法,其步骤如下:

  Real Adaboost每个弱分类器输出样本属于某类的概率后,通过一个对数函数将0-1的概率值映射到实数域,最后的分类器是所有映射函数的和。

将Real Adaboost算法每次迭代的两部合并,直接产生一个映射到实数域的函数,则就成了Gentle AdaBoost, 其算法步骤如下:

  Gentle AdaBoost则在每次迭代时,基于最小二乘去做一个加权回归,最后所有回归函数的和作为最终的分类器。

  LogitBoost算法则和Gentle AdaBoost算法有点相像,不过其每次进行回归拟合的变量z是在不断更新的,Gentle AdaBoost使用的是y。LogitBoost算法步骤如下:

4种boost算法的原理差异


  上面4中boost算法,其大体结构都是比较相似的,那么是如何推导出每种算法的具体形式的呢?
  首先是关于损失函数(或代价函数),通常见到比较多的是均方误差和似然函数,而上面的算法中,Discrete AdaBoost、Real AdaBoost和Gentle AdaBoost算法都是采用对数损失函数,具体形式如下:
\begin{aligned} J(F) = Ee^({-yF(x)}) \end{aligned}
  其表达的意义实质上与分类错误个数是相同的。
  而Logit Boost算法则采用最大化对数似然函数来推导的。
  第二点是具体优化方法,Discrete AdaBoost与Real AdaBoost主要通过类似梯度下降的方法来优化,而Gentle AdaBoost与Logit Boost都是采用类似牛顿迭代的方式优化的。

算法的效果差异


  在前面提到的参考文章中,对几种算法的效果进行了大量比较,大致如下;

  1. 整体效果而言,效果由好到差的顺序为Logit Boost,Gentle AdaBoost, Real AdaBoost, Discrete AdaBoost
  2. 若弱分类器采用树桩模型(也就是只要2个叶子节点的决策树),Discrete AdaBoost的结果比其他3种算法结果差了很多,大概是由于系统偏差过大导致的泛化误差较大
  3. 若弱分类器采用多层的决策树(4或8个叶子节点),Discrete AdaBoost的结果能有较大提升,而其他3种算法则差异不大。

  平时我们所用的AdaBoost算法大多是Discrete AdaBoost,从这里可以看出Discrete AdaBoost算法模型相对比较简单,需要弱分类器的精确度稍高,因此在具体应用时最好将每个弱分类器的叶子节点控制在4个或8个。
  关于Boost算法还有很多比较有趣的结论,这里不多讲,可以参考上面的那篇Paper。

几种Boost算法的比较(Discrete AdaBoost, Real AdaBoost, LogitBoost, Gentle Adaboost)的更多相关文章

  1. 10 种机器学习算法的要点(附 Python 和 R 代码)

    本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿.未经许可,禁止转载!英文出处:SUNIL RAY.欢迎加入翻译组. 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关 ...

  2. 10 种机器学习算法的要点(附 Python)(转载)

    一.前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明.更个性化的技术 也许我们生活在人类历史上最关键的时期:从使用 ...

  3. 机器学习10种经典算法的Python实现

    广义来说,有三种机器学习算法 1. 监督式学习 工作机制:这个算法由一个目标变量或结果变量(或因变量)组成.这些变量由已知的一系列预示变量(自变量)预测而来.利用这一系列变量,我们生成一个将输入值映射 ...

  4. 模板化的七种排序算法,适用于T* vector<T>以及list<T>

    最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...

  5. php 冒泡 快速 选择 插入算法 四种基本算法

    php四种基础算法:冒泡,选择,插入和快速排序法 来源:PHP100中文网 | 时间:2013-10-29 15:24:57 | 阅读数:120854 [导读] 许多人都说 算法是程序的核心,一个程序 ...

  6. 几种排序算法的学习,利用Python和C实现

    之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...

  7. PHP四种基础算法详解

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  8. 秒杀9种排序算法(JavaScript版)

    一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...

  9. php四种基础算法:冒泡,选择,插入和快速排序法

    转自:http://www.php100.com/html/php/rumen/2013/1029/6333.html 许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一 ...

随机推荐

  1. oracle错误(ORA-01691),单个数据文件大小限制问题

    1.问题:数据库从其他库同步一张大表时,出现错误 ERROR at line : ORA-: illegal parameter value in OCI lob function ORA-: pre ...

  2. SQL中获取最近的N个半年度

    直接上代码: --获取往前推的N个半年度 CREATE FUNCTION F3_GetRecentNHalfYear ( @N INT ) RETURNS @Result TABLE ( Year S ...

  3. Hbase快速开始——shell操作

    一. 介绍 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  4. Linux date命令的用法

    在linux shell编程中,经常用到日期的加减运算以前都是自己通过expr函数计算,很麻烦.其实date命令本身提供了日期的加减运算非常方便. 例如:得到昨天的时间date  --date=&qu ...

  5. SSH 端口映射(一)

    转载:http://blog.csdn.net/a351945755/article/details/21785647,http://blog.csdn.net/gaoming655/article/ ...

  6. nginx 平滑升级tengine

    wget  http://tengine.taobao.org/download/tengine-1.5.1.tar.gz //下载Tengine1.5.1版本 tar zxvf tengine-1. ...

  7. 分享十二个有用的jQuery代码

    分享7个有用的jQuery代码 这篇文章主要介绍了7个有用的jQuery技巧分享,本文给出了在新窗口打开链接.设置等高的列.jQuery预加载图像.禁用鼠标右键.设定计时器等实用代码片段,需要的朋友可 ...

  8. jQuery对象与dom对象的区别与相互转换

    什么是jQuery对象? 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.例如: $("#test").htm ...

  9. Django项目中如何建表?怎样导入数据?

    http://django-chinese-docs.readthedocs.org/en/latest/topics/db/models.html 通常在项目中的models.py文件中建表的 Th ...

  10. Hadoop 一二事(1) - 简单介绍与杂谈

    大数据大数据,身边很多朋友都在谈大数据,Big Data!!! 到底是什么,用来干嘛的,也很少有人说得出一二,那今天开始就简单说说这一二事吧 hadoop 的来源:是作者女儿的一个玩具 - 一只黄色的 ...