初识决策树(Decision Tree)

2023-10-27

今天来看一下西瓜书第四章——决策树。

决策树,简单来说就是一个树形结构从根节点往叶子节点进行决策,树内部的每一个节点是对一个特征的测试,树的分支代表该特征的每一个测试结果,而树的每一个叶子节点代表一个类别。

在这里插入图片描述

信息增益

信息熵是度量样本纯度的一种指标,假设样本集合 D D D 中第 k k k 类样本所占比例为 p k , k = 1 , 2 , ⋯   , N p_k,k=1,2,\cdots,N pkk=1,2,,N (在二分类中, N = 2 N=2 N=2),那么 D D D信息熵定义为

E n t ( D ) = − ∑ k = 1 N p k l o g 2 p k Ent(D)=-\sum_{k=1}^{N}p_klog_2p_k Ent(D)=k=1Npklog2pk

E n t ( D ) Ent(D) Ent(D) 的值越小,说明 D D D 的纯度越高。

假设某一个特征 a a a V V V 个取值,记为 [ a 1 , ⋯   , a V ] [a^1,\cdots,a^V] [a1,,aV],那么在该特征 a a a 中,第 v v v 个取值 a v a^v av 的所有个数,记为 D v D^v Dv。于是该特征的信息增益为:

G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V D v D E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^{V} \frac{D^v}{D}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

一般来说,信息增益越大,意味着用该特征进行划分获得的纯度提升越大,因此,我们一般选择 m a x ( G a i n ( D , a ) ) max(Gain(D,a)) max(Gain(D,a)) 的特征来进行划分。

注意:

一个特征进行划分后,可能那么会得到多个分支,多个分支也一样递归地计算 G a i n Gain Gain 来进行分支,不同的是,各个分支计算时,需要注意样本数已经变化,即要用该分支的样本计算,直到不可再分为止。

增益率

由信息增益的计算公式可以看出,当特征的取值数量 V V V 较多时,会导致该特征的信息增益大一些,使得决策树会更偏向于该特征进行划分,这是不可取的。

因此, C 4.5 C4.5 C4.5 决策树算法没有直接使用信息增益进行划分,而是用增益率来选择特征划分。

增益率定义如下:

G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
其中 I V ( a ) = − ∑ v = 1 V D v D l o g 2 D v D IV(a)=-\sum_{v=1}^{V}\frac{D^v}{D}log_2\frac{D^v}{D} IV(a)=v=1VDDvlog2DDv

容易看出当 V V V 越大时, I V IV IV 的值越大,增益率就会越小,这意味着增益率更偏向于取值数量较少的特征。

即用信息增益和增益率相结合:

  1. 先从候选划分特征中找出信息增益高于平均水平的属性;
  2. 再从中选择增益率最高的特征进行划分。

基尼系数

C A R T CART CART 决策树使用 G i n i Gini Gini 系数来选择特征进行划分,其定义如下:

G i n i ( D ) = ∑ k = 1 N ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 N p k 2 \begin{aligned} Gini(D)&=\sum_{k=1}^{N}\sum_{k^{'}\ne k} p_kp_{k'}\\ &=1-\sum_{k=1}^{N}p_k^2 \end{aligned} Gini(D)=k=1Nk=kpkpk=1k=1Npk2

简单来说, G i n i ( D ) Gini(D) Gini(D) 反映了从数据集 D D D 中随机抽取两个样本,其类别标记不一致的概率。因此, G i n i ( D ) Gini(D) Gini(D) 越小,则数据集 D D D 的纯度越高。

同样的,某个特征 a a a 的基尼系数定义如下:

G i n i _ i n d e x ( D , a ) = ∑ v = 1 V D v D G i n i ( D v ) Gini\_ index(D,a)=\sum_{v=1}^{V}\frac{D^v}{D}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)

与信息增益不同的是,基尼系数一般选择 m i n ( G i n i _ i n d e x ( D , a ) ) min(Gini\_ index(D,a)) min(Gini_index(D,a)) 的特征来进行划分。

剪枝处理

剪枝是为了防止决策树在学习时过拟合,即泛化能力太差。剪枝一般有预剪枝和后剪枝,下面介绍这两种剪枝方法。

先看一下西瓜书中未剪枝的决策树:

在这里插入图片描述

预剪枝

预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。

在这里插入图片描述

后剪枝

