【机器学习】14. 集成学习 ensemble: bagging, boosting, 随机森林 random forest

集成学习 ensemble: bagging, boosting, 随机森林 random forest

  • 1. Ensemble 整体认知
  • 2. 使用Ensemble的原因
  • 3. 构建Ensemble 的方法
  • 4. Bagging(bootstrap aggregation)
    • 特点
  • 5. Boosting
    • AdaBoost
      • 整体算法思路
  • 6. 比较
  • 7. 随机森林

1. Ensemble 整体认知

  • 一个ensemble结合了多个分类器的预测
  • 跟其他分类器组合在一起的分类器称为base classifier(单个分类器),它们是使用训练数据创建的。
  • 有多种方法可以对新例子进行预测,例如,多数投票,即加权投票。等
  • ensemble往往比base classifier工作得更好

案例:三个base classifier在训练集上面训练:KNN, Logistic Regression, Decision Tree。在预测新样本的时候,每个独立的预测器被结合起来,采取多数投票的结果

总而言之,ensemble 将多个分类器组合,得到更好的预测。

2. 使用Ensemble的原因

举个例子,一个由25个二分类的分类器组成的Ensemble,每个分类器的错误率是0.35,由此会有两个情况。

  1. 情况1:所有分类器做了相同的判断,得到同样错误的结果,最终错误率依旧是0.35
  2. 情况2: 所有分类器之间是相互独立的,它们的错误没有相关性。那么最终错误率由下面的公式计算得到
    e e n s e m b l e = ∑ i = 13 25 ( 25 i ) ϵ i ( 1 − ϵ ) 25 − i = 0.06 e_{ensemble} = \sum^{25}_{i=13}\binom{25}{i}ϵ^i(1-ϵ)^{25-i}=0.06 eensemble=i=1325(i25)ϵi(1ϵ)25i=0.06
    注意:
    ( 25 i ) = 25 ! i ! ∗ ( 25 − i ) ! \binom{25}{i} = \frac{25!}{i!*(25-i)!} (i25)=i!(25i)!25!
    从结果来看,错误率大幅度降低。
    在这里插入图片描述

当e > 0.5时,集成比基本分类器差
独立性:当基分类器有轻微的相关性时,集成方法取得了很好的效果。

3. 构建Ensemble 的方法

  1. 操作训练数据——根据一些采样分布对原始数据进行重新采样,创建多个训练集,并为每个训练集构建一个分类器(例如Bagging和Boosting)。
  2. 操纵特征-使用输入特征的子集(例如随机森林和Random subspace)
  3. 操纵标签-(例如Error-correcting output coding: 比如A,B,C三类,变成AB,AC,BC这样)
  4. 操纵学习算法(模型参数)

4. Bagging(bootstrap aggregation)

  1. 每次采用有放回的抽样从训练集中取出n个样本组成新的训练集
  2. 利用新的训练集, 训练得到M个子模型(也有M个boostrap samples)
  3. 对于分类问题, 得票最多的分类为最终的类别; 对于回归问题,平均值作为预测值

特点

  1. 通常会比单一分类器的效果更好。
  2. 特别是对于不稳定分类器

不稳定分类器是指很小的变化在训练集会导致大的变化在最终预测上。比如决策树和神经网络都是不稳定分类器(unstable classifiers)

5. Boosting

主要思想:

  1. 让分类器相互比冲
  2. 下一个分类器需要使用不一样的样本进行训练。(AdaBoost是不同权重)

AdaBoost

  • 使用权重训练集
  • 每个训练样本都有关联的权重w(>=0)
  • 更高的权重,代表在之前的分类器中,这个样本更难被分类
  • 更高权重的样本会有更大的机会被选择在下一个分类器中。

整体算法思路

  1. 有N个样本, 标签y属于(+1,1)

  2. 初始化所有样本的权重w = 1/N

  3. 对于从1到t的分类器

    • 训练一个比较弱的训练器,计算ϵ (误差)
      ϵ t = ∑ n w t ( n ) I [ y n ≠ h t ( x n ) ] ϵ _t = \sum_nw_t(n) I[y_n≠h_t(x_n)] ϵt=nwt(n)I[yn=ht(xn)]
      I是indicator function
      I [ a = b ] = 1 ( a = b ) o r 0 ( a ≠ b ) I[a=b] = 1 (a=b) or 0(a≠b) I[a=b]=1(a=b)or0(a=b)
    • 计算每个分类器的贡献
      β t = 1 2 l o g 1 − ϵ t ϵ t β_t = \frac{1}{2}log\frac{1-ϵ _t}{ϵ _t} βt=21logϵt1ϵt
    • 更新权重
      w t + 1 ( n ) = w t ( n ) e − β t y n h t ( x n ) w_{t+1}(n) = w_t(n)e^{-β_ty_nh_t(x_n)} wt+1(n)=wt(n)eβtynht(xn)

    Yn是(-1,+1) ht(是预测值),如果预测错误则二者乘积为-1,正确则乘积为1. 所以预测错误会增加权重。

    并且normalize让所有权重和为1

  4. 最终的输出是
    h [ x ] = s i g n [ ∑ t = 1 T β t h t ( x ) ] h[x] = sign[\sum^T_{t=1}β_th_t(x)] h[x]=sign[t=1Tβtht(x)]
    在这里插入图片描述

