《统计学习方法》读书笔记-----决策树:CART算法

本文介绍了CART模型的基本原理,包括回归树与分类树的生成算法。详细解释了如何通过平方误差最小化准则生成回归树,以及如何使用基尼指数选择最优特征值生成分类树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 概述
分类与回归树(classification and regression tree, CART)模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法,既可以用于分类也可以用于回归。
CART是在给定输入随机变量XX条件下输出随机变量Y的条件概率分布的学习方法。主要由以下两步组成:
(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标注。

1. CART生成:
决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小化准则,对分类树用基尼(Gini index)最小化准则,进行特征选择,生成二叉树。

1.1 回归树的生成
一个回归树对应着输入空间(特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为MM个单元R1,R2,...,RM,并且在每个单元RmRm上有一个固定的输出值cmcm,于是回归树模型可以表示为:

f(x)=m=1McmI(xRm)f(x)=∑m=1McmI(x∈Rm)

当输入空间的划分确定时,可以用平方误差xRm(yif(xi))2∑x∈Rm(yi−f(xi))2来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。易知,单元RmRm上的cmcm的最优值c^mc^mRmRm上的所有输入实例xixi对应的输出yiyi的均值,即:
c^m=ave(yi|xiRm)c^m=ave(yi|xi∈Rm)

问题是怎么对输入空间进行划分,这里采用启发式的方法,选择第jj个变量x(j)和它的取值ss作为切分变量和切分点,并定义两个区域:
R1(j,s)={x|x(j)s}R2(j,s)={x|x(j)>s}R2(j,s)={x|x(j)>s}

然后寻找最优切分变量jj和最优切分点s,求解:
minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]
对固定输入变量jj可以找到最优切分点s
c^1=ave(yi|xiR1(j,s))c^1=ave(yi|xi∈R1(j,s))c^2=ave(yi|xiR2(j,s))c^2=ave(yi|xi∈R2(j,s))
历遍所有输入变量,找到最优的切分变量jj,构成一个对(j,s)。依次将输入空间划分为两个区域,并重复以上过程。

最小二乘回归树生成算法
输入:训练数据集DD
输出:回归树f(x)
在训练数据集所在输入空间中,递归地将每个区域划分为两个子区域,并决定每个子区域上的输出值,构建二叉决策树:
(1)选择最优切分变量jj与切分点s,求解

minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]

遍历变量jj,对固定的切分变量j扫描切分点ss,选择使上式达到最小值的对j,s
(2)用选定的对j,s(j,s)划分区域并决定相应的输出值:
R1(j,s)={x|x(j)s}R2(j,s)={x|x(j)>s}R1(j,s)={x|x(j)≤s},R2(j,s)={x|x(j)>s}

c^m=1NmxiRm(j,s)yi,xRm,m=1,2c^m=1Nm∑xi∈Rm(j,s)yi,x∈Rm,m=1,2

(3)继续对两个子区域调用步骤(1),(2),直至满足停止条件。
(4)将输入空间划分为MM个区域R1,R2,...,Rm,生成决策树:
f(x)=m=1Mc^mI(XRm)f(x)=∑m=1Mc^mI(X∈Rm)

1.2 分类树的生成
分类树采用基尼指数选择最优特征值,同时决定该特征的最优二值切分点。
基尼指数的定义:
分类问题中,假设有KK个类,样本点属于第k类的概率为pkpk,则概率分布的基尼指数定义为:

Gini(p)=k=1Kpk(1pk)=1p=1Kp2kGini(p)=∑k=1Kpk(1−pk)=1−∑p=1Kpk2

如果样本集合DD根据特征A是否取某一可能值aa被分割成D1D2D2两部分,即:

D1={(x,y)D|A(x)=a},D2=DD1D1={(x,y)∈D|A(x)=a},D2=D−D1

则在特征AA的条件下,集合D的基尼系数定义为
Gini(D,A)=D1DGini(D1)+D2DGini(D2)Gini(D,A)=D1DGini(D1)+D2DGini(D2)

基尼指数Gini(D)Gini(D)表示集合的不确定性,基尼指数Gini(D,A)Gini(D,A)表示经A=aA=a分割后集合的不确定性,基尼指数越大,样本集合的不确定性也就越大,这一点与熵相似。

决策树生成算法
输入:训练数据集DD,停止计算的条件;
输出:CART决策树
根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征AA,对其可能取的每一个值a,根据样本点对A=aA=a的测试为“是”或“否”将DD分割为D1D2D2两部分,利用

Gini(D,A)=D1DGini(D1)+D2DGini(D2)Gini(D,A)=D1DGini(D1)+D2DGini(D2)

计算A=aA=a时的基尼指数。
(2)在所有可能的特征AA以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中取。
(3)对两个子结点递归地调用(1),(2),直至满足停止条件。
(4)生成CART决策树。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值