机器学习第九课--随机森林

一.什么是集成模型

对于几乎所有的分类问题(图像识别除外,因为对于图像识别问题,目前深度学习是标配),集成模型很多时候是我们的首选。比如构建一个评分卡系统,业界的标配是GBDT或者XGBoost等集成模型,主要因为它的效果确实好,而且稳定。还有一点是这些模型的可解释性也很好,不像深度学习模型就像个黑盒子。

那为什么集成模型的可解释性好呢? 这个其实不难理解,因为随机森林或者提升树模型其实是基于决策树的,而且我们知道决策树模型的可解释性本来就很好。集成模型可以简单理解成决策树的集合!

二.集成模型的优势  

小时候我们应该都听过这样的一句话 - “三个臭皮匠顶个诸葛亮"。其实也从侧面反映了集成模型的思想,多个人一起决策要优于一个人单干。当然也有可能存在一些特别牛逼的人要远远胜于其他所有人的智慧之和,但毕竟是特例。至少多听取不同的建议会让自己少犯一些愚蠢的错误。 

 三.构建集成模型

 至于构建集成模型,通常有两种方法,一种叫Bagging,另外一种叫Boosting,这是两种完全不一样的方法。在这一章,我们主要来讲解第一种(随机森林是Bagging的一种方法),在之后的章节我们会讲解Boosting的方法。

 每个预测会有一个投票,比如说123说A,4说B,每个预测间相互独立!

 四.方差和稳定性

 在训练模型时,我们的目的是要训练出泛化能力强的模型,这一点我们已经在之前的章节里讲过了。为了一个模型具有较强的泛化能力,我们需要解决模型的过拟合现象。那什么样的模型容易过拟合呢?答案是“不稳定的模型!”,也就是训练出来的模型放在训练数据上表现特别好,但放在真实的线上环境时就不行了。 就好比一个学生平时成绩非常好,但一到关键时刻就不灵了,这种现象可以笼统地理解为不稳定。所以我们的目的是希望训练出一个稳定的模型。

做个总结,多个模型共同预测确实会降低方差,也就意味着提高模型的稳定性。但准确率是不是也会保证提升呢?这个其实不好说,但通常来说集成模型的准确率还是要高于其他简单模型的。但不管怎么样,只要能理解为什么共同决策会降低风险或者增加稳定性,足以帮助理解后续的内容了。

 五.随机森林的流程

多样性 

只有多样性(Diversity)才能保证随机森林的效果!这一点非常重要。就比如我们在构建团队的时候,也希望每个人有自己的特点,这样可以起到很好的互补作用,补偿取短。那接下来的问题就来了,如何构造出很多具备多样性的决策树 答案在于“随机“! 

 通过两个方面的随机操作,我们可以得出具备多样性的决策树。这也是为什么我们把它叫作“随机”森林的主要原因。第一种随机化来自于样本的采样,也就是说每一棵决策树来自于不同的训练样本,请看下面的一段视频。

除了样本的随机化,我们在构造每一棵决策树的时候也会随机化特征。回顾之前决策树模型,当我们要选择当前最好的特征作为根节点的时候,我们把所有可能的特征全部尝试了一遍然后选了其中最好的。但在随机森林里,选择特征的时候首先会做采样,比如从100个特征里选择10个,然后从10个当中选择最好的特征作为当前的根节点。 所以,每一次做分裂(split)的时候先要做特征的采样,然后一一做比较,最后选择效果最好的。这两个方面的随机化可以保证带来多样化的决策树。当然除了这两个,还可以设计更多的随机化,但主要还是以这两个为主。

 六.随机森林的预测

 构建完随机森林之后,我们即可以对新的样本做预测了! 预测过程类似于投票的过程。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(2) Java 8 实战第二版——补充 收集数据、并行数据处理能力与性能

第6章 用Collectors类创建和使用收集器将数据流归约为一个值汇总&#xff1a;归约的特殊情况数据分组和分区开发你的自定义收集器 对一个交易列表按货币分组&#xff0c;获得该货币的所有交易额总和&#xff08;返回一个Map<Currency, Integer>&#xff09;。将交易列表…

git之撤销工作区的修改和版本回溯

有时候在工作区做了一些修改和代码调试不想要了,可如下做 (1)步骤1:删除目录代码,确保.git目录不能修改 (2)git log 得到相关的commit sha值 可配合git reflog 得到相要的sha值 (3)执行git reset --hard sha值,可以得到时间轴任意版本的代码 git reset --hard sha值干净的代…

【Linux基础】第31讲 Linux用户和用户组权限控制命令(三)

用户组管理命令 每个用户都有一个用户组&#xff0c;系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同。如Linux下的用户属于与它同名的用户组&#xff0c;这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组…

二叉树的操作大全

文章目录 1.通过前序遍历数组"ABD##E#H##CF##G##"构建二叉树2.前序遍历3.中序遍历4.后序遍历5.层序遍历6.二叉树结点个数及第k层结点个数7.查找为x的结点8.叶子结点个数9.销毁二叉树(二级指针)10.判断是否为完全二叉树测试代码及运行结果 1.通过前序遍历数组"AB…

【LeetCode热题100】--560.和为K的子数组

560.和为K的子数组 示例2的结果&#xff1a; 输入&#xff1a;nums [1,2,3] ,k3的时候 连续子数组有[1,2],[3]&#xff0c;一共有2个 利用枚举法&#xff1a; 枚举[0,…i]里所有的下标j来判断是否符合条件 class Solution {public int subarraySum(int[] nums, int k) {i…

