机器学习之分类与回归树(CART)

CART(Classification and Regression Tree)是一种二叉决策树算法,用于处理分类和回归任务。它通过基尼指数或均方误差选择最优特征进行划分。在分类任务中,CART生成基尼指数最小的二叉树;在回归任务中,它以最小化平方误差为目标。CART剪枝通过代价复杂度函数平衡模型复杂度和预测误差,以防止过拟合。文章还介绍了如何使用Python的Sklearn库实现CART模型。
摘要由CSDN通过智能技术生成

1.分类与回归树简介

分类与回归树的英文是Classfication And Regression Tree,缩写为CART。CART算法采用二分递归分割的技术将当前样本集分为两个子样本集,使得生成的每个非叶子节点都有两个分支。非叶子节点的特征取值为TrueFalse,左分支取值为True,右分支取值为False,因此CART算法生成的决策树是结构简洁的二叉树。CART可以处理连续型变量和离散型变量,利用训练数据递归的划分特征空间进行建树,用验证数据进行剪枝。

  • 如果待预测分类是离散型数据,则CART生成分类决策树。
  • 如果待预测分类是连续性数据,则CART生成回归决策树。

2.CART分类树

2.1算法详解

CART分类树预测分类离散型数据,采用基尼指数选择最优特征,同时决定该特征的最优二值切分点。分类过程中,假设有K个类,样本点属于第k个类的概率为Pk,则概率分布的基尼指数定义为

G i n i ( p ) = ∑ k = 1 m p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=\sum_{k=1}^{m}p_k(1-p_k)=1-\sum_{k=1}^{K}p_{k}^{2} Gini(p)=k=1mpk(1pk)=1k=1Kpk2
根据基尼指数定义,可以得到样本集合D的基尼指数,其中Ck表示数据集D中属于第k类的样本子集。
G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D)=1-\sum_{k=1}^{K}\left(\frac{|C_k|}{|D|} \right)^2 Gini(D)=1k=1K(DCk)2
如果数据集D根据特征A在某一取值a上进行分割,得到D1,D2两部分后,那么在特征A下集合D的基尼系数如下所示。其中基尼系数Gini(D)表示集合D的不确定性,基尼系数Gini(D,A)表示A=a分割后集合D的不确定性。基尼指数越大,样本集合的不确定性越大。
G a i n _ G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 1 ∣ ∣ D ∣ G i n i ( D 2 ) Gain\_Gini(D,A)=\frac{|D1|}{|D|}Gini(D_1)+\frac{|D1|}{|D|}Gini(D_2) Gain_Gini(D,A)=DD1Gini(D1)+DD1Gini(D2)
对于属性A,分别计算任意属性值将数据集划分为两部分之后的Gain_Gini,选取其中的最小值,作为属性A得到的最优二分方案。然后对于训练集S,计算所有属性的最优二分方案,选取其中的最小值,作为样本及S的最优二分方案。
min ⁡ i ϵ A ( G a i n _ G i n i ( D , A ) ) \min_{i\epsilon A}(Gain\_Gini(D,A)) iϵAmin(Gain_Gini(D,A))
min ⁡ A ϵ A t t r i b u t e ( min ⁡ i ϵ A ( G a i n _ G i n i ( D , A ) ) ) \min_{A\epsilon Attribute}(\min_{i\epsilon A}(Gain\_Gini(D,A))) AϵAttributemin(iϵAmin(Gain_Gini(D,A)))

2.1实例详解
名称 体温 胎生 水生 类标记
恒温 哺乳类
巨蟒 冷血 爬行类
鲑鱼 冷血 鱼类
恒温 哺乳类
冷血 有时 鱼类
巨蜥 冷血 爬行类
蝙蝠 恒温 哺乳类
恒温 哺乳类
豹纹鲨 冷血 鱼类
海龟 冷血 有时 爬行类
豪猪 恒温 哺乳类
冷血 鱼类
蝾螈 冷血 有时 两栖类

针对上述离散型数据,按照体温为恒温和非恒温进行划分。其中恒温时包括哺乳类5个、鸟类2个,非恒温时包括爬行类3个、鱼类3个、两栖类2个,如下所示我们计算D1,D2的基尼指数。

G i n i ( D 1 ) = 1 − [ ( 5 7 ) 2 + ( 2 7 ) 2 ] = 20 49 Gini(D_1)=1-[ (\frac{5}{7})^2+(\frac{2}{7})^2]=\frac{20}{49} Gini(D1)=1[(75)2+(72)2]=4920
G i n i ( D 2 ) = 1 − [ ( 3 8 ) 2 + ( 3 8 ) 2 + ( 2 8 ) 2 ] = 42 64 Gini(D_2)=1-[ (\frac{3}{8})^2+(\frac{3}{8})^2+(\frac{2}{8})^2]=\frac{42}{64} Gini(D2)=1[(83)2+(83)2+(82)2]=6442
然后计算得到特征体温下数据集的Gini指数,最后我们选择Gain_Gini最小的特征和相应的划分。
G a i n _ G i n i ( D , 体 温 ) = 7 15 ∗ 20 49 + 8 15 ∗ 42 64 Gain\_Gini(D,体温)=\frac{7}{15}*\frac{20}{49}+\frac{8}{15}*\frac{42}{64} Gain_Gini(D,)=157

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值