分类与回归树(CART)相关知识

经典算法详解--CART分类决策树、回归树和模型树 Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理。决策树创建过程分析了信息混乱度度量Gini指数、连续和离散特征的特殊处理、连续和离散特征共存时函数的特殊处理和后 阅读详情

CART算法

分类与回归树(CART)是应用广泛的算法,同样由特征选择、树的生成及剪枝组成,可以用于解决分类和回归问题。

ID3算法、C4.5算法分别使用了信息增益、信息增益比来选择特征,他们都使用了包含大量的对数运算的熵模型来计算样本纯度。而CART算法使用基尼系数来代替信息增益(比),基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

CART决策树的生成过程是递归构建二叉树的过程。对于分类树,使用基尼指数最小化准则;对回归树,使用平方误差最小化准则。

CART回归树生成

构建回归树有两个问题:

(1) 如何得到预测结果?

(2) 如何对输入空间进行划分?

一颗回归树是输入空间的一个划分,以及在划分单元的输出值。假设输入空间已经划分为M个: R 1 , R 2 , . . . , R M R_1, R_2, ..., R_M R1​,R2​,...,RM​,并且在每个单元 R m R_m Rm​有一个固定的输出值 c m c_m cm​,于是回归树模型可表示为:
f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x) = \sum_{m=1}^{M} c_m I(x \in R_m) f(x)=m=1∑M​cm​I(x∈Rm​)
可以用平方误差 ∑ x i ∈ R m ( y i − f ( x i ) ) 2 \sum_{x_i \in R_m} (y_i - f(x_i))^2 ∑xi​∈Rm​​(yi​−f(xi​))2来表示回归树的预测误差,用平方误差最小的准则求解每个单元的最优输出值。

对于第一个问题,单元 R m R_m Rm​上的 c m c_m cm​的最优值 c ^ m \hat c_m c^m​是 R m R_m Rm​上所有输入实例 x i x_i xi​对应的输出 y i y_i yi​的均值,即:
c ^ m = a v e ( y i   ∣   x i ∈ R m ) \hat{c}_m = ave(y_i \ | \ x_i \in R_m) c^m​=ave(yi​ ∣ xi​∈Rm​)
那么如何对输入空间进行划分?可以采用启发式的方法,选择样本x的第j个特征 x ( j ) x^{(j)} x(j)和它的均值s作为切分变量和切分点。定义两个区域:
R 1 ( j , s ) = { x   ∣   x ( j ) ⩽ s }   R 2 ( j , s ) = { x   ∣   x ( j ) > s } R_1(j, s) = \{x \ | \ x^{(j)} \leqslant s\}\\ \ R_2(j, s) = \{x \ | \ x^{(j)} > s\} R1​(j,s)={x ∣ x(j)⩽s} R2​(j,s)={x ∣ x(j)>s}
然后寻找最优切分变量 j 和最优切分点 s,具体地就是遍历所有特征的所有切分点,求解:
min ⁡ j , s   [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min_{j, s} \ [ \min_{c_1} \sum_{x_i \in R_1(j,s)} (y_i - c_1)^2 + \min_{c_2} \sum_{x_i \in R_2(j,s)} (y_i - c_2)^2] j,smin​ [c1​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2]
其中, c 1 c_1 c1​为R1数据集的样本输出均值, c 2 c_2 c2​为R2数据集的样本输出均值:
c ^ 1 = a v e ( y i   ∣   x i ∈ R 1 ( j , s ) ) ,   c ^ 2 = a v e ( y i   ∣   x i ∈ R 2 ( j , s ) ) \hat{c}_1 = ave( y_i \ | \ x_i \in R_1(j, s)), \ \hat{c}_2 = ave( y_i \ | \ x_i \in R_2(j, s)) c^1​=ave(yi​ ∣ xi​∈R1​(j,s)), c^2​=ave(yi​ ∣ xi​∈R2​(j,s))
遍历所有输入变量,找到最优的切分变量 j,构成一个对(j,s)。依次将输入空间划分为两个区域。对每个区域重复上述划分过程,直到满足停止条件位置,这样的回归树通常称为最小二乘回归树,算法叙述如下:

输入:训练数据集 D D D

输出:回归树 f ( x ) f(x) f(x)

步骤:

  1. 遍历变量 j j j,对固定的切分变 量 j j j 扫描切分点 s s s,得到满足下面关系的 ( j , s ) (j,s) (j,s)
    min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min\limits_{j,s}\left[\min\limits_{c_1}\sum\limits_{x_i\in R_1(j,s)}(y_i-c_1)^2+\min\limits_{c_2}\sum\limits_{x_i\in R_2(j,s)}(y_i-c_2)^2\right] j,smin​⎣⎡​c1​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2⎦⎤​

  2. 用选定的 ( j , s ) (j,s) (j,s), 划分区域并决定相应的输出值
    R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } c ^ m = 1 N ∑ x i ∈ R m ( j , s ) y j , x ∈ R m , m = 1 , 2 R_1(j,s)=\{x|x^{(j)}\leq s\}, R_2(j,s)=\{x|x^{(j)}> s\} \\ \hat{c}_m= \frac{1}{N}\sum\limits_{x_i\in R_m(j,s)} y_j, x\in R_m, m=1,2 R1​(j,s)={x∣x(j)≤s},R2​(j,s)={x∣x(j)>s}c^m​=N1​xi​∈Rm​(j,s)∑​yj​,x∈Rm​,m=1,2

  3. 对两个子区域调用(1)(2)步骤, 直至满足停止条件

  4. 将输入空间划分为 M M M个区域 R 1 , R 2 , … , R M R_1, R_2,\dots,R_M R1​,R2​,…,RM​,生成决策树:
    f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^M\hat{c}_mI(x\in R_m) f(x)=m=1∑M​c^m​I(x∈Rm​)

