提升树,bagging与随机森林

2023-05-16

提升树是一种以分类树或者回归树为基本分类器的提升方法。

对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可。

而回归树则是根据残差来训练下一个分类器的回归二叉树。下面主要介绍一下回归提升树的算法。

回归提升树

回忆一下,回归树就是将输入空间分割成 M M 个不相关的区域R1,...,RM,即回归树为 f(x)=Mm=1cmI(xRm)=Mm=1T(x,θm) f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) = ∑ m = 1 M T ( x , θ m )

下面我们用前向分步算法推导下回归提升树,有:

f(0)=0 f ( 0 ) = 0

fm(x)=fm1(x)+T(x,θm) f m ( x ) = f m − 1 ( x ) + T ( x , θ m )

θmˆ=argminθmNi=1L(yi,fm1(x)+T(x;θm)) θ m ^ = a r g m i n θ m ∑ i = 1 N L ( y i , f m − 1 ( x ) + T ( x ; θ m ) )

令损失函数为二次损失,则:

L(y,f(x))=(yf(x))=(yfm1(x)T(x;θm))2=(γT(x;θm))2 L ( y , f ( x ) ) = ( y − f ( x ) ) = ( y − f m − 1 ( x ) − T ( x ; θ m ) ) 2 = ( γ − T ( x ; θ m ) ) 2

其中 γ=yfm1(x) γ = y − f m − 1 ( x ) γ γ 为残差,拟合当前模型的残差。

回归提升树即用残差来拟合后续的分类器。

输入

训练数据 D={(x1,y1),...,(xN,yN)} D = { ( x 1 , y 1 ) , . . . , ( x N , y N ) }

过程


  • f(0)=0 f ( 0 ) = 0
  • m=1:M m = 1 : M

  • γmi=yifm1(xi) γ m i = y i − f m − 1 ( x i )
  • 利用残差 γ γ 拟合回归树 T(x,θm) T ( x , θ m )
  • 更新 fm(x)=fm1(x)+T(x,θm) f m ( x ) = f m − 1 ( x ) + T ( x , θ m )
  • 得到提升树

输出

提升树 fM(x) f M ( x )

梯度提升算法

上面的平方损失函数,利用上面的残差公式 γmi=yifm1(xi) γ m i = y i − f m − 1 ( x i ) 可以很方便的进行优化,如果对于更一般的损失函数而言,上面的残差公式 γmi=yifm1(xi) γ m i = y i − f m − 1 ( x i ) 就不适合了,因此这里引入梯度提升来计算残差

针对梯度提升,上面的算法有两个地方需要修改

一个是初始化:

f(0)=argmincNi=1L(yi,c) f ( 0 ) = a r g m i n c ∑ i = 1 N L ( y i , c )

一个是残差的计算,利用梯度提升公式计算:

γmi=[L(yi,f(xi))f(xi)]f(x)=fm1(x) γ m i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x )

bagging算法

上面的提升树算法我们利用了所有的训练数据,串行的的得到分类器,这种方法效率比较低下,无法并行操作,因此发明了bagging算法,可以并行的进行集成学习。

所谓的bagging算法,就是在训练数据中采样出m个训练样本的采样集,针对每个采样集训练一个基学习器,然后将这些基学习器组合生成最终的学习器。

对于分类任务,可以用简单投票的方式确定结果,对于回归任务,可以用平均值的方式得到最终的结果。

同时每次未被采样的数据还可以作为cross-validation的验证集。

bagging算法简单,并且可以并行,速度很快。由于采样集的样本不一致,因此天然的能够抗过拟合。但是对样本的数目要求一般比较高。

随机森林

树多的地方就是森林,因此随机森林就是以决策树作为基学习器的学习算法。

RF(Random Forest)是在以决策树为基学习器构建bagging的基础上,在决策树的训练过程中引入了随机属性的选择。

RF算法对决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后在子集中选择一个最优属性用于划分输入空间(一般大家都选择 k=log2d k = l o g 2 d )。

