机器学习之决策树CART算法

这篇具有很好参考价值的文章主要介绍了机器学习之决策树CART算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接上期:

一、理论知识

CART算法是给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部节点取值为“是”或“否”。这样的决策树等价于递归地二分每个特征,将特征空间划分为有限个单元,并在这些单元上确定预测的概率分布即输入给定的条件下输出的条件概率分布。

1.0、特征选择:基尼指数

  • 分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
  • 分类问题中假设有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_{k=1}p_k(1-p_k)=1-\sum^K_{k=1}p_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
    对于二分类问题,若样本点属于第1个类的概率为p,则概率分布的基尼指数为 G i n i ( p ) = 2 p ( 1 − p ) Gini(p)=2p(1-p) Gini(p)=2p(1p)
  • 如果样本集合D根据特征A是否取某一可能值a被分割为 D 1 D_1 D1 D 2 D_2 D2两部分,即 D 1 = ( x , y ) ∈ D ∣ A = a , D 2 = D − D 1 D_1={(x,y)\in D|A=a},D_2=D-D_1 D1=(x,y)DA=aD2=DD1,则在特征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)=DD1Gini(D1)+DD2Gini(D2)
    基尼指数 G i n i ( D ) Gini(D) Gini(D)表示集合D的不确定性,基尼指数 G i n i ( D , A ) Gini(D,A) Gini(D,A)表示经 A = a A=a A=a分割后集合D的不确定性。基尼系数越大,样本集合的不确定性也越大,这一点与熵相似。

1.1、决策树的生成

  • CART生成算法

    • 输入:训练数据集D,停止计算的条件
    • 输出: CART决策树
    • 计算现有特征对该数据集的基尼指数。根据特征A=a的测试为“是”或“否”,将数据集划分为两个子集 D 1 , D 2 D_1,D_2 D1,D2,利用上面的公式计算A=a时的基尼指数;
    • 在所有可能的特征A以及它们所有可能分割点a中,选择基尼系数最小的特征及其分割点作为最优特征和最优切分点。并根据该特征和切分点,从现节点生成两个子节点,将训练集划分到两个子节点去;
    • 对两个子节点递归地调用上述步骤,直至满足停止条件;
    • 生成CART决策树。
  • 实例:下表为数据集,应用CART算法生成决策树。
    机器学习之决策树CART算法
    计算各特征对数据集D的信息增益,分别以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷情况4个特征。以1,2,3表示年龄的值为青年、中年和老年,以1,2表示有工作和有自己的房子的值为是或否,以1,2,3表示信贷情况的值为非常好、好和一般。

  • 数据集D关于特征A1的基尼指数:
    G i n i ( D , A 1 = 1 ) = 5 15 ( 2 ∗ 3 5 ∗ 2 5 ) + 10 15 ( 2 ∗ 3 10 ∗ 7 10 ) = 0.44 Gini(D,A_1=1)=\frac5{15}(2*\frac{3}{5}*\frac{2}{5})+\frac{10}{15}(2*\frac{3}{10}*\frac{7}{10})=0.44 Gini(D,A1=1)=155(25352)+1510(2103107)=0.44
    G i n i ( D , A 1 = 2 ) = 5 15 ( 2 ∗ 3 5 ∗ 2 5 ) + 10 15 ( 2 ∗ 4 10 ∗ 6 10 ) = 0.48 Gini(D,A_1=2)=\frac5{15}(2*\frac{3}{5}*\frac{2}{5})+\frac{10}{15}(2*\frac{4}{10}*\frac{6}{10})=0.48 Gini(D,A1=2)=155(25352)+1510(2104106)=0.48
    G i n i ( D , A 1 = 3 ) = 5 15 ( 2 ∗ 1 5 ∗ 4 5 ) + 10 15 ( 2 ∗ 5 10 ∗ 5 10 ) = 0.44 Gini(D,A_1=3)=\frac5{15}(2*\frac{1}{5}*\frac{4}{5})+\frac{10}{15}(2*\frac{5}{10}*\frac{5}{10})=0.44 Gini(D,A1=3)=155(25154)+1510(2105105)=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 = 1 A_1=1 A1=1 A 1 = 3 A_1=3 A1=3都可以选择作为 A 1 A_1 A1的最优切分点。

  • 求特征 A 2 A_2 A2 A 3 A_3 A3的基尼指数:
    G i n i ( D , A 2 = 1 ) = 10 15 ( 2 ∗ 6 10 ∗ 4 10 ) + 5 15 ( 2 ∗ 5 5 ∗ 0 5 ) = 0.32 Gini(D,A_2=1)=\frac{10}{15}(2*\frac6 {10}*\frac4{10})+\frac{5}{15}(2*\frac5 5*\frac0 5)=0.32 Gini(D,A2=1)=1510(2106104)+155(25550)=0.32
    G i n i ( D , A 3 = 1 ) = 9 15 ( 2 ∗ 6 9 ∗ 3 9 ) + 6 15 ( 2 ∗ 6 6 ∗ 0 6 ) = 0.27 Gini(D,A_3=1)=\frac{9}{15}(2*\frac6 {9}*\frac3{9})+\frac{6}{15}(2*\frac6 6*\frac0 6)=0.27 Gini(D,A3=1)=159(29693)+156(26660)=0.27
    由于特征 A 2 A_2 A2 A 3 A_3 A3的切割点只有一个,所以它们就是最优切分点。

  • 求特征 A 4 A_4 A4的基尼指数:
    G i n i ( D , A 4 = 1 ) = 0.36 Gini(D,A_4=1)=0.36 Gini(D,A4=1)=0.36
    G i n i ( D , A 4 = 2 ) = 0.47 Gini(D,A_4=2)=0.47 Gini(D,A4=2)=0.47
    G i n i ( D , A 4 = 3 ) = 0.32 Gini(D,A_4=3)=0.32 Gini(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的最优切分点。

  • 在4个特征中, G i n i ( D , A 1 = 1 ) = G i n i ( D , A 1 = 3 ) = 0.44 Gini(D,A_1=1)=Gini(D,A_1=3)=0.44 Gini(D,A1=1)=Gini(D,A1=3)=0.44 G i n i ( D , A 2 = 1 ) = 0.32 Gini(D,A_2=1)=0.32 Gini(D,A2=1)=0.32 G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A_3=1)=0.27 Gini(D,A3=1)=0.27 G i n i ( D , A 4 = 3 ) = 0.32 Gini(D,A_4=3)=0.32 Gini(D,A4=3)=0.32 G i n i ( D , A 3 = 1 ) Gini(D,A_3=1) Gini(D,A3=1)最小,所以选择特征 A 3 A_3 A3为最优特征, A 3 = 1 A_3=1 A3=1为最优切分点。于是根节点生成两个子节点,一个是叶节点( A 3 = 1 A_3=1 A3=1的类别输出都是“是”),对另一个节点继续使用以上方法选择最优特征和最优切分点,结果为 A 2 = 1 A_2=1 A2=1。以此计算,所得节点都是叶节点。
    对于同样的案例,CART算法的决策树结果与ID3的决策树结果一致。

