机器学习---bagging与随机森林

1. bagging算法

集成学习有两个流派:一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是

bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。

Bagging的弱学习器之间的确没有boosting那样的联系,是“随机采样”。

随机采样(bootsrap)就是从训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本

。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于Bagging算法,一般会随机

采集和训练集样本数一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容

不同。如果我们对有m个样本的训练集T 随机采样,则由于随机性,T个采样集各不相同。

对于一个样本,它在某一次含 m 样本的训练集的随机采样中,每次被采集到的概率1/m

被采集到的概率为 1-1/m。如果 m 次采样都没有被采集中的概率是 [(1-1/m)]^m。当 m→∞,[(1-

1/m)]^m→1/e  ≈"0.368"也就是说,在bagging的每轮随机采样中,训练集中大约有36.8%的数据

没有被采样集采集中。对于这部分大约36.8%的数据没有被采样到,我们常常称之为袋外数据(Out

Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

Bagging算法对于弱学习器没有限制,最常用的是决策树和神经网络。

Bagging结合策略:分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的

模型输出。回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最

终的模型输出。

Bagging方差与偏差:Bagging每次都进行采样来训练模型。因此泛化能力很强,对于降低模型的

方差很有作用。对于训练集的拟合程度差一些,模型的偏倚会大一些。

1.2 bagging算法流程

输入:样本集D={(x_1,y_1 ),(x_2,y_2 ),…,(x_m,y_m)} ,弱学习器算法ξ

输出:强分类器f(x)

过程:1对于t=1,2,…,T:

               a)对训练集进行 t 次随机采样,共采集 m,得到包含 m样本的采样D_t

               b)用采样集 D_t  训练第 t弱学习G_t (x)=ξ(D_t)

2) 如果是分类算法预测,T弱学习器投出最多票数的类别或者类别之一为最终类别。如果是

回归算法,T 弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

3. 随机森林

随机森林(Random Forest,以下简称RF)Bagging算法的进化版,RF使用了CART决策树作为弱学

习器,RF改进了CART决策树的构建过程:普通的决策树,在节点上所有的n个样本特征中选择一

个最优的特征来做决策树的左右子树划分,RF通过随机选择节点上的一部分样本特征,这个数字

小于n,假设n_sub然后在这些随机选择n_sub样本特征中,选择一个最优的特征来做决策

树的左右子树划分,这样进一步增强了模型的泛化能力。

随机森林算法流程:

输入:样本集D={(x_1,y_1 ),(x_2,y_2 ),…,(x_m,y_m)} ,弱学习器算法ξ,弱分类器迭代次数 T

输出:强分类器f(x)

过程:1对于t=1,2,…,T:

                a)对训练集进行 t 次随机采样,共采集 m,得到包含 m样本的采样D_t

                b)用采样集 D_t  训练第 t决策树模型G_t (x)=ξ(D_t),训练决策树模型的节点的时,在

节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优

的特征来做决策树的左右子树划分。

2) 如果是分类算法预测,则 T弱学习器投出最多票数的类别或者类别之一为最终类别。如果是

回归算法,T 弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回

归,还可以用于特征转换,异常点检测等

extra trees是RF的变种, 原理和RF类似,区别

1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训

练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。

2) 在选定了划分特征后,RF的决策树会基于基尼系数、均方差之类的原则,选择一个最优的特

征值划分点,这和传统的决策树相同。extra trees比较激进,会随机的选择一个特征值来划分决

策树。

从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策

树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚

相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。

Totally Random Trees Embedding(TRTE)是一种非监督学习的数据转化方法。它将低维的数据集

映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运

用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法

TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完

毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策

树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决

策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,

0,0, 0,0,0,0,1),15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子

编码。映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。

Isolation Forest(IForest)是一种异常点检测的方法,使用了类似于RF的方法来检测异常点。对

于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对

RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,

采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我

一般就可以将异常点区别出来了。

对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈

