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

有这么几种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. java:IO-读写大文件

    import java.io.*; class Test { public static void main(String args[]){ FileInputStream fin =null; Fi ...

  2. jQuery通知插件 -- noty

    noty是一个jQuery的通知(信息提示)插件,灵活轻便,是一个非常棒的用于替代传统提示对话框的插件. 当前最新版本为2.1.0: 从https://github.com/needim/noty 可 ...

  3. 转Struts 权限控制

    权限最核心的是业务逻辑,具体用什么技术来实现就简单得多. 通常:用户与角色建立多对多关系,角色与业务模块构成多对多关系,权限管理在后者关系中. 对权限的拦截,如果系统请求量大,可以用Struts2拦截 ...

  4. cocos2dx 的基本框架

    AppDelegate.h #ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ #include "cocos2d.h" USING ...

  5. linux内核下载

    01最新版:https://www.kernel.org/ 02老旧版:https://www.kernel.org/pub/linux/kernel/v3.x/ ------------------ ...

  6. 在BSP的.bat文件下設置全局變量方法

    用于多個產品共用一個BSP的時候,在BSP的.bat文件中設置全局變量,去掉不需要加載的驅動和不同點是很好的方法. 一,舉例:BSP中.bat的一段code: set BSP_SMDK2443=1 s ...

  7. 转 Android中进入系统设置界面

    Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面) Intent intent = new ...

  8. IE css expression(表达式)

    很多时候我们需要对IE6的bug写一些hack,如max-height,absolute元素高度100%等. css里面的 expression(表达式)和js里面的差不多,如: 获取当前元素的高度: ...

  9. open_table

    /* Open a table. SYNOPSIS open_table() thd Thread context. table_list Open first table in list. acti ...

  10. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...