集成学习基础知识总结-Bagging-Boosting
理论
在概率近似正确((probably approximately correct)学习框架下。一个概念是强可学习的充分必要条件是这个概念是弱可学习(仅比随机猜测稍好)。
要求
个体学习器要好而不同。好-要不随机猜测强,不同--多样性。
Bagging (Bootstrap Aggregating):随机森林
通过bootstrap采样形成N个数据集(样本扰动来保证多样性),每个数据集训练一个模型,最终预测结果由投票法决定。
特点:
- boostrap采样。
- 并行结构。
- 大多数投票决定最终结果。
随机森林的特点:
CART树的集合。
Binary Partition。
没有剪枝。
两个随机性。
stacking:带权重的bagging
Boosting: H(x) = sign(∑αi hi(x))
先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器如此重复进行,直至基学习器数目达到事先指定的值T , 最终将这T 个基学习器进行加权结合.
特点:
- 关注降低偏差。
- 分类器串行生成。
- 训练样本有权重(调整权重等价于调整分布)。
- 输出结果通过加权结合(weighted voting)
AdaBoost: Adaptive Boosting,权重自适应
特点:
- 提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值(训练样本分布调整方式)。
- 加权多数表决,加大分类误差率小的弱分类器的权值,使其 在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在 表决中起较小的作用。(加权结合方式).
梯度提升树(Gradient Boosting Decison Tree, GBDT;Gradient Boosting Tree)
特点:
- 采用CART树为基学习器。
- 提升树采用前向分步算法:从前向后,每一步只学习一个基函数及其系数,逐步逼近目标函数式。
- 用损失函数的负梯度作为残差的估计值。
XGBoost
特点:
- 正则化项防止过拟合。
- XGBoost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准。
集成学习基础知识总结-Bagging-Boosting的更多相关文章
- Matrix学习——基础知识
以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明. 首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部 ...
- JAVA学习基础知识总结(原创)
(未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
- ansible学习基础知识和模块(一)
基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...
- Python学习-基础知识-2
目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...
- IOS科研IOS开发笔记学习基础知识
这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollVi ...
- MySQL学习基础知识1
什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...
- python学习基础知识
学习python前最好知道的知识点: python之父:Guido van Rossum python是一种面向对象语言 目前python最新的版本是3.8,python2已经逐渐淘汰 python的 ...
- android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器
一.基础知识点学习 1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...
- Java学习---基础知识学习
2016-07-23 周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4] ; 只有4个数字BufferedRead ...
随机推荐
- 2020-3-15 20175110王礼博 Exp2后门原理与实践
目录 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shell, 任务计划启动 3.使用MSF meterpreter(或其他软件)生成可执行文件,利用nca ...
- Struts2-学习笔记系列(15)-ajax支持和JSON
7.1stream类型的result 使用stream就无需jsp页面,直接在action想浏览者生成指定的响应 @Override public java.lang.String execute() ...
- C#多线程(4):进程同步Mutex类
Mutex 类 构造函数和方法 系统只能运行一个程序的实例 解释一下上面的示例 接替运行 进程同步示例 另外 Mutex 类 Mutex 中文为互斥,Mutex 类叫做互斥锁.它还可用于进程间同步的同 ...
- myvue 模拟vue核心原理
// js部分index.js class Myvue{ constructor(options){ this.data = options.data; this.dep = new Dep(); v ...
- Linux访问Window共享文件夹的配置步骤
1. Window下创建用户XXX(作用:Linux mount时需要提供用户和密码) 2. Window下共享文件夹给XXX用户,并根据实际需要设置读取/写入权限 3. Linux下创建挂载的目录 ...
- 复习python的__call__ __str__ __repr__ __getattr__函数 整理
class Www: def __init__(self,name): self.name=name def __str__(self): return '名称 %s'%self.name #__re ...
- CSRF(跨站请求伪造)学习总结
前言 参考大佬的文章,附上地址 https://www.freebuf.com/articles/web/118352.html 什么是CSRF? CSRF,中文名字,跨站请求伪造,听起来是不是和XS ...
- 8. input限制手机输入
1. 只能输入数字: <input id="num" type="number" value="0" onkeyup="va ...
- 【山外问道】Linux UUID的查询方法
本文打印版下载地址 [山外问道]Linux_UUID的查询方法-打印版.pdf 一.查询存储设备的UUID 1.使用blkid命令查看 (1)查询所有存储设备的UUID:blkid. (2)查询指定设 ...
- Python初学者常见错误问题汇总
1.在客户端和服务端如何传递数组? 答:在客户端和服务端可以使用json进行数据传输.在客户端把数据转换成json字符串,然后使用POST方法发送给服务端. 服务端收集到数据之后,使用json.loa ...