值。这点也和RF不同。另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同

样本采集,用少量的异常点检测一般不需要这么大规模的决策树。

对于异常点的判断,则是将测试样本点 x 拟合到T决策树。计算在每颗决策树上该样本的叶子节

点的深度h_t (x) 。从而可以计算出平均高度h(x)此时我们用下面的公式计算样本点 x 的异常概

率:,•其中,m为样本个数,c(m) 的表达式为:

 ζ为欧拉常数s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。

RF算法作为一个可以高度并行化的算法,RF在大数据大有可为。 这里也对常规的随机森林算法的

优缺点做一个总结。RF的主要优点有:

①训练可以高度并行化,对于大数据时代的大样本训练速度有优势。

②由于可以随机选择决策树节点划分特征,这样在样本特征维度很高时,仍然能高效训练模型。

③在训练后,可以给出各个特征对于输出的重要性

④由于采用了随机采样,训练出的模型的方差小,泛化能力强

⑤相对于Boosting系列的AdaboostGBDTRF实现比较简单

⑥对部分特征缺失不敏感。

RF的主要缺点有

①在某些噪音比较大的样本集上,RF模型容易陷入过拟合

②取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统之银行家算法

Dijkstra在1965年提出的银行家算法是著名的死锁避免算法,这个用于一个银行家给多个顾客贷款的算法可以直接用于操作系统给进程分配资源,这时只要把银行家换成操作系统,把顾客换成进程,把资金换成资源,把银行家决定是否…

redis基本用法学习(字符串类型基本操作)

字符串类型是redis支持的最简单的数据类型,同时最简单的键值对类型也是key和value都是单个字符串,本质上就是字符串之间的相互映射,redis官网String类型简介页面提到可以用于缓存HTML片段或页面内容。   redis支持设置/获取单个键值对&…

Python | Flask测试:发送post请求的接口测试

HTTP/1.1 协议规定的 HTTP 请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 几种。POST通常用来向服务端提交数据,主要用于提交表单、上传文件。 HTTP 协议是以ASCII码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为…

用GMAT进行卫星轨道仿真

文章目录 设计飞行器预报模型配置轨道图配置预报命令运行和分析 GMAT是一跨开源轨道设计软件,官网挂着NASA的名字,看上去十分给力。 下载之后直接解压,可执行文件在bin目录下,双击GMAT.exe,就可以进入其欢迎界面了。G…

新版Android Studio Logcat 筛选日志

下载了新版的Android Studio,android-studio-2022.3.1.21-mac_arm,记录一下新版本AS的logcat过滤日志条件 1. 按照包名过滤 1.1 过滤当前包名的日志 package:mine 1.2 过滤其他包名日志 package:com.example.firstemptyapplication 2. 按照日志等级过滤…

Qt之使用QListView加载相册(富文本ToolTip)

一.效果 二.实现 #include "mainwindow.h" #include "ui_mainwindow.h"#include <QStandardItemModel> #include <QFont>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QFont…

使用Httpclient来替代客户端的jsonp跨域解决方案

最近接手一个项目&#xff0c;新项目需要调用老项目的接口&#xff0c;但是老项目和新项目不再同一个域名下&#xff0c;所以必须进行跨域调用了&#xff0c;但是老项目又不能进行任何修改&#xff0c;所以jsonp也无法解决了&#xff0c;于是想到了使用了Httpclient来进行服务端…

Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!

Gemini 1.0&#xff1a;Google推出的全新AI模型&#xff0c;将改变生成式人工智能领域的游戏规则&#xff01; &#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 …

Axure中继器的使用

目录 一. 中继器 概述 作用 运用场景 二. 中继器的使用 三. 三列表格增删改查案例展示 一. 中继器 概述 在Axure软件中&#xff0c;中继器&#xff08;Repeater&#xff09;是一种特殊的控件&#xff0c;它的作用是允许用户创建重复的数据项&#xff0c;并以列表或表格…