1.2、CART剪枝

下面这张图可以很好的理解分类树越复杂,训练集的精确度越高;但测试集的精确度到达某一高度时会随着树的复杂度增加而减小,即产生过拟合。而剪枝正是为了防止过拟合,缩小树的复杂度而生的。在上期博客中,讲解了预剪枝和后剪枝,这里要讲的是CART算法中CART剪枝。
机器学习之决策树CART算法

  • 在一个复杂的树内部,有许多较简单的子树,每一个子树代表在模型复杂性和训练集误差分类率之间的一种折中。CART算法把这样一些子树的集合视为候选模型,这些候选子树被应用于验证集,具有最低验证集误分类率的树被选作最终模型。
  • CART使用代价复杂度剪枝算法Cost-Complexity Pruning(CCP) (后剪枝算法的一种)。该方法把树的代价复杂度看做树中树叶结点的个数和树的错误率的函数。从树的底部开始,对于每个内部结点N,计算N处的子树的代价复杂度和该子树剪枝后的N处子树(即用一个树叶结点代替)的代价复杂度。比较这两个值,如果剪去结点N的子树导致较小的代价复杂度,则剪去该子树;否则,保留。
  • 下图中T树生成的完整决策树,T2为其中的子树,T-T2即为剪切后的决策树,比较T和T-T2的代价复杂度,如果T-T2的代价复杂度有所减小,那么将子树T2剪掉。
    机器学习之决策树CART算法
    过程
  • 从整个树 T0 开始,先剪去一棵子树,生成子树 T1,在 T1 上再剪去一棵子树,生成子树 T2,重复这个操作,直到最后只剩下一个根节点的子树 Tn,得到了子树序列 T0~Tn。
  • 利用独立的验证数据集,计算每个子树的平方误差(回归树)或者基尼指数(分类树),选择误差最小的那个子树作为最优的剪枝后的树。因为建模的时候,目标就是让损失函数达到最优,那剪枝的时候也用损失函数来评判。对任意子树 T,损失函数如下形式:
    C α ∣ T ∣ = C ( T ) + α ∣ T ∣ C_\alpha|T|=C(T)+\alpha|T| CαT=C(T)+αT
    其中 C ( T ) C(T) C(T)为误差(例如基尼指数), ∣ T ∣ |T| T为子树的叶节点树, α > = 0 \alpha>=0 α>=0为参数,用来权衡训练数据的拟合程度和模型的复杂度。
    机器学习之决策树CART算法

二、python实战

import numpy as np
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