后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

在这里插入图片描述

连续值与缺失值处理

连续值处理

当某个特征的取值为连续值,说明可取值的数量太多,这不能直接按连续值进行划分,此时,我们需要将连续值离散化,最简单的策略就是采用二分法处理连续值。

给定样本集 D D D 和连续属性 a a a ,假定 a a a 出现了 n n n 个不同的取值,先将这些值从小到大进行排序,记为 [ a 1 , a 2 , ⋯   , a n ] [a^1,a^2,\cdots,a^n] [a1,a2,,an]。基于划分点 t t t 可将 D D D 分为子集
D t − D_t^{-} Dt D t + D_t^{+} Dt+,其中 D t − D_t^{-} Dt 是不大于 t t t 的样本,而 D t + D_t^{+} Dt+ 是大于 t t t 的样本。

显然,对相邻的属性取值 a i 和 a i + 1 a_i和a_{i+1} aiai+1 来说,在区间 [ a i , a i + 1 ) [a_i,a_{i+1}) [ai,ai+1) 中取任何值所产生的的划分结果都一样。因此,对连续属性 a a a,我们对 n − 1 n-1 n1 个元素进行选取划分点:

T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } \begin{aligned} T_{a}= \left \{ \frac {a^i+a^{i+1}}{2} | 1\le i \le n-1 \right \} \end{aligned} Ta={2ai+ai+11in1}

即把区间 [ a i + a i + 1 ) [a^i+a^{i+1}) [ai+ai+1) 的中点作为划分点,那么就可以像离散值一样来考察这些划分点,从而选择最优的划分点进行划分。

同样的,得到信息增益:
G a i n ( D , a ) = m a x t ∈ T a G a i n ( D , a , t ) = m a x t ∈ T a E n t ( D ) − ∑ λ ∈ { − , + } D t λ D E n t ( D t λ ) \begin{aligned} Gain(D,a)&=\underset{t\in T_a}{max}Gain(D,a,t)\\ &= \underset{t\in T_a}{max}Ent(D)-\sum_{\lambda \in \left\{-,+ \right\}}\frac{D_t^\lambda}{D}Ent(D_t^\lambda) \end{aligned} Gain(D,a)=tTamaxGain(D,a,t)=tTamaxEnt(D)λ{,+}DDtλEnt(Dtλ)

其中, G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t) D D D 基于划分点 t t t 二分后的信息增益,我们就可以选择 m a x ( G a i n ( D , a , t ) ) max(Gain(D,a,t)) max(Gain(D,a,t))的划分点。

缺失值处理

对于一些含有缺失值的数据,少量还好,当缺少的数量多的时候,我们不能丢弃这些数据,应该把他们也一起训练起来。

给定样本集 D D D 和属性 a a a,令 D ~ \widetilde{D} D 表示 D D D 中在属性 a a a 上没有缺失值的样本子集。

显然我们可根据 D ~ \widetilde{D} D 来判断属性 a a a 的优劣。假定属性 a a a 可取值 [ a 1 , a 2 , ⋯   , a V ] [a^1,a^2,\cdots,a^V] [a1,a2,,aV],令 D ~ v \widetilde{D}^v D v 在表示 D ~ \widetilde{D} D 中在属性 a a a 上取值为 a v a^v av 的样本子集, D ~ k \widetilde{D}_k D k 表示 D ~ \widetilde{D} D 中属于第 k k k 类样本子集,则显然有 D = ⋃ k = 1 N D ~ k D=\bigcup_{k=1}^{N} \widetilde{D}_k D=k=1ND k D = ⋃ v = 1 V D ~ v D=\bigcup_{v=1}^{V} \widetilde{D}^v D=v=1VD v

