假设我们有很多机器学习算法(可以是前面学过的任何一个),我们能不能同时使用它们来提高算法的性能?也即:三个臭皮匠赛过诸葛亮。

有这么几种aggregation的方式:

一些性能不太好的机器学习算法(弱算法),如何aggregation,成为表现比较好的算法?来看一下:

我们可以看出,有时候aggregation的表现像是在做feature transform,有时候又像是在做regularization。

Blending:uniform Blending、 linear Blending、 any Blending

我们可以看出:机器学习算法A的表现,分为两部分,performance of consensus (bias) 和 expected deviation to consensus (variance)。而uniform blending提高性能是通过减小variance ,来获得更加stable的算法来实现的。

其中α必然会大于0,约束条件可以去掉。

Bagging

我们可以看出,aggregation之所以奏效,是因为机器学习算法的多样性。那么,如何产生足够多的机器学习算法?有如下几种情形。现在我们将注意力集中到:diversity by data randomness.

之前我们在uniform Blending中假想过这一情形。但是呢,那是在理想状态下,1)我们的T不可能无限大;2)我们的D不可能无限多,现在我们采用如下技术来解决:

Random Forest

什么是random forest?就是Bagging的一种特殊情况:g为决策树的情况

为什么呢?之前我们说过uniform Blending是通过减小variance,使算法稳定,来提高算法性能。而bagging是Blending的一种特殊形式。而我们知道决策树对于数据很敏感,不同的数据会导致算法巨大的变化。Bagging正好可以减小variance。

所以可以说random forest是Bagging的一种特殊情况,也可以说random forest是为了提高决策树性能(稳定性)而使用的一种策略

那么如何进行所谓的“bootstrap”步骤?产生大量的“D”?

那究竟需要多少棵决策树呢?作者在一次比赛中使用了12000棵。

Out-of-Bagging(OOB)技术

Bagging技术我们之前谈到过了:

也就是说,对于某个g来说,有将近三分之一的资料没有被使用!这是巨大的浪费!如何使用这些OOB资料呢?

回想一下validation:

Feature Selection

假设每一个样本有很多Feature,那其中有很多冗余的特性,有很多与问题不相关的特性,如何选择我们想要的特性呢?

Aggregation(1):Blending、Bagging、Random Forest的更多相关文章

  1. 单点登录CAS使用记(六):单点登出、单点注销

    单点登出基本上没有啥配置 直接在原来logout的时候,重定向到Cas-Server的logout方法 @RequestSecurity @RequestMapping(value = "l ...

  2. 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战

    背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.ne ...

  3. x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()

    x264代码剖析(三):主函数main().解析函数parse()与编码函数encode() x264的入口函数为main().main()函数首先调用parse()解析输入的參数,然后调用encod ...

  4. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...

  5. libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板

    前言   Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...

  6. zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译

    前言   方便做嵌入式arm的交叉移植zlib库.   Zlib库   zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...

  7. zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板

    前言   Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下.   版本编译引导 zlib在windows上的mingw32 ...

  8. oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍

    一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...

  9. C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

    遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前 ...

随机推荐

  1. [OOD]违反里氏替换原则的解决方案

    关于OOD中的里氏替换原则,大家耳熟能祥了,不再展开,可以参考设计模式的六大设计原则之里氏替换原则.这里尝试讨论常常违反的两种形式和解决方案. 违反里氏替换原则的根源是对子类及父类关系不明确.我们在设 ...

  2. 修改Eclipse字体

    选择菜单:Windows->Preferences->Genneral->Appearance->Colors and Font

  3. Android sendMessage 与 obtainMessage (sendToTarget)比较

    话说在工作中第一次接触android 的Handler 的时候,不知道怎么去关注性能. 记得当时这么写的: Message msg = new Message() msg.what = xxx; ms ...

  4. UVa 557 (概率 递推) Burger

    题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...

  5. Android基础_3 Activity相对布局

    相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的.相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一 ...

  6. UVA 1151 Buy or Build (MST最小生成树,kruscal,变形)

    题意: 要使n个点之间能够互通,要使两点直接互通需要耗费它们之间的欧几里得距离的平方大小的花费,这说明每两个点都可以使其互通.接着有q个套餐可以选,一旦选了这些套餐,他们所包含的点自动就连起来了,所需 ...

  7. Oracle 课程七之分析和动态采样

    课程目标 完成本课程的学习后,您应该能够: •引子—统计信息的作用 •如何收集统计信息 •系统统计信息 •对象统计信息—表.字段.索引统计信息 •动态采样   统计信息的作用 Optimizer st ...

  8. mysql open files

    错误信息如下: ..... 150905 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './mytest/t1.frm ...

  9. UVA 10054 The Necklace

    完全就是哭瞎的节奏···QAQ 又是图论··· 题意:有一种项链,每个珠子上有两种颜色,相同颜色的两颗珠子的两头相连,如果能连成环输出珠子的顺序,不能连成环输出"some beads may ...

  10. [Everyday Mathematics]20150112

    设 $f\in C[0,1]$ 适合 $$\bex \int_x^1 f(t)\rd t\geq \frac{1-x^2}{2},\quad \forall\ x\in [0,1]. \eex$$ 试 ...