CART分类树的生成

分类树使用基尼指数选择最优特征,同时决定该特征的最优二值切分点。

假设有K个类,样本点属于k类的概率为 p k p_k pk​,则概率分布的基尼指数定义为:
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p) = \sum_{k=1}^{K}p_k (1 - p_k) = 1 - \sum_{k=1}^{K} {p_k}^2 Gini(p)=k=1∑K​pk​(1−pk​)=1−k=1∑K​pk​2
对于二分类问题:
G i n i ( p ) = 2 p ( 1 − p ) Gini(p) = 2p(1-p) Gini(p)=2p(1−p)
对于给定样本集合D,其基尼指数为:
G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D) = 1 - \sum_{k=1}^{K} (\frac{|C_k|}{|D|})^2 Gini(D)=1−k=1∑K​(∣D∣∣Ck​∣​)2
如果D按照特征A是否取某个值a,分割为子集 D 1 , D 2 D_1, D_2 D1​,D2​两个部分,即 D 1 = { ( x , y ) ∈ D   ∣   A ( x ) = a } , D 2 = D − D 1 D_1 = \{(x, y) \in D \ | \ A(x) = a\}, D_2 = D - D_1 D1​={(x,y)∈D ∣ A(x)=a},D2​=D−D1​,则在特征A的条件下,集合D的基尼指数为:
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D, A) = \frac{|D_1|}{|D|} Gini(D_1) + \frac{|D_2|}{|D|} Gini(D_2) Gini(D,A)=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)
Gini值越大,样本集合的不确定性也越大(与熵类似),因此每次选择Gini小的特征来划分。

连续值处理:

CART分类树对连续值的处理思路和C4.5是相同的,都是将连续的特征离散化。