6. 比较

  1. 相似之处
  • 使用投票(用于分类)和平均(用于预测)来合并分类器的输出
  • 结合相同类型的分类器,典型的树-例如决策树
  1. 差异
  • 创建分类器:
    • 装袋-单独
    • 鼓励—迭代—鼓励新的分类器成为专家
  • 组合法
  • 装袋-所有基础学习者的重量相等
  • 提升(AdaBoost) -基于训练集性能的不同给予权重

7. 随机森林

  • 性能取决于单个树的准确性和树之间的相关性
  • 使用Bagging和随机特征选择来产生多样性,减少树之间的相关性
  • 随着特征数量k的增加,强度和相关性都在增加
  • 随机森林的表现通常优于单个决策树
  • 有抵抗过拟合的能力
  • 由于只考虑了特征的一个子集,所以速度很快。

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

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

相关文章

记录一次更新idea

一、官网下载安装包&#xff0c;拿所需版本 二、链接下载&#xff0c; 逐行仔细读readme.txt 三、执行script(unstall<->install)vbs、-javaagent:更改时记得

低代码平台如何通过AI赋能,实现更智能的业务自动化?

引言 随着数字化转型的加速推进&#xff0c;企业在日常运营中面临的业务复杂性与日俱增。如何快速响应市场需求&#xff0c;优化流程&#xff0c;并降低开发成本&#xff0c;成为各行业共同关注的核心问题。低代码平台作为一种能够快速构建应用程序的工具&#xff0c;因其可视化…

实现企业微信打卡月报与简道云的高效集成

实现企业微信打卡月报与简道云的高效集成 企业微信打卡月报同步到简道云 在企业管理中&#xff0c;员工的考勤数据是至关重要的一环。为了实现高效的数据管理和分析&#xff0c;我们需要将企业微信的打卡月报数据集成到简道云平台。本文将分享一个具体的技术案例&#xff0c;展…

【Redis】常见基本全局命令

一、Redis俩大核心命令 由于Redis是以键值对的形式进行数据存取&#xff0c;自然就离不开不断的存储和获取&#xff0c;而其所对应的命令则是set和get&#xff0c;如此说来二者为Redis的核心基础命令也不为过。 作用&#xff1a;用于存储Stirng类型的数据 返回&#xff1a;当…

GPT避坑指南:如何辨别逆向、AZ、OpenAI官转

市面上有些说自己是官转&#xff0c;一刀只需要1块甚至几毛钱&#xff0c;并声称官方倍率的&#xff0c;很大可能就是使用的是 逆向或Azure。 如何鉴别逆向 逆向的种类很多&#xff0c;主要分为3类 逆向不知名A| 镜像站或偷的 key。成本约等于0&#xff0c;调用聊天数据可能在…

【PnP】详细公式推导,使用DLT直接线性变换法求解相机外参

文章目录 &#x1f680;PnP1️⃣ 求解不考虑尺度的解2️⃣ 恢复解的尺度3️⃣ 另一种解法 &#x1f680;PnP PnP(Perspective-n-Point)是求解3D到2D点相机外参的算法。PnP算法有DLT直接线性变换、P3P三对点估计位姿、EPnP(Efficient PnP)、BA(Bundle Adjustment)光速法平差。这…

数据库基础介绍

前言&#xff1a; 在当今信息化、数字化的时代&#xff0c;数据库是支撑一切信息系统的核心基础设施。无论是金融机构的账户管理、电商平台的商品库存&#xff0c;还是社交媒体的用户信息&#xff0c;数据库都在背后扮演着关键角色数据库不仅用于存储和管理数据&#xff0c;更…

[Ansible实践笔记]自动化运维工具Ansible(一):初探ansibleansible的点对点模式