x = load_iris().data
y = load_iris().target
x_train,x_test,y_train,y_test= train_test_split(x,y,test_size=0.3,random_state=2022)
destree = DecisionTreeClassifier(criterion='gini',splitter='best',max_depth=3,max_leaf_nodes=4) # 选择gini准则即为CART算法  参数max_depth(树的最大深度)和max_leaf_nodes(最大叶节点数) 可以进行剪枝
dd = destree.fit(x_train,y_train)
ytest_pre = destree.predict(x_test)
ytrain_pre = destree.predict(x_train)
print(f'训练集精确度:{accuracy_score(y_train,ytrain_pre)}')
print(f'测试集精确度:{accuracy_score(y_test,ytest_pre)}')

训练集精确度:0.9714285714285714
测试集精确度:0.9777777777777777

plt.figure(figsize=(8,6))
plot_tree(dd)
plt.show()

机器学习之决策树CART算法
参考:
《统计学习方法》 李航著
课后ppt文章来源地址https://www.toymoban.com/news/detail-432413.html

到了这里,关于机器学习之决策树CART算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CART 算法——决策树

    目录 1.CART的生成: (1)回归树的生成 (2)分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝: (1)损失函数 (2)算法步骤:         CART是英文“classification and regression tree”的缩写,翻译过来是分类与回归树,与前面说到的ID3、C4.5一致,都是决策树生成的一种算法,

    2024年04月11日
    浏览(31)
  • cart算法python实现:从CART算法中学习如何构建有效的决策树

    CART(Classification and Regression Tree)算法是一种基于树的机器学习算法,用于分类和回归分析。它使用一种叫做分类和回归树(CART)的决策树结构,通过将数据集分割成多个子集来建立模型。 CART(Classification and Regression Tree)算法是一种基于树的机器学习算法,用于分类和回归

    2024年02月09日
    浏览(38)
  • 第六章.决策树(Decision Tree)—CART算法

    第六章.决策树(Decision Tree) CART决策树的生成就是递归地构建二叉决策树的过程。 CART用基尼(Gini)系数最小化准则来进行特征选择,生成二叉树 。 1).题干: 分别计算它们的Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性。 2).计算 ①. 根节点的Gini系数: ②

    2024年01月17日
    浏览(39)
  • (统计学习方法|李航)第五章决策树——四五节:决策树的剪枝,CART算法

    目录 一,决策数的剪枝 二,CART算法 1.CART生成 (1)回归树的生成 (2)分类树的生成          2.CART剪枝 (1)剪枝,形成一个子树序列 (2)在剪枝得到的子树序列T0,T1-----,Tn中通过交叉验证选取最优子树Ta   好的决策树不高不宽     柳建男的”后剪枝“挥手创作   如果

    2024年02月14日
    浏览(28)
  • 头歌--机器学习之决策树

    目录 第1关:什么是决策树 第2关:信息熵与信息增益 第3关:使用ID3算法构建决策树 第4关:信息增益率 第5关:基尼系数 第6关:预剪枝与后剪枝 第7关:鸢尾花识别 第1关:什么是决策树 1、下列说法正确的是?(AB) A 、训练决策树的过程就是构建决策树的过程 B 、ID3算法

    2024年02月08日
    浏览(38)
  • 机器学习之决策树

    决策树 (decision tree)是基于树结构进行决策的,是一种符合人类面临决策问题时的思考方式。采用了 分而治之 (divide-and-conquer)的策略。 决策树建立的基本流程 决策树的构建是一个递归的 过程,决策树生成算法中有三种情形会导致递归: 当前结点包含的样本全属于同一

    2024年02月08日
    浏览(57)
  • 【机器学习】决策树(理论)

    决策树(Decision Tree)是一种分类和回归方法,是基于各种情况发生的所需条件构成决策树,以实现期望最大化的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。它的运行机制非常通俗易懂,因此被誉为机器学习中,最“友好”的算法。下面通过一个

    2024年02月04日
    浏览(35)
  • 机器学习之分类决策树与回归决策树—基于python实现

          大家好,我是带我去滑雪!       本期为大家介绍决策树算法,它一种基学习器,广泛应用于集成学习,用于大幅度提高模型的预测准确率。决策树在分区域时,会考虑特征向量对响应变量的影响,且每次仅使用一个分裂变量,这使得决策树很容易应用于高维空间,且

    2024年02月03日
    浏览(32)
  • 决策树--CART分类树

    CART(Classification and Regression Trees)分类树是一种基于决策树的机器学习算法,用于解 决分类问题。它通过构建树状的决策规则来对数据进行分类。 ① 选择一个特征和相应的切分点,将数据集分为两个子集。 ② 对每个子集递归地重复步骤1,直到满足停止条件。 ③ 当达到停

    2024年02月01日
    浏览(31)
  • 吃透《西瓜书》第四章 决策树定义与构造、ID3决策树、C4.5决策树、CART决策树

    目录 一、基本概念 1.1 什么是信息熵? 1.2 决策树的定义与构造 二、决策树算法 2.1 ID3 决策树 2.2 C4.5 决策树 2.3 CART 决策树  信息熵: 熵是 度量样本集合纯度 最常用的一种指标,代表一个系统中蕴含多少信息量, 信息量越大 表明一个 系统不确定性就越大, 就存在越多的可

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包