具体来说,假设有m个样本,都包含连续特征A,特征A的取值从小到大排序后用: a 1 , a 2 , . . . , a m {a_1,a_2,...,a_m} a1​,a2​,...,am​表示,则CART算法取相邻两样本值的平均数,一共取得m-1个划分点,其中第i个划分点 T i T_i Ti​表示为: T i = a i + a i + 1 2 T_i = \frac{a_i+a_{i+1}}{2} Ti​=2ai​+ai+1​​。对于这m-1个点,分别计算以该点作为二元分类点时的基尼系数。选择基尼系数最小的点作为该连续特征的二元离散分类点。比如取到的基尼系数最小的点为 a t a_t at​,则小于 a t a_{t} at​的值为类别1,大于 a t a_{t} at​的值为类别2,这样我们就做到了连续特征的离散化。要注意的是,与ID3或者C4.5处理离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。

离散值处理:

如果某个特征A被选取建立决策树节点,如果它有A1,A2,A3三种类别,我们会在决策树上一下建立一个三叉的节点。这样导致决策树是多叉树。但是CART分类树使用的方法不同,他采用的是不停的二分,还是这个例子,CART分类树会考虑把A分成{A1}和{A2,A3},{A2}和{A1,A3} {A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的节点。同时,由于这次没有把特征A的取值完全分开,后面我们还有机会在子节点继续选择到特征A来划分A1和A3。这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立。

结合上面的知识,总结得到算法流程如下:

输入:训练数据集D,基尼系数的阈值,样本个数阈值。

输出:决策树T。

根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:

  1. 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是"或“否”,将D分割成 D 1 D_1 D1​和 D 2 D_2 D2​两部分,计算 A = a A=a A=a时的基尼指数。

  2. 在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。

  3. 对两个子结点递归地调用(1),,(2),直至满足停止条件。

  4. 生成CART决策树。

算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同-类),或者没有更多特征。

对于生成的决策树做预测的时候,假如测试集里的样本A落到了某个叶子节点,而节点里有多个训练样本,则对于A的类别预测采用的是这个叶子节点里概率最大的类别。

举个同样的例子:

在这里插入图片描述

分别用 A 1 , A 2 , A 3 , A 4 A_1,A_2,A_3,A_4 A1​,A2​,A3​,A4​表示年龄、有工作、有房子、贷款情况4个特征,则有:
G i n i ( D , A 1 = 1 ) = 5 15 ( 2 × 2 5 × ( 1 − 2 5 ) ) + 10 15 ( 2 × 7 10 × ( 1 − 7 10 ) ) = 0.44 G i n i ( D , A 1 = 2 ) = 0.48 G i n i ( D , A 1 = 3 ) = 0.44 \begin{aligned} & Gini(D,A_1=1)=\frac{5}{15}(2 \times \frac{2}{5} \times (1-\frac{2}{5})) + \frac{10}{15}(2 \times \frac{7}{10} \times (1-\frac{7}{10})) = 0.44 \\ & Gini(D,A_1=2)=0.48\\ & Gini(D,A_1=3)=0.44 \end{aligned} ​Gini(D,A1​=1)=155​(2×52​×(1−52​))+1510​(2×107​×(1−107​))=0.44Gini(D,A1​=2)=0.48Gini(D,A1​=3)=0.44​
由于 G i n i ( D , A 1 = 1 ) Gini(D,A_1=1) Gini(D,A1​=1)和 G i n i ( D , A 1 = 3 ) Gini(D,A_1=3) Gini(D,A1​=3)最小且相等,所以 A 1 , A 3 A_1, A_3 A1​,A3​都可以作为最优切分点。同理可以得到 A 2 , A 3 A_2,A_3 A2​,A3​的基尼指数:
G i n i ( D , A 2 = 1 ) = 0.32 G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A_2=1) = 0.32 \\ Gini(D,A_3=1) = 0.27 Gini(D,A2​=1)=0.32Gini(D,A3​=1)=0.27
由于 A 2 , A 3 A_2,A_3 A2​,A3​只有一个切分点,所以基尼指数最小的即为对应特征的最优切分点。