由于RF算法既随机选择了训练样本集,又随机选择了属性集,因此RF算法中的基学习器的多样性不仅来自于样本的扰动,还来自于属性的扰动,因此有很强的泛化能力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提升树,bagging与随机森林 的相关文章

  • Android常用检查判断方法

    自己工作中比较常用的一些判断检测 span class hljs keyword import span android app ActivityManager span class hljs keyword import span and
  • 小米、魅族状态栏字体变色整理

    span class hljs javadoc 设置小米手机状态栏字体图标颜色模式 xff0c 需要MIUIV6以上 span class hljs javadoctag 64 param span window 需要设置的窗口 span
  • C语言学习:初接触

    C程序结构 C程序结构主要包括以下部分 xff1a 预处理指令器 函数 变量 语句 amp 函数体 注释 用一个简单的 Hello World 代码说明 xff1a span class hljs preprocessor include
  • C语言学习:基本语法

    分号 如果你有其它编程语言的基础 xff0c 相信你已经明白了分号的意义 分号在C语言中与多数语言相同 xff0c 它代表了语句的结束 也就是说 xff0c 一个完整的语句必须以分号结尾 注释 注释就像是帮助文件一样 xff0c 它可以帮助
  • C语言学习:数据类型

    在C语言中 xff0c 数据类型可以分为以下几种 xff1a 类型描述基本类型C语言中的算术类型 xff0c 包含整数型和浮点型枚举类型C语言中的算术类型 xff0c 用来定义在程序中只能赋予其一定的离散整数值的变量 void类型类型说明符
  • 典型相关分析(CCA)

    CCA是数据挖掘中重要的算法 xff0c 可以挖掘出数据间的关联关系的算法 基础知识 如何衡量两个变量之间的相关性呢 xff1f 我们有相关系数 xff0c 如下所示 xff1a X Y 61 c o v X Y D X D Y X
  • Android 按键模拟输入事件和Monitor工具的使用

    有时候 xff0c 进行Android开发 xff0c 会遇到屏幕会失灵的情况 xff0c 但是显示无问题 xff0c 这时候可以使用一些工具 手段 xff0c 在电脑端控制模拟屏幕输入 xff0c 或者使用adb 相关命令模拟按键事件输入
  • Android APK获取平台系统签名权限

    1 修改AndroidManifest xml xff0c 改变uid为android uid system xff0c 使之与Settings能够共享数据空间 lt xml version 61 34 1 0 34 encoding 61
  • gradlew编译时出现Unsupported major.minor version 52.0

    Android apk命令行编译时 xff0c 出现如下错误 xff1a Unsupported major minor version 52 0 先摆上结论 xff1a 1 有可能是compileSdkVersion和buildToolV
  • Android NE发生定位辅助之addr2line

    当发生NE时 xff0c 可以通过addr2line来辅助定位发生点 举个例子 Exception Class Native NE Exception Type SIGABRT Current Executing Process pid 3
  • Android N编译之Out of memory error

    之前本地环境编译一直是正常的 xff0c 后来更新代码后 xff0c 出现编译不过 提示out of memory 但是查看swap和内存都还是够的 里面有个提示 xff0c try increasing heap size with ja
  • Android R源码Settings之NFC与Tap&pay

    Android R 又对 Tap amp pay菜单 进行了更新 xff0c 变得更加合理化 xff0c 人性化了 编辑于2020 4 20 12 24 10 xff09 Android R Tap amp pay菜单 如图可知 xff0c
  • [NOTE]Android N SmartLock缺少很多功能

    有个Android项目刚启动不久时 xff0c 测试SmartLock时 xff0c 发现里面只有On body detection xff0c Trusted places Trusted devices Trusted face和Tru
  • Launcher壁纸来源

    Launcher是个特殊APK xff0c 但说到底还是个应用 xff0c 想要在上面展示壁纸 xff0c 自然是来自应用本身 xff0c 要么就是Framework public资源 首先 xff0c 根据长按Launcher主界面空白处
  • Android N之hasSystemFeature

    当我们判断某一功能打开与否时 xff0c 一般会有个确认本功能是否支持的过程 xff0c 以便与为相关的功能初始化其他的环境 xff0c 例如 xff1a 蓝牙 NFC 例如 NFC HCE 两个的声明如下 xff1a Feature fo
  • Android Go项目预置应用Google GTS测试testPreloadedAppsTargetSdkVersion失败

    Android GO项目中预置的一个Weather应用 xff0c GTS测试通不过 据log提示 xff0c 是兼容的SDK目标版本过低导致 xff0c GO版本要求必须为API 26 43 含26 xff09 LOG如下 xff1a 0
  • 多维缩放算法(MDS)

    算法思想 MDS算法思想很简单 xff0c 一句话就是保持样本在原空间和低维空间的距离不变 因为距离是样本之间一个很好的分离属性 xff0c 对于大多数聚类算法来说 xff0c 距离是将样本分类的重要属性 xff0c 因此当我们降维后 xf