Unity用相机实现的镜子效果

首先登场 场景中的元素 mirror是镜子&#xff0c;挂着我们的脚本&#xff0c;Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小&#xff0c;x是-2&#xff0c;为了反转一下贴图 相机直接可以禁用掉&#xff0c;用…

负载均衡中间件---Nginx

一.nginx的好处 学习 Nginx 对于一个全栈开发者来说是非常有价值的&#xff0c;下面是一些学习 Nginx 的原因和好处&#xff1a; 反向代理和负载均衡&#xff1a;Nginx 是一个高性能的反向代理服务器&#xff0c;可以用于将客户端请求转发给多个后端服务器&#xff0c;实现负…

【Linux】文件缓冲区

目录 一、dup2 二、 引入 三、C语言FILE中的缓冲区 3.1 缓冲区的作用 3.2 缓冲区的刷新机制 3.3 对引入代码现象的解释 3.4 模拟实现C语言中的FILE 四、文件系统中的缓冲区 4.1 fsync 在本期内容正式开始之前&#xff0c;我们先介绍一个上期遗漏的知识点&#xff1a; …

【数据结构】二叉树的链式实现及遍历

文章目录 一、二叉树的遍历1、前序遍历2、中序遍历3、后序遍历4、层序遍历 二、二叉树结点个数及高度1、二叉树节点个数2、二叉树叶子节点个数3、二叉树第k层节点个数4、二叉树查找值为x的节点 三、二叉树创建及销毁1、通过前序遍历数组创建二叉树2、二叉树的销毁3、判断是否为…

17.适配器模式(Adapter)

意图&#xff1a;将一个类的接口转换为Client希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类在一起工作。 UML图 Target&#xff1a;定义Client使用的与特定领域相关的接口。 Client&#xff1a;与符合Target接口的对象协同工作。 Adaptee&#xf…

vue+element plus 使用table组件,清空用户的选择项

<el-table ref"tableRef"> .... </el-table> <script lang"ts" setup> import { onMounted, reactive, ref, nextTick } from vue const clearBtn () > {console.log(清空用户的选择项)tableRef.value.clearSelection() } </scr…

CGI与FastCGI的区别在哪里,FastCGI的应用场景讲解

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

qml Combobox用法介绍与代码演示

ComboBox 是 QML 中的一个组件,用于在下拉列表中显示一组项供用户选择。它是 Qt Quick Controls 2 模块中的一个组件,经常用于创建用户界面。 下面是 ComboBox 的一些基本用法: 1. 基本使用: import QtQuick 2.15 import QtQuick.Controls 2.15ApplicationWindow {visib…

在服务器上创建git仓库

1、在服务器上创建git仓库 选择一个创建文件夹的地方&#xff0c;这个地方不会将源码存放在这里&#xff0c;只用于版本控制 # 创建一个专门放置git的文件夹&#xff0c;也可以叫其它名 mkdir git && cd git # 创建自己项目的文件夹&#xff0c;文件夹后面要带 .git…

PBR纹理的10种贴图

PBR 是基于物理的渲染的首字母缩写。它试图通过模拟材料如何吸收和反射光&#xff0c;以模仿现实世界中的光流的方式产生视觉效果。最近的游戏引擎由于其逼真的效果而越来越多地使用 PBR 纹理。对于实时渲染&#xff0c;它们被认为是真实世界场景的最佳近似值。 推荐&#xff…

iOS 17 Simulator Failed with HTTP status 400:bad request

升级 xcode 15 要 ios17 的 sdk 才能运行&#xff0c;但是更新这个 sdk 400 错误了 解决方案&#xff1a; 直接去官网下载开发者后台下载dmg文件&#xff0c;使用命令行快速安装即可 https://developer.apple.com/documentation/xcode/installing-additional-simulator-runti…

c++模板初阶

文章目录 前言一、泛型编程1、泛型编程2、函数模板2.1 函数模板的使用2.2 函数模板的实例化2.3 模板参数的匹配原则 3、类模板 前言 一、泛型编程 1、泛型编程 在学习了前面的c重载之后&#xff0c;我们写一个Swap函数用来交换不同类型的数据时&#xff0c;可以使用函数重载&…

Learn Prompt-Prompt 高级技巧:AutoGPT

AutoGPT 是一个由Toran Richards创建的流行开源项目。它利用GPT4作为大脑&#xff0c;结合langchain的链接思想&#xff0c;连接各种工具和互联网资源&#xff0c;来完成人类给予的任务。您只需要设定一个目标&#xff0c;AutoGPT就会自主规划并逐步执行任务。如果遇到问题&…

xyhcms getshell

下载xyhcms3.6.2021版本并用phpstudy搭建 function get_cookie($name, $key ) {if (!isset($_COOKIE[$name])) {return null;}$key empty($key) ? C(CFG_COOKIE_ENCODE) : $key;$value $_COOKIE[$name];$key md5($key);$sc new \Common\Lib\SysCrypt($key);$value $sc-…

Zabbix5.0_介绍_组成架构_以及和prometheus的对比_大数据环境下的监控_网络_软件_设备监控_Zabbix工作笔记

z 这里Zabbix可以实现采集 存储 展示 报警 但是 zabbix自带的,展示 和报警 没那么好看,我们可以用 grafana进行展示,然后我们用一个叫睿象云的来做告警展示, 会更丰富一点. 可以看到 看一下zabbix的介绍. 对zabbix的介绍,这个zabbix比较适合对服务器进行监控 这个是zabbix的…