python举例cart回归树_荐 python程序实现CART回归树算法...

本文详细介绍了CART回归树的算法原理,包括模型定义、误差平方和最小化选择特征以及停止迭代的条件。通过示例展示了CART回归树的Python实现,包括计算误差平方和、选择最优特征及取值的函数,以及决策树的构建过程。最后,提供了一个简单的类封装,实现了训练和预测功能。然而,文章指出未进行后剪枝可能导致过拟合风险,暗示了剪枝的重要性。
摘要由CSDN通过智能技术生成

算法原理

CART树属于决策树模型,它可以用于分类和回归问题,这两者的不同主要体现在特征选择上,CART分类树基于Gini系数最小化,而CART回归树是基于误差平方和最小化。另外,CART树区别于其他树模型的特点之一是它是一类二叉树模型,每次进行特征选择时都将数据集分成“是”或“否”这两种。本文将讲解CART回归树模型的原理以及程序实现。

模型

已知一组包含nnn个样本的训练集

{xi,yi}i=1n,xi∈Rt,yi∈R\{x_i,y_i\}_ {i=1}^n,x_i\in\mathbb R^t,y_i\in\mathbb R{xi​,yi​}i=1n​,xi​∈Rt,yi​∈R

其中,每个样本xix_ixi​都有ttt个特征(假设每个特征都是连续值),输出变量yiy_iyi​也是连续值。现在的目的是希望通过对训练集进行训练,生成决策树。之后往模型中代入新的样本xjx_jxj​,得到预测的连续值yjy_jyj​。

原理

CART树生成主要包括

1、遍历选择最优特征

2、按特征进行分类

3、迭代前两步

4、停止迭代

遍历选择最优特征

CART回归树的特征选择是基于误差平方和最小化。以一个节点的最优特征选择为例,因为知道一个节点是如何划分的也就可以知道如何划分所有节点,这是一个迭代的过程。假设当前节点的数据集为NNN,依次将每个特征的每个取值sss作为阈值,将数据集分为两类,分别为

N1={(x,y)∣Aj(x)≤s,(x,y)∈N}N_1=\{(x,y)|A_j(x)\leq{s},(x,y)\in{N}\}N1​={(x,y)∣Aj​(x)≤s,(x,y)∈N}

N2={(x,y)∣Aj(x)>s,(x,y)∈N}N_2=\{(x,y)|A_j(x)>{s},(x,y)\in{N}\}N2​={(x,y)∣Aj​(x)>s,(x,y)∈N}

其中,Aj(x)A_j(x)Aj​(x)表示样本xxx的第jjj个特征的取值,得到这两类数据集后,便可以计算它们的预测输出值y^\hat{y}y^​,是它们各自的数据集中yyy变量的均值。它们的预测输出值分别为

y^N1=1∣N1∣∑(x,y)∈N1y\hat{y}_{N_1}=\frac{1}{|N_1|}\sum_{(x,y)\in{N_1}}yy^​N1​​=∣N1​∣1​(x,y)∈N1​∑​y

y^N2=1∣N2∣∑(x,y)∈N2y\hat{y}_{N_2}=\frac{1}{|N_2|}\sum_{(x,y)\in{N_2}}yy^​N2​​=∣N2​∣1​(x,y)∈N2​∑​y

然后计算这两类的误差平方总和

e(N,j,s)=∑(x,y)∈N1(y−y^N1)2+∑(x,y)∈N2(y−y^N2)2e(N,j,s)=\sum_{(x,y)\in{N_1}}(y-\hat{y}_ {N_1})^2+\sum_{(x,y)\in{N_2}}(y-\hat{y}_ {N_2})^2e(N,j,s)=(x,y)∈N1​∑​(y−y^​N1​​)2+(x,y)∈N2​∑​(y−y^​N2​​)2

因为数据集NNN的样本是有限的,样本的特征是有限的,特征的取值也是有限的,因此可以通过遍历所有特征的所有取值,得到一个e(N,j,s)e(N,j,s)e(N,j,s)序列,并从该序列中选择数值最小的一个作为当前节点的特

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值