文章目录 Ansible介绍核心组件任务执行方式 实验前的准备更新拓展安装包仓库在ansible主机上配置ip与主机名的对应关系生成密钥对将公钥发送到被管理端&#xff0c;实现免密登录测试一下是否实现免密登录 常用工具ansibleansible—docansible—playbook 主要配置文件 Ansible 模…

Hash表算法

哈希表 理论知识&#xff08;本文来自于代码随想录摘抄&#xff09;什么是哈希常见的三种哈希结数组&#xff1a;set:map:其他常用方法或者技巧&#xff08;自己总结的&#xff09; 练习题和讲解有效的字母移位词349. 两个数组的交集1. 两数之和454. 四数相加 II15. 三数之和 总…

如何选择适合自己的 Python IDE

集成开发环境&#xff08;IDE&#xff09;是指提供广泛软件开发能力的软件应用程序。IDE 通常包括源代码编辑器、构建自动化工具和调试器。大多数现代 IDE 都配备了智能代码补全功能。在本文中&#xff0c;你将发现目前市场上最好的 Python IDE。 什么是 IDE&#xff1f; IDE…

为什么架构设计禁止IP直连?

什么是IP直连&#xff1f; IP直连指应用程序直接在代码中硬编码IP地址&#xff0c;比如&#xff0c;连接mysql数据库的数据库链接&#xff0c;如下的定义方式&#xff0c;就属于IP直连。 这种写法在开发环境中很常见&#xff0c;但是&#xff0c;在正式生产环境中&#xff0c;…

Linux shell编程学习笔记87:blkid命令——获取块设备信息

0 引言 在进行系统安全检测时&#xff0c;我们需要收集块设备的信息&#xff0c;这些可以通过blkid命令来获取。 1 blkid命令的安装 blkid命令是基于libblkid库的命令行工具&#xff0c;可以在大多数Linux发行版中使用。 如果你的Linux系统中没有安装blkid命令&#xff0c;…

构建生产级的 RAG 系统

对 RAG 应用程序进行原型设计很容易&#xff0c;但要使其高性能、健壮且可扩展到大型知识语料库却很困难。 本指南包含各种提示和技巧&#xff0c;以提高 RAG 工作流程的性能。我们首先概述一些通用技术 - 它们按照简单到复杂的顺序进行排列。然后&#xff0c;我们将更深入地研…

【python实操】python小程序之测试报告

引言 python小程序之测试报告 文章目录 引言一、测试报告1.1 概念1.1.1 使用Pytest和Allure生成测试报告1.1.2 使用unittest和HTMLTestRunner生成测试报告1.1.3 总结 1.2 题目1.3 代码1.3 代码解释 二、思考 一、测试报告 1.1 概念 python生成测试报告&#xff0c;常用的方法包…

ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录

elasticSearch集群 前言一、架构二、下载三、虚拟机相关设置3.1 创建es用户3.2 为建es用户赋权sudo3.3 更换es目录所属用户 四、Elasticsearch配置文件修改4.1 修改elasticsearch.yml4.2 修改jvm.options4.3 修改jdk路径 五、启动六、启动报错七、设置密码八、可视化界面cerebr…

Ubuntu22.04环境搭建MQTT服务器

官网&#xff1a; https://mosquitto.org 1.引入库 sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa2.升级安装工具 sudo apt-get update 3.安装 sudo apt-get install mosquitto 4.安装客户端 sudo apt-get install mosquitto-clients5.添加修改配置文件 进…

力扣21 : 合并两个有序链表

链表style 描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 节点大小相同时&#xff0c;l1的节点在前 何解&#xff1f; 1&#xff0c;遍历两个链表&#xff0c;挨个比较节点大小 同时遍…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务&#xff0c;旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式&#xff0c;包括步行、公交和驾车&#xff0c;能够满足不同场景下的路径查询需求。通过调用这些API&#xff0c;用户可以获得从起点到终点的最优路径建…

深度学习数学基础之偏导数

深度学习数学基础之偏导数 偏导数的详细解释与实例 定义 偏导数是多变量函数对其中一个变量的导数&#xff0c;同时固定其他变量。它是研究函数在多维空间内各个方向上局部变化性质的基本工具。对于函数 ( f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots, x_n) f(x1​,x2​…

论文阅读(二十三):Squeeze-and-Excitation Networks

文章目录 1.介绍2.原理3.代码4.SE模块的应用 论文&#xff1a;Squeeze-and-Excitation Networks   论文链接&#xff1a;Squeeze-and-Excitation Networks   代码链接&#xff1a;Github 1.介绍 卷积算子使网络能够在每一层的局部感受野中融合空间&#xff08;spatial&…