A 4 A_4 A4​的基尼指数:
G i n i ( D , A 4 = 1 ) = 0.36 G i n i ( D , A 4 = 2 ) = 0.47 G i n i ( D , A 4 = 3 ) = 0.32 Gini(D,A_4=1) = 0.36 \\ Gini(D,A_4=2) = 0.47\\ Gini(D,A_4=3) = 0.32 Gini(D,A4​=1)=0.36Gini(D,A4​=2)=0.47Gini(D,A4​=3)=0.32
G i n i ( D , A 4 = 3 ) Gini(D,A_4=3) Gini(D,A4​=3)最小,所以 A 4 = 3 A_4=3 A4​=3为 A 4 A_4 A4​的最优切分点。

A 1 , A 2 , A 3 , A 4 A_1,A_2,A_3,A_4 A1​,A2​,A3​,A4​的特征中, G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A_3=1)=0.27 Gini(D,A3​=1)=0.27最小,所以选择 A 3 A_3 A3​为最优特征, A 3 = 1 A_3=1 A3​=1为最优切分点,于是生成了两个子节点。左子节点是叶节点,右子节点则需要继续在 A 1 , A 2 , A 4 A_1,A_2,A_4 A1​,A2​,A4​中选择最优切分点,如此往复,知道所以节点都是叶节点。

CART 剪枝

CART回归树和CART分类树的剪枝策略除了在度量损失的时候一个使用均方差,一个使用基尼系数,算法基本完全一样,这里我们一起来讲。

CART剪枝算法分为两步:

  1. 首先从CART生成算法产生的原始决策树 T 0 T_0 T0​的底端开始,不断剪枝,直到 T 0 T_0 T0​的根节点,从而获得一个子树序列{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​};

  2. 通过交叉验证子树序列中的每个子树进行测试,从中选择最优子树作为最终的剪枝结果;

先看第一步,要明白如何构建{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​}。 T 0 T_0 T0​好理解,就是未经剪枝的决策树, T 1 T_1 T1​怎么来的?

T 1 T_1 T1​是 T 0 T_0 T0​的子树,意味着子树 T 1 T_1 T1​的损失函数至少要≤剪枝前 T 0 T_0 T0​的损失函数(剪枝前后损失函数不变,但剪枝后复杂度降低,亦可以剪枝)。CART树T剪枝时,子树T的损失函数如下:
C α ( T ) = C ( T ) + α ∣ T ∣ C_{\alpha}(T) = C(T) + \alpha |T| Cα​(T)=C(T)+α∣T∣
其中, C ( T ) C(T) C(T)为训练数据的预测误差,对回归而言可以是平方误差和,对分类而言可以是 s u m ( 每 个 叶 子 节 点 的 g i n i 值 × 叶 子 节 点 样 本 数 目 ) sum(每个叶子节点的gini 值\times叶子节点样本数目) sum(每个叶子节点的gini值×叶子节点样本数目)。

当α=0时,损失函数等于预测误差,相当于不进行剪枝,对应的最优子树即决策树本身;α越大,则惩罚越大,会得到更加简单的树,即剪枝幅度更大;

由于树的叶子个数是离散值,所以给定α后,必定存在某个子树 T α T_\alpha Tα​使得损失函数 C α ( T ) C_{\alpha}(T) Cα​(T)取得最小值。于是只要确定序列{ α 0 , α 1 , . . . , α n α_0,α_1,...,α_n α0​,α1​,...,αn​}就能确定对应的最佳子树序列{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​}。因此,目标为找到合适的α序列的构造。

我们将α序构造为递增的序列,则子树序列T是满树到根节点树的递减树序列。首先令 α 0 = 0 α_0=0 α0​=0,决策树本身为 T 0 T_0 T0​,在 T 0 T_0 T0​上进行第一次剪枝(构造 α 1 α_1 α1​),由于剪枝后的损失函数要≤剪枝前,因此,如果想在内部节点t处剪枝(即只保留节点t,左右子树删除),只需要将问题聚焦于节点t以及t节点对应的子树 T t T_t Tt​上。

