cart树剪枝

当前子树的损失函数:

$C_a(T) = C(T) + a|T|$, 其中$C(T)$为对训练数据的预测误差,$|T|$为树的叶子结点数目,反映模型的复杂度。对固定的$a$,一定存在使损失函数$C_a(T)$最小的子树,将其表示为$T_a$, 极端情况,当 $a = 0$时,整体树是最优的,当$a -> \infty  $时,根节点组成的单节点树是最优的。

对应于每一个参数,剪枝后的子树是唯一的。在算法中,给定参数,找寻损失函数最小的子树,也就是说是一一对应的!并不存在一个对应于多个子树。CART剪枝算法中将用到该基本假设。因为当$a$大的时候,最优子树$T_a$偏小,当$a$小的时候,最优子树$T_a$偏大。

从最宏观的角度去考虑的话,就是利用生成。CART剪枝算法的核心思想就是说,一个复杂的决策树,不管多复杂,都能生成有限个数的子树,我们记作那么我们只要找寻到对应于每一个子树的,即得到对应的子树!没错,抽象一下,从【有限个数的】中找寻对应的【

或者充分小:

决策树叶结点越多,不确定性越低。

当增大时,总有那么一个点,能够使得:

当继续增大时,

所以我们只要取时,当且仅当时,剪枝必然发生。

剪枝已经发生,此时,对应于每一个子结点t会生成不同的我们记作,由此得:
剪枝的决策树什么时候最优?对于当前参数而言,能够找到这样的t,使得

然而在这里为了能够求得的一个序列,直接最小化了

找的即找到了子结点t,即完成了剪枝,即找到了最优子树

有了上述的步骤,为了得到决策树的所有子序列,直接递归下去,直到根节点即可。在这一过程中,不断地增加的值,产生新的区间。

 采用交叉验证法在子树序列中选取最优子树。

https://www.zhihu.com/question/22697086

时间: 2024-10-26 11:09:00

cart树剪枝的相关文章

机器学习笔记(2)——CART树

CART树 CART树与上一篇文章提到的ID3.C4.5的区别在于: (1)CART树只能够生成2个结点,即CART树是一棵二叉决策树,而后两者在进行划分时可以根据特征值的种类生成2个以上的结点. (2)CART分类树的划分依据是基尼指数(Gini index)最小化准则,而后两者是根据熵的最小化准则. (3)CART树可以实现回归和分类两个功能,而后两者只能用作分类. 下面首先介绍回归树的生成 回归树 回归树的主要问题同样是如何对输入空间进行划分. 这里采用了启发式算法,选择输入空间中的第j个

Opencv研读笔记:haartraining程序之cvCreateCARTClassifier函数详解(CART树状弱分类器创建)~

cvCreateCARTClassifier函数在haartraining程序中用于创建CART树状弱分类器,但一般只采用单一节点的CART分类器,即桩分类器,一个多节点的CART分类器训练耗时很多.根据自己的测试,要等差不多10分钟(2000正样本.2000负样本)才能训练完一个3节点的弱分类器,当然,总体的树状弱分类器的数目可能也会减少1/2.之所以将此函数拿出来说说,主要是因为在网上找不到针对这个函数的详细说明,同时,CART的应用十分广泛,自己也趁这个机会好好学学,把自己的一点理解分享给

LibreOJ #6190. 序列查询(线段树+剪枝)

莫队貌似是过不了的,这题是我没见过的科技... 首先区间按右端点排序,然后一个扫描线,扫到某个区间右端点时候计算答案,线段树上节点的信息并不需要明确定义,我们只要求线段树做到当前扫到now时,查询[L,now]即为这一段的答案. 朴素的不加优化的做法,我们在每一个点R加进来的时候要更新1~R-1所有点,这样显然是会TLE的. 强调一遍我们只要求线段树做到当前扫到now时,查询[L,now]即为这一段的答案,因此我们记录一下更新到现在的最小的绝对值mn,对于线段树上每一节点都维护一个set,维护这

hdu 1979 DFS + 字典树剪枝

http://acm.hdu.edu.cn/showproblem.php?pid=1979 Fill the blanks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 373    Accepted Submission(s): 155 Problem Description There is a matrix of 4*4, yo

HDU 5828 Rikka with Sequence (线段树+剪枝优化)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828 给你n个数,三种操作.操作1是将l到r之间的数都加上x:操作2是将l到r之间的数都开方:操作3是求出l到r之间的和. 操作1和3就不说了,关键是开方操作. 一个一个开方,复杂度太高,无疑会T.所以我们来剪枝一下. 我们可以观察,这里一个数最多开方4,5次(loglogx次)就会到1,所以要是一段区间最大值为1的话,就不需要递归开方下去了.这是一个剪枝. 如果一段区间的数都是一样大小(最大值等于

D - Can you answer these queries? (线段树+剪枝)

题目链接:https://vjudge.net/contest/332656#problem/D 思路:因为根号运算n衰减的很快,所以在极少数的操作内它就会变成1,所以当整个区间内的值都变成1时直接返回,反之暴力更新叶子结点就好 1 #include <math.h> 2 #include <stdio.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <string> 6 #i

CART分类与回归树 学习笔记

CART:Classification and regression tree,分类与回归树.(是二叉树) CART是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成.它主要用来处理分类和回归问题,下面对分别对其进行介绍. 1.回归树:使用平方误差最小准则 训练集为:D={(x1,y1), (x2,y2), …, (xn,yn)}. 输出Y为连续变量,将输入划分为M个区域,分别为R1,R2,…,RM,每个区域的输出值分别为:c1,c2,…,cm则回归树模型可表示为: 则平方误差为: 假如使

统计学习方法:CART算法

作者:桂. 时间:2017-05-13  14:19:14 链接:http://www.cnblogs.com/xingshansi/p/6847334.html . 前言 内容主要是CART算法的学习笔记. CART算法是一个二叉树问题,即总是有两种选择,而不像之前的ID3以及C4.5B可能有多种选择.CART算法主要有回归树和分类树,二者常用的准则略有差别:回归树是拟合问题,更关心拟合效果的好坏,此处用的是均方误差准则; 分类树是分类问题,更像是离散变量的概率估计,用与熵类似的Gini系数进

机器学习之树模型(一)

树模型主要有ID3.C4.5.C5.0.OC1以及CART等,使用最多的树模型为CART,sklearn中的决策树模型是基于CART的. 在介绍树模型之前先介绍一下信息熵.信息增益以及GINi系数. 信息熵:熵度量了事物的不确定性,越不确定的事物,它的熵就越大. 信息增益:它度量了在知道当前特征之后类别的不确定性所减少的程度.信息增益越大不确定性减少的程度越大,对类别的确定越有利. 基尼系数的性质与信息熵一样:度量随机变量的不确定度的大小. 基尼指数Gini(D)表示集合D的不确定性,基尼指数G