React实现全局Loading

css #__loading {position:fixed;top: 0;left: 0;z-index: 99999;display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;background: rgba(0, 0, 0, 0); } 页面代码 使用了antd的Spin组件 import React from react import ReactDOM from re…

IDEA进行远程Debug调试的来龙去脉

一、前言 我们在测试环境时&#xff0c;遇到一些bug&#xff0c;看上下文的日志&#xff0c;还是无法判断出问题所在时&#xff0c;此时需要Debug来解决。 为了更方便、更高效地定位和解决问题&#xff0c;远程调试成为一种常见的实践方式。 这个还是不建议在生产中使用&…

华为交换配置OSPF与BFD联动

实验拓扑 组网需求 如图所示&#xff0c;SW1、SW2和SW3之间运行OSPF&#xff0c;SW1和SW2之间的交换机仅作透传功能。现在需要SW1和SW2能够快速感应它们之间的链路状态&#xff0c;当链路SW1-SW2发生故障时&#xff0c;业务能快速切换到备份链路SW1-SW3-SW2上 配置思路 采用…

Postman使用总结--案例集合导出和导入

Postman导出用例集功能 注意&#xff1a;导出时如果有环境变量的&#xff0c;一定记住把环境变量一起导出还有参数文件&#xff1b; 导出环境变量一定和刚刚导出的案例集合放在一起&#xff01;&#xff01;&#xff01; Postman导入用例集功能

Android13音频录制适配

Android13音频录制适配 前言&#xff1a; 之前写过一篇音频录制的文章&#xff0c;当时是在Android10以下的手机可以成功录制和播放&#xff0c;但是Android10及以上手机提示创建文件失败&#xff0c;最近做过Android13的适配&#xff0c;索性一起把之前的录音也适配了&#…

使用docker-compose搭建docker私服与配置WebUI

简介 本文介绍了使用docker compose 搭建 docker私服 环境 Docker version 24.0.6, build ed223bc Docker Compose version v2.21.0 正文 一、创建registry文件夹 我的路径是/usr/loca/docker/registry 二、创建并编写docker-compose.yml version: "3.9" services…

《深入理解计算机系统》学习笔记 - 第六课 - 机器级别的程序二

Lecture 06 Machine Level Programming II Control 机器级别程序控制二 文章目录 Lecture 06 Machine Level Programming II Control 机器级别程序控制二处理器的状态条件码&#xff08;隐式设置&#xff09;通过算术运算隐式设置条件码(将其视为副作用)通过cmp比较命令显示的设…

关于EasyExcel 合并单元格方法该如何实现

在做一个业务的导出&#xff0c;目前遇到一个需求&#xff0c;如下图&#xff1a; import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metad…

【Windbg】学习及在CTF中解题

1、Windbg介绍 Windbg是一款Windows强大的调试器&#xff0c;可以调试0和3环的程序。 在实际开发中&#xff0c;可以调试我们的错误程序&#xff0c;从而定位关键代码&#xff0c;进行程序代码修复。 WinDbg 是一种调试器工具&#xff0c;由微软公司开发&#xff0c;用于分析…

Springboot数据校验与异常篇

一、异常处理 1.1Http状态码 HTTP状态码是指在HTTP通信过程中&#xff0c;服务器向客户端返回的响应状态。它通过3位数字构成&#xff0c;第一个数字定义了响应的类别&#xff0c;后两位数字没有具体分类作用。以下是常见的HTTP状态码及其含义&#xff1a; - 1xx&#xff08;信…

C#二甲医院实验室信息系统源码

医院实验室信息系统简称(Hospitallaboratoryinformationsystem)&#xff0c;也可以称作实验室&#xff08;检验科&#xff09;信息系统或者LIS系统。 LIS定义 其主要功能是将检验的实验仪器传出的检验数据经分析后&#xff0c;自动生成打印报告&#xff0c;通过网络存储在数据…