若在节点t处需要剪枝,则剪枝后的t变为了叶节点,对应的损失函数为:
C α ( t ) = C ( t ) + α × 1 (1) C_\alpha(t) = C(t) + \alpha \times 1 \tag 1 Cα​(t)=C(t)+α×1(1)
若不进行剪枝,则t及其子树 T t T_t Tt​的损失函数为:
C α ( T t ) = C ( T t ) + α ∣ T t ∣ (2) C_\alpha(T_t) = C(T_t) + \alpha | T_t | \tag 2 Cα​(Tt​)=C(Tt​)+α∣Tt​∣(2)
由于剪枝是为了降低损失函数或者简化树模型,于是有:
C α ( T t ) ≤ C α ( t ) C_\alpha(T_t) \le C_\alpha(t) Cα​(Tt​)≤Cα​(t)
将式子(1)、(2)代入得到:
C ( t ) + α ≤ C ( T t ) + α ∣ T t ∣ (2) C(t) + \alpha \le C(T_t) + \alpha | T_t | \tag 2 C(t)+α≤C(Tt​)+α∣Tt​∣(2)
解得:
α ≥ C ( t ) − C ( T t ) ∣ T t ∣ − 1 \alpha \ge \frac{C(t) - C(T_t)}{|T_t| - 1} α≥∣Tt​∣−1C(t)−C(Tt​)​
即当 α ∈ [ 0 , C ( t ) − C ( T t ) ∣ T t ∣ − 1 ) \alpha \in [0, \frac{C(t) - C(T_t)}{|T_t| - 1}) α∈[0,∣Tt​∣−1C(t)−C(Tt​)​)时,不满足剪枝条件,若要满足剪枝条件,至少有 α m i n = C ( t ) − C ( T t ) ∣ T t ∣ − 1 \alpha_{min} = \frac{C(t) - C(T_t)}{|T_t| - 1} αmin​=∣Tt​∣−1C(t)−C(Tt​)​,此时虽然损失函数没有减少,但是可以简化决策树,达到了剪枝的条件。我们记:
g ( t ) = α m i n = C ( t ) − C ( T t ) ∣ T t ∣ − 1 g(t) =\alpha_{min} = \frac{C(t) - C(T_t)}{|T_t| - 1} g(t)=αmin​=∣Tt​∣−1C(t)−C(Tt​)​
对于一颗要剪枝的树,自下而上地对内部每个内部节点 t 计算 g ( t ) g(t) g(t),然后减去 g ( t ) g(t) g(t)取值最小的 T t T_t Tt​,将得到的子树作为 T 1 T_1 T1​。为什么取最小的 g ( t ) g(t) g(t),是因为要保证 α \alpha α序列是递增的,每次取最小的 α m i n \alpha_{min} αmin​可以保证不遗漏任何可以剪枝的情况。每次得到 α m i n \alpha_{min} αmin​的同时, T t T_t Tt​也随之得到了,于是可以同时得到序列{ α 0 , α 1 , . . . , α n α_0,α_1,...,α_n α0​,α1​,...,αn​}和{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​}。

接下来进行第二步,在获得了可以剪枝的最优子树序列{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​}之后,再将每棵树进行交叉验证,交叉验证结果最好的那颗子树便是最终的剪枝结果。

CART剪枝算法流程如下:

输入: CART算法生成的决策树 T 0 T_0 T0​

输出: 最优决策树 T α T_α Tα​

(1) 设 k = 0 , T = T 0 k=0, T=T_0 k=0,T=T0​

(2) 设 α = + ∞ α= +∞ α=+∞。.

(3) 自下而上地对各内部结点 t 计算 C ( T t ) , ∣ T t ∣ C(T_t), |T_t| C(Tt​),∣Tt​∣以及
g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 α = m i n ( α , g ( t ) ) g(t) = \frac{C(t) - C(T_t)}{|T_t| - 1} \\ α = min(α, g(t)) g(t)=∣Tt​∣−1C(t)−C(Tt​)​α=min(α,g(t))