随机推荐

  • Gerrit 安装lfs插件

    一 下载lfs插件 https gerrit ci gerritforge com job plugin lfs bazel stable 2 16 这个是直接编译好的 二 安装插件 将下载的插件放在 GERRIT SITE plugins
  • 反编译so库破解so

    所需工具 1 IDA Pro v6 8 and Hex Rays Decompiler 2 WinHex 3 ARM ASM 背景 xff1a I2C通讯时报log CameraHal Marvin HAL MOCKUP HalReadI2
  • 长虹官方刷机包和刷机教程

    为了解决部分朋友因应用引起的电视死机 无法开机 系统被破坏等情形 xff0c 长虹电视团队特开此帖为朋友们提供刷机方法 xff0c 但刷机有风险 xff0c 如完全不懂刷机技巧的朋友需要谨慎操作哦 xff0c 如有疑问可以微信留言给我们 下
  • Android终端通过adb 配置静态IP和DNS

    有时我们需要使用命令行来配置eth0的IP信息 xff0c 这在linux系统是非常简单的 xff0c 网上也有很多资料 但是在Android系统 xff0c 就非常困难 xff0c 因为Android精简掉了很多linux命令 xff0c
  • 【官方】下载最新adb及安装驱动的方法

    Only adb 驱动 xff1a https adbdriver com downloads adb工具 xff1a https adbshell com upload adb zip https adbshell com downloa
  • 中芯微随身WIFI破解实体SIM卡槽(不拆机,无需切卡密码)

    目前网上卖的一些随身WIFI是中芯微的方案 MF782 部分产品限制用户使用实体SIM卡 只能使用内置eSIM 下面谈谈解决方案 1 中沃的没有限制 实体SIM卡优先 检测到插的有实体SIM卡 就使用实体SIM卡网络 2 另外一部分网上提供
  • 高通Android随身WIFI屏蔽商家远程控制断网

    nbsp nbsp nbsp nbsp 部分随身WIFI商家后台会监测用户是否使用的是自家的eSIM 若使用了外置卡槽或eSIM的ICCID改变就会断网 主要表现是先联网后突然变成飞行模式 或联网后开热点变飞行模式 这就是商家后台做了监测
  • Linux kernel make clean时忽略部分文件(不被删除)

    有时我们在运行make clean 时 xff0c 需要保留某些 o 文件 xff0c 这就需要我们修改 Makefile 文件 xff0c 下面以 linux 2 6 18 的 Makefile 为例 xff1a Files to ign
  • Audio参数讲解

    一 音频基础参数 frame bits 一帧数据的位数比如 xff1a 16bits 2ch frame bits 61 16 2 sample bits 采样位数 比如16bit 24bit 32bit period size 指一个周期
  • linux ALSA 驱动架构

    一 kernel Audio驱动架构主流有两大类 xff0c 一类是SOC Machine架构 xff0c 另一类是simple card架构 MTK QCom主要采用machine架构 xff0c rockchip采用simple car
  • adaboost提升算法

    引言 俗话说得好 xff0c 三个臭皮匠赛过诸葛亮 更主要的是三个臭皮匠好找 xff0c 一个诸葛亮太难找了 在机器学习里面也是一样的 我们可以设计出各种分类器 xff0c 然而分类器的效果确实不一而同的 xff0c 相对而言 xff0c
  • 长虹电视刷机固件包汇总

    为了解决部分朋友因应用引起的电视死机 无法开机 系统被破坏等情形 xff0c 快客服务特开此帖为朋友们提供刷机方法 xff0c 但刷机有风险 xff0c 如完全不懂刷机技巧的朋友需要谨慎操作 xff0c 用户自行刷机所产生问题自行负责 xf
  • WebRTC-集成qsv硬解码实现

    1 Window下QSV硬解码配置 在libavcodec codec list c下添加 amp ff h264 qsv decoder 在ffmpeg generate gni下加入 34 libavcodec h264idct c 3
  • ijkplayer-添加播放截图功能

    应用播放的时候需要截图 xff0c 可以在上层使用TexturView来使用截图 xff0c 不过太具有局限性呢 xff0c 还是在底层处理比较好 那么先分析下可以在哪里加截图呢 xff1f 看到网上很多做的都不能支持硬解截图 xff0c
  • avformat_seek_file及其flag含义

    我们从ijk中seek的处理流程来看ffmpeg的这个问题 int ffp seek to l FFPlayer ffp long msec assert ffp VideoState is 61 ffp gt is int64 t sta
  • 单例模式

    单例模式 xff1a include lt iostream gt using namespace std class Singleton public Singleton cout lt lt 34 Singleton虚构函数 34 lt
  • ffmpeg系列-解决ffmpeg获取aac音频文件duration不准

    这个问题是这样产生的 xff0c 一同事反应会随机出现ijk获取到的aac文件的duration不准 xff0c 发来一看 xff0c 确实不准 xff0c 在AE或者系统mediaplayer中得到的都是8 4秒 xff08 准确时间是M
  • 基于librtmp的推流实现

    1 推流 配置好rtmpdump库后 xff0c 我们可以先用命令行来推流看下效果 2 流程图 使用librtmp发布RTMP流的可以使用两种API xff1a RTMP SendPacket 和RTMP Write 使用RTMP Send
  • ijkplayer-音视频变速播放实现

    本文主要分析变速播放框架实现细节 xff0c 不分析sonic以及soundtouch变速算法 在我的sonic变速变调原理一文中会详细讲解基于基音周期来实现变速变调的原理 1 变速入口分析 从jni层的 setPropertyFloat函
  • 提升树,bagging与随机森林

    提升树是一种以分类树或者回归树为基本分类器的提升方法 对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可 而回归树则是根据残差来训练下一个分类器的回归二叉树 下面主要介绍一下回归提升树的算法 回归提升树 回忆一下 xff0