现在给每个样本 x x x 赋予权重 w x w_x wx,定义如下:
{ ρ = ∑ x ∈ D ~ w x ∑ x ∈ D w x p ~ k = ∑ x ∈ D ~ k w x ∑ x ∈ D ~ w x r ~ v = ∑ x ∈ D ~ v w x ∑ x ∈ D ~ w x \begin{cases} \rho=\frac{\sum_{x\in \widetilde{D}}w_x}{\sum_{x\in D}w_x}\\\\ \widetilde{p}_k=\frac{\sum_{x\in \widetilde{D}_k}w_x}{\sum_{x\in \widetilde{D}}w_x}\\\\ \widetilde{r}_v=\frac{\sum_{x\in \widetilde{D}^v}w_x}{\sum_{x\in \widetilde{D}}w_x}\\ \end{cases} ρ=xDwxxD wxp k=xD wxxD kwxr v=xD wxxD vwx

直观地看,对属性 a a a ρ \rho ρ 表示无缺失值样本所占的比例, p k p_k pk 表示无缺失值样本中第 k k k 类所占的比例, r ~ v \widetilde{r}_v r v 则表示无缺失值样本中在属性 a a a 上取值 a v a^v av 的样本所占的比例。显然, ∑ k = 1 N p ~ k = 1 , ∑ v = 1 V r ~ v = 1 \sum_{k=1}^{N}\widetilde{p}_k=1,\sum_{v=1}^{V}\widetilde{r}_v=1 k=1Np k=1,v=1Vr v=1

于是,就可以将信息增益推广如下:

G a i n ( D , a ) = ρ × G a i n ( D ~ , a ) = ρ × ( E n t ( D ~ − ∑ v = 1 V r ~ v E n t ( D ~ v ) ) ) \begin{aligned} Gain(D,a)&=\rho \times Gain(\widetilde{D},a)\\ &=\rho \times (Ent(\widetilde{D}-\sum_{v=1}^{V}\widetilde{r}_vEnt(\widetilde{D}^v))) \end{aligned} Gain(D,a)=ρ×Gain(D ,a)=ρ×(Ent(D v=1Vr vEnt(D v)))

其中 E n t ( D ~ ) = − ∑ k = 1 N p ~ k l o g 2 p ~ k Ent(\widetilde{D})=-\sum_{k=1}^{N}\widetilde{p}_klog_2\widetilde{p}_k Ent(D )=k=1Np klog2p k

若样本 x x x 在划分属性 a a a 上的取值已知,则将 x x x 划入与其取值对应的子结点,且样本权值在子结点中保待为 w x w_x wx。若样本 x x x 在划分属性 a a a 上的取值未知 则将 x x x 同时划入所有子结点,且样本权值在与属性值 a v a^v av 对应的子结点中调整为 r ~ v × w x \widetilde{r}_v\times w_x r v×wx

参考资料
[1] 周志华.机器学习[M].北京:清华大学出版社,2020.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识决策树(Decision Tree) 的相关文章

  • 讯飞AI算法挑战大赛-校招简历信息完整性检测挑战赛-三等奖方案

    前言 本文公开了 讯飞AI算法挑战大赛 校招简历信息完整性检测挑战赛 赛道的技术方案和代码 本次比赛主要采用 pdf解析 和 特征工程 的方法 通过使用 lightgbm 的树模型10折交叉验证进行 二分类 的任务 最终取得三等奖的成绩 一
  • 其他:机器学习算法速查表

    概述 机器学习可以被认为是计算机科学中最有前途和最受期待的领域之一 借助先前的数据 机器学习试图使计算机能够独立学习新事物 机器学习模型接收数据 执行各种计算 并最大限度地提高模型的精度和准确度 机器学习的主要任务包括图像分割 语音识别和推
  • 人工智能深度学习:探索智能的深邃奥秘

    导言 人工智能深度学习作为当今科技领域的明星 正引领着智能时代的浪潮 深度学习和机器学习作为人工智能领域的两大支柱 它们之间的关系既有协同合作 又存在着显著的区别 本文将深入研究深度学习在人工智能领域的角色 以及其在各行各业中的深远影响 研
  • 人工智能伦理学与法律:创造公正智能的道路

    导言 随着人工智能的迅速发展 伦理学和法律的角色变得愈发关键 人工智能的迅猛发展引发了对伦理和法律框架的深刻思考 本文将深入探讨人工智能伦理学的原则 伦理法规的建设以及法律对人工智能的监管 为创造公正智能的道路指明方向 探讨如何将伦理学和法
  • 人工智能边缘计算:连接智能的边界

    导言 人工智能边缘计算是将智能计算推向数据源头的重要发展方向 本文将深入探讨边缘计算与人工智能的交融 以及在未来数字化社会中的前景 1 边缘计算的基础 分布式计算 边缘计算通过将计算任务推送至数据产生的地方 实现更高效的分布式计算 低延迟通
  • .h5文件简介

    一 简介 HDF5 Hierarchical Data Format version 5 是一种用于存储和组织大量数据的文件格式 它支持高效地存储和处理大规模科学数据的能力 HDF5 是一种灵活的数据模型 可以存储多种数据类型 包括数值数据
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • 机器学习 项目结构 数据预测 实验报告

    需求 我经过处理得到了测试值 然后进一步得到预测和真实值的比较 然后再把之前的所有相关的参数 评估指标 预测值 比较结果都存入excel 另外我还打算做测试报告模板 包括敏感性分析等 您建议我这些功能如何封装这些功能 哪些功能放到一个文件中
  • 基于生成式对抗网络的视频生成技术

    随着人工智能的快速发展 生成式对抗网络 GAN 作为一种强大的生成模型 已经在多个领域展现出了惊人的能力 其中 基于GAN的视频生成技术更是引起了广泛的关注 本文将介绍基于生成式对抗网络的视频生成技术的原理和应用 探索其对电影 游戏等领域带
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • 第二部分相移干涉术

    典型干涉图 相移干涉术 相移干涉术的优点 1 测量精度高 gt 1 1000 条纹 边缘跟踪仅为 1 10 边缘 2 快速测量 3 低对比度条纹测量结果良好 4 测量结果不受瞳孔间强度变化的影响 独立于整个瞳孔的强度变化 5 在固定网格点获
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • lr推荐模型 特征重要性分析

    在分析lr模型特征重要性之前 需要先明白lr模型是怎么回事儿 lr模型公式是sigmoid w1 x1 w2 x2 wn xn 其中w1 w2 wn就是模型参数 x1 x2 xn是输入的特征值 对于lr模型来说 特征可以分为两个粒度 一个是
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • 基于GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 基于ChatGPT4 Python近红外光谱数据分析及机器学习与深度学习建模教程 第一 GPT4 基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初
  • 毕业设计-基于深度学习的细菌微生物目标检测系统系统 YOLO python 目标检测 人工智能 卷积神经网络 机器学习

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 CBAM模块 2 2 损失函数 三 检测的实现 3 1 数据集 3 2 实验环境搭建 3 3 实验及结果分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一
  • 【毕业设计选题】复杂背景下的无人机(UVA)夜间目标检测系统 python 人工智能 深度学习

    前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大家顺利通过和节省时间
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本
  • GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 GPT4 Python近红外光谱数据分析及机器学习与深度学习建模 第一 GPT4 入门基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初体验 注册与
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变

随机推荐

  • mysql按升序创建索引_MySQL中如何使用索引

    原标题 MySQL中如何使用索引 者 Airy 在数据分析之路狂奔 立志成为大咖级人物 前言 学完基础的MySQL知识 以及MySQL的增删改查 我们要学习一些性能方面的东西 今天来讲一下索引 Index 索引 在关系数据库中 索引是一种单
  • BUUCTF学习笔记-EasySQL

    BUUCTF学习笔记 EasySQL 时间 2020 03 14 考点 堆叠注入 SQL模式 打开是一个输入框 提交参数查询 随意提交几个参数 发现存在堆叠注入 输入1显示Array 0 gt 1 输入2显示Array 0 gt 1 输入2
  • SQL基础之增、删、改、查

    文章目录 SQL基础之增 删 改 查 SELECT INSERT UPDATE DELETE 参考 SQL基础之增 删 改 查 SQL Structured Query Language SELECT 查 SELECT FROM 整张表查询
  • ACwing算法基础课全程笔记(2021年8月12日开始重写+优化)

    更好的阅读体验 基础模板 2021年8月12日开始对基础课笔记进行重写 优化 请大家支持AcWing正版 购买网课能让自己获得更好的学习体验哦 链接 https www acwing com about 比赛常用技巧及库函数 1 快速读 快
  • win11 install wsl2

    在 Windows 11 上安装 WSL 2 的步骤如下 首先 确保你的 Windows 版本是 Windows 11 或者更新的版本 并且支持 WSL 2 然后 打开 设置 应用 在 更新与安全 页面的 开发人员选项 中 启用 Windo
  • 用200行C语言代码写出一个贪吃蛇——1.0(基本版)

    1 设计思路 总的来说 贪吃蛇这个小游戏涉及到的东西不多 但是对逻辑思维是比较吃基本功的 贪吃蛇 显示给我们看的有三部分 蛇 食物 地图边界 我们可以用一个二维数组来标记这些部分 例如这里我创建了一个 5 10 的二维数组 其中 1 表食物
  • 手写模拟Spring的底层原理2.1

    先来引入两个问题 第一个懒加载还是立即加载的问题 这个问题还是在于就是说 当我们xml配置了一个对象bean的时候 它在spring容器里面是什么时候开始会给我们创建这个对象 那如果我们想对某个对象启动懒加载 可以添加 lazy这个注解 这
  • Fiddler抓包工具保姆级使用教程(超详细)

    超文本传输协议 HTTP 是一个简单的请求 响应协议 其主要是基于TCP来实现的 可以通过Chrome开发者工具或者Wireshark或者Fiddler抓包 以便分析 HTTP 请求 响应的细节 本篇博客主要谈论如何使用Fiddler抓取H
  • vector 二维数组

    动态数组 int p p new int m 注意 int m 表示一个有m个元素的指针数组 p new int 8 表示分配一个int空间并初始化为8 for int i 0 i lt m i p i new int 5 利用Vector
  • OpenGL Shading language学习总结

    这篇文章是根据
  • 基于Ymodem协议的STM32串口IAP的实现(IAP + APP + 上位机)

    基于Ymodem协议的STM32串口IAP的实现 IAP APP 上位机 HavenXie关注 0 1832017 06 05 00 35 09字数 1 373阅读 10 038 1 什么是IAP IAP In Application Pr
  • 单元测试Mock工具TestableMock使用

    单元测试原则 单元测试必须遵循AIR Automatic Independent Repeatable 原则 单元测试在线上运行时 感觉像空气 AIR 一样感觉不到 但在测试质量的保障上 却是非常关键的 好的单元测试宏观上来说 具有自动化
  • 计算机网络--数据链路层(1)

    一 数据链路层的功能 数据链路的建立 维护与拆除帧包装 帧传输 帧同步帧的差错恢复 流量控制 MAC地址 也叫做物理地址或者硬件地址 是唯一的 只有支持tcp ip协议的才有 二 交换机的工作原理 1 交换机里有mac地址表 记录哪台电脑接
  • C++中STL库

    六个部分组成 容器 用来存放数据的各种数据结构 比如vector deque list set和map等 是一种类模板 算法 各种常用的算法 比如排序算法 拷贝算法 查找算法等 是一种函数模板 迭代器 容器与算法间的粘合剂 共有五种类型 重
  • 7、oracle随机uuid字符串生成函数

    1 应用场景 数据库表中的id字段一般都是通过uuid自动生成的唯一标识 通过后台代码可以生成uuid然后给id赋值 但是有时候我们不是通过后台代码而是需要通过insert select语句来向表中插入数据 也就是说没有后台代码给生成现成的
  • Topaz Video Enhance AI v3.2.8

    软件介绍 Topaz Video Enhance AI是一款运用了AI人工智能技术的视频放大工具 使用神经网络进行训练的 该神经网络分析成千上万对视频 以了解通常如何丢失细节 够推断出更多细节 从而在单个视频剪辑中提供大量信息的情况下呈现出
  • 达梦数据库-日期类型常用函数汇总

    日期时间函数的参数至少有一个是日期时间类型 TIME DATE TIMESTAMP 返回值一般为日期时间类型和数值类型 由于 DM 支持儒略历 并考虑了历史上从儒略历转换至格里高利日期时的异常 不计算 1582 10 05 到 1582 1
  • MATLAB:excel文件读取

    1 用xlsread函数读取一个Excel文件 1 num xlsread filename filename是单引号括起来的带路径的文件名 函数直接读取filename所指文件的sheet1中的数据区域存储到双精度矩阵num中 其中 数据
  • RIP的缺点

    1收敛慢2路由选取到无限3不能处理VLSM 版本14不能检测路由环路5度量值只是跳跃计数6网络直径小 15个跳跃 转载于 https www cnblogs com bbbbnn p 10914421 html
  • 初识决策树(Decision Tree)

    今天来看一下西瓜书第四章 决策树 文章目录 信息增益 增益率 基尼系数 剪枝处理 预剪枝 后剪枝 连续值与缺失值处理 连续值处理 缺失值处理 决策树 简单来说就是一个树形结构从根节点往叶子节点进行决策 树内部的每一个节点是对一个特征的测试