这里, T t T_t Tt​表示以t为根结点的子树, C ( T t ) C(T_t) C(Tt​)是对训练数据的预测误差, ∣ T t ∣ |T_t| ∣Tt​∣ 是 T t T_t Tt​的叶结点个数。

(4) 对 g ( t ) = α g(t)=\alpha g(t)=α的内部结点t进行剪枝,并对叶结点t以多数表决法决定其类,得到树T。

(5) 设 k = k + 1 , α k = α , T k = T k=k+1, \alpha_k=\alpha, T_k= T k=k+1,αk​=α,Tk​=T

(6) 如果 T k T_k Tk​不是由根结点及两个叶结点构成的树,则回到步骤(2); 否则令 T k = T n T_k= T_n Tk​=Tn​。

(7) 采用交叉验证法在子树序列{ T 0 , T 1 , . . . , T n T_0,T_1,...,T_n T0​,T1​,...,Tn​}中选取最优子树 T α T_{\alpha} Tα​

参考文章:

《统计学习方法 第二版》

决策树算法原理(上)

决策树算法原理(下)

cart树怎么进行剪枝?[椒盐砒霜叶小沐]

1. 分类与回归树原理(CART) 1. 简介 分类与回归树(Classification And Regression Tree),采用二分递归分割技术,将当前样本集划分成两个子集,即其结构为二叉树,每个内部节点均只有两个分支。左分支为特征值为True的样本集合,右分支为特征取值为False的样本集合。 CART既可以处理连续型特征,也可以处理离散型特征,基于预测值的取值类型不同,可划分成回归树和分类树两种。 预测值为连续型变量,则CART生成回归树。 预测值为离散型变量,则CART生成分类树。 2... 阅读详情

相关推荐

CART分类回归树

这一篇主要是CART,有几个重点的词语先写下来,重点哦:基尼指数(Gini index,跟经济学的基尼系数长这么像,八杆子打得着吗)、最小二乘回归树(least squares regression tree) CART:classification and regression tree。分类回归树。 简单的说呢,CART就是个二叉树(广义的决策树并不一定就是二叉树,可能好几叉。。。哈哈),所

learnee的专栏 9468

决策树6:分类与回归树CART

