Aggregation(1):Blending、Bagging、Random Forest
假设我们有很多机器学习算法(可以是前面学过的任何一个),我们能不能同时使用它们来提高算法的性能?也即:三个臭皮匠赛过诸葛亮。
有这么几种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的更多相关文章
- 单点登录CAS使用记(六):单点登出、单点注销
单点登出基本上没有啥配置 直接在原来logout的时候,重定向到Cas-Server的logout方法 @RequestSecurity @RequestMapping(value = "l ...
- 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战
背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.ne ...
- x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()
x264代码剖析(三):主函数main().解析函数parse()与编码函数encode() x264的入口函数为main().main()函数首先调用parse()解析输入的參数,然后调用encod ...
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑
(1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...
- libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板
前言 Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...
- zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
前言 方便做嵌入式arm的交叉移植zlib库. Zlib库 zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...
- zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
前言 Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下. 版本编译引导 zlib在windows上的mingw32 ...
- oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍
一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前 ...
随机推荐
- ubuntu 折腾之路
aptitude search :search for the lib...and their realtions. apt-get install :install the app apt-get ...
- Netstat 命令
简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...
- c 语言练习__求到N的阶乘的和。
#include <stdio.h> /* 题目如下 * S = 1 + 2! + 3! + ... + N! */ int main(int argc, char *argv[]) { ...
- gcc编译代码报错及编译方式
一.error: 'for' loop initial declarations are only allowed in C99 mode 前段时间写了一个小C程序,放在linux下用gcc编译出错, ...
- Java视频教程
http://outofmemory.cn/java/video/ http://outofmemory.cn/tutorial/
- C# 按拼音/笔划 排序的简单示例(转)
class Program { static void Main(string[] args) { string[] arr = { "趙(ZHAO)", "錢(QIAN ...
- 1651. Shortest Subchain(bfs)
1651 终于A了 看这题容易想到最短路 看到错的很多 还特意注意了好几处 后来发现 必须按给出的顺序出边 想了想 这不就是BFS 然后就是各种细节 i->i+1ori->j(a[i]== ...
- VB VS2003获取当前进程用户登录
Page.User.Identity.Name获取当前进程用户名称,VS03才可以用
- 利用改进的cca算法,进行识别
这个方法,很有意思,第一,不用降维:第二,跟ica做比较,竟然说比强大的ica还好: 看来,国防科大的博士,还是很牛的. <OI and fMRI Signal Separation Using ...
- Java [Leetcode 202]Happy Number
题目描述: Write an algorithm to determine if a number is "happy". A happy number is a number d ...