0x01 概念介绍 1.1 CART算法CART算法:Classification And Regression Tree。顾名思义,CART算法既可以用于创建分类树(Classific...

木东居士 2598

机器学习算法之CART(分类和回归树)

CART算法介绍: 分类和回归树(CART)是应用广泛的决策树学习方法。CART同样由特征选择,树的生成和减枝组成,既可以用于分类也可以用于回归。CART的生成就是递归的构建二叉决策树的过程。对回归树用平方误差最小化(RMSE),对分类树用基尼指数最小化准则,进行特征选择,生成二叉树。1.回归树生成的算法介绍 输入:训练数据集D 输出:回归树f(x) 在训练数据集所在的输入空间中,递归的将每

chenbinbin的专栏 6100

cart回归树的理解

id3不能直接处理连续性的特征,需要将连续性的转化成离散的,但是会破坏连续性特征的内在结构。 一、概念 CART全称叫Classification and Regression Tree。首先要强调的是CART假设决策树是二叉树,内部结点特征的取值只有“是”和“否”,左分支是取值为“是”的分支,有分支则相反。这样的决策树等价于递归地二分每个特征。 CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CA.

FY_2018的博客 5215

【机器学习|学习笔记】分类树和回归树(Classification and regression trees)的起源、发展、应用与前景,附代码实现示例。(一)

【机器学习|学习笔记】分类树和回归树(Classification and regression trees)的起源、发展、应用与前景,附代码实现示例。(一)

2401_89898861的博客 1121

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 513

什么是CART回归树

CART回归树是一种决策树算法,用于解决回归问题。本文详细介绍了CART 回归树的构建步骤:1.选择分裂特征和分裂点;2.计算分裂的优化标准;3.递归划分数据集;4.叶子节点的预测。树的分裂标准 - 最小化方差,预测过程,树的剪枝(Pruning),CART 回归树的优点,并进行了举例说明。

彬彬侠的博客 1183

从零到一:Ubuntu22.04下VSCode与中文输入法的深度整合指南

本文详细介绍了在Ubuntu22.04系统中如何深度整合VSCode与中文输入法,包括环境准备、安装方案对比、输入法配置及常见问题解决方案。通过fcitx框架优化中文输入体验,提供从基础设置到高级调试的全方位指南,帮助开发者提升在Linux环境下的开发效率。

weixin_29158047的博客 477

CART回归树(python实现)

CART树全名叫做分类回归树,它既可以用于分类还可以用于回归,这里主要讲解回归树。回归树从字面上理解就是使用树模型来做回归问题。

qq_45830471的博客 1806

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 253

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 249

分类与回归树(CART)

一、CART简介   分类与回归树(calssification and regression tree,CART)是决策树算法中的一种,与其他决策树算法相同,同样由特征选择,树的生成与剪枝组成。CART被广泛应用,且被用于树的集成模型,例如,GBDT、RF等集成算法的基学习器都是CART树。决策树是典型的非线性模型,GBDT和RF因此也是非线性模型。   决策树的经典算法包括ID3、C4.5...

weixin_33896726的博客 1422

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 418

分类与回归树(classification and regression tree,CART)之回归

分类与回归树(classification and regression tree,CART)之回归 写在前面: 因为正在看提升树,所以又去看了李航老师《统计学习方法》的CART算法的回归部分,看完莫名想起了本科导师的名言:国内人写书,喜欢简单问题复杂化,复杂问题超级复杂化。可能是我境界不够,我不明白两个for循环的事情为何会叙述的如此复杂。。复杂到你可能得花费一些时间去思考他想表达什么,复杂到你...

天泽28的专栏 1万+

2026中银杯区块链赛项备赛全攻略:从任务书拆解到高分技巧

区块链技术正从概念走向工程化落地,其核心价值在于通过分布式账本、智能合约与共识机制,构建可信、透明、可追溯的业务协作网络。在供应链溯源、存证、资产流转等场景中,区块链应用已从单一技术验证转向完整业务系统交付,这对开发者的综合能力提出了更高要求。对于职业院校技能大赛而言,选手不仅需要掌握联盟链底层搭建、Solidity合约开发、前后端应用联调等技术,还需具备规范交付与团队协作的工程素养。围绕2026年中银杯湖北省职业院校技能大赛区块链技术应用赛项,本文深入拆解任务书模块与评分逻辑,梳理底层链搭建、智能合约开发

weixin_27960253的博客 333

使用 Prometheus 监控 Spring Boot 应用

本文介绍了使用SpringBoot+Prometheus+Grafana实现应用监控的方案。首先在SpringBoot项目中集成Micrometer和Actuator组件,通过配置暴露Prometheus监控端点。接着配置Prometheus采集应用指标数据,并通过Grafana可视化展示。具体步骤包括:1)SpringBoot集成Micrometer;2)配置Prometheus抓取应用指标;3)安装Grafana并导入SpringBoot监控模板;4)展示JVM和业务指标。该方案可以实现对SpringB

蔡定努 430

CART分类回归树分析与python实现

引言前面我们分享过一篇决策树算法叫ID3:ID3决策树原理分析及python实现。首先我们来回顾下ID3算法。ID3每次选取最佳特征来分割数据,这个最佳特征的判断原则是通过信息增益来实现的。这种按某种特征切分完数据集后,当前特征在下次切分数据集时就不再起作用,因此会存在切分方式过于迅速地问题。ID3算法还存在另一个问题就是它不能直接处理连续型特征,因此算法需要改进。于是有人提出了二元切分法很好的解决

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 8471

BDD测试用例:Playwright的MCP Server实战

Playwright MCP Server建立了大模型和真实的浏览环境之间的桥梁,可以让大模型操作多款浏览器完成测试任务。

Criss@陈磊 444

【机器学习】监督学习-决策树-CART(Classification and Regression Tree,分类与回归树)详尽版

CART(分类与回归树)是一种决策树算法,由 Breiman 等人在 1984 年提出。它用于构建分类树(Classification Tree)或回归树(Regression Tree),以解决分类和回归问题。CART 方法的核心思想是通过递归二分(Binary Recursive Partitioning)将数据集划分成两个子集,最终构建一棵树。

IT古董 3992

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CART回归树

1 什么是CART CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住一下关键点: (1) CART既能是分类树,又能是回归树 (2) CART是分类树时,采用GINI指数作为节点分裂的依据;当CART是回归树时,采用样本的最小方差作为节点分裂的依据。 (3) CART是一棵二叉树 分类树的作用是通过一个对象的特征来预测该对象所属的类别,而回归树的目的是根据一...

luoyehuixuanaaaa的博客 4349

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

决策树之CART 算法(回归树,分类树)

CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树。 ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树。 同时 CART 决策树比较特殊,既可以作分类树,又可以作回归树。 什么是分类树,什么是回归树呢? 1.分类树可以处理离散数据,也就是数据种类有限的数据,它输出的是样本的类别,而回归树可以对连续型的数值进行预测,也就是数据在某个区间内都有取值的可能,它输出的是一个数值。 2.决策树的核心就是寻找纯净的

Persist_bcl的博客 4962

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

决策树之CART(分类回归树)详解

决策树之CART(分类回归树)详解 主要内容 CART分类回归树简介 CART分类回归树分裂属性的选择 CART分类回归树的剪枝 1、CART分类回归树简介   CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CART生成回归决策树。数据对象的属性特征为离散型或连续型,并不是区别分类树...

zhihua_oba的博客 6万+

CART分类与回归树

决策树的类型 (1)分类树:输出是样本的类标; (2)回归树:输出是一个实数 (例如房子的价格,病人呆在医院的时间等)。        分类回归树(CART,Classification And Regression Tree)也属于一种决策树, 包含了上述两种决策树,之前我们介绍了基于ID3算法和C4.5算法的决策树。这里只介绍CART是怎样用于分类的。       分类回归树是一

redis的专栏 1664

【机器学习】CART分类树、回归树算法

一、定义 CART(Classification and Regression Tree)即分类回归树算法。其决策树的生成就是递归的构建二叉决策树的过程。每次划分都把当前样本集划分为两个子样本集。对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则,进行特征选择,生成二叉树。 二、分裂次数 假设某属性存在q个可取值,那么该属性作为分支属性时,生成两个分支的分裂方法共有(2q−1)−1(2q-...

小马日记 2013

【机器学习】十、分类和回归树CART原理

一文详解,分类和回归树算法背后原理。码字不易,喜欢请点赞,谢谢!!! 一、前言 分类和回归树(Classification And Regression Trees),简称CART,是1984年提出来的既可用于分类,又可用于回归的树。CART被称为数据挖掘领域内里程碑式的算法。 上一节介绍了决策树的ID3和C4.5算法,后面说到了C4.5算法存在几点不足,主要为,生成多叉树;容易过拟合;只能用于...

Asher117的博客 1674

CART-分类和回归树

之前在博文 决策树归纳 中,我介绍了用决策树进行分类的算法,包括ID3和C4.5。然而决策树不仅可以用来做数据分类,也可用于做数据回归。1984年Breiman,Friedman,Olshen等人出版了著作《Classification and Regression Trees》(简称CART)介绍了二叉决策树的产生。他们给出了用二叉决策进行树数据分类和回归的方法。 在阅读本文之前,我假设读者已...

guoziqing506的博客 3833
上一篇: 基于ID3、C4.5算法的决策树相关知识
下一篇: Adaboost算法和提升树算法
VariableX
博客等级 码龄7年 142粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值