首页 > 编程语言 >机器学习算法-决策树

机器学习算法-决策树

时间:2024-07-13 10:26:11浏览次数:14  
标签:机器 特征 增益 特征选择 算法 节点 决策树

一、决策树简介

        决策树是一种分类与回归的方法,它以树形结构的形式进行呈现,可以认为是if-then规则的集合,也可以认为是特征空间与类空间上的条件概率分布。

二、如何理解决策树?

        我们大部分人都有过租房子的经历,那你是怎么决定要租一个房子的呢?我们一般判断是否需要租一个房子,影响的因素有:房子的位置、价格和装修。具体点来说,我只会选择离公司近的房子,比如说5公里内或者通勤时间在40分钟内的。其次是价格,如果价格便宜,不管装修好不好我都会租下来,如果价格贵的话,我就要看装修情况了,如果装修好就租,如果装修不好就不租了。

        这就是一颗典型的决策树:对于租房子这个事情,我根据房子的距离、价格和装修这几个条件进行判断,决定要不要租下这个房子,下图就是这颗决策树的示意图。

        我们看到,决策树就是一种树形结构的算法,上边的节点代表着算法的某一个特征(如价格、距离),节点上可能存在多个分支,每个分支代表着这个特征的不同种类(如距离近、距离远),最后的叶子节点代表最终的决策结果(如租、不租)。

三、决策树涉及的基本概念

        节点:决策树由许多节点组成,其中分为两种类型:内部节点和叶子节点。内部节点表示某个特征,而叶子节点表示某个类别或回归值;

       分支:每个内部节点连接着一些分支,每个分支代表着某个特征取值,表示样本在该特征上的取值;

        根节点:决策树的根节点是整棵树的起点,即第一个判断特征的节点;

        决策规则:决策树的每个节点表示一条决策规则,即对某个特征的判断,其决策规则是由已知数据集计算而得的。

四、一颗决策树的生成

        我们知道了决策树的形式和原理之后,接下来我们看一下决策树的生成过程。

        决策树的生成过程包括三个部分:特征选择、决策树生成和决策树剪枝。

        下面,我们还是拿上边租房子的例子来说决策树的生成过程。假设现在有如下条件的房子:距离远、价格不贵、装修高,根据上边定的规则,你觉得我会不会租这个房子呢?

        我们先看距离,因为这个房子距离公司远,根据上线的决策树,我们得出的结论是:不租。但是,假设我们的决策树不是用距离作为根节点,而是用价格作为根节点,结果会不会不一样呢?以价格为根节点的决策树的结果如下图所示。

        我们发现这颗决策树“变大”了好多,判断这个房子是否租住的古城就变成了:先看价格,再看装修,最后看距离。但是即使决策树的结构发生了变化,我们还是得到以前的结论:不租。所以,决策树的构造只会影响算法的复杂度和计算时间,不会影响决策结果的。因此,在实际工作中,我们就需要优化决策树的结构,当他的效率更高,但应该怎么做呢?

1、基本概念

        在进行特征选择时,我们需要了解以下概念:

        ①信息熵:信息熵是描述信息源各可能事件发生的不确定性的数学量。它借鉴了热力学的概念,用来度量信息的平均量,通常用于描述信息的不确定性或混乱程度。在机器学习中,信息熵是用来衡量一个节点内信息的不确定性。一个系统中信息熵越大,这个系统的不确定性就越大,样本就越多样,你也可以理解为样本的纯度就越低,而信息熵越小,系统的不确定性就越小,样本越趋于一致,样本的纯度就越高,信息熵的计算过程如下:

        ②条件熵:是一个用于描述在给定随机变量 (X) 的条件下,另一个随机变量 (Y) 的不确定性。在机器学习和信息论中,条件熵是一个重要概念,它有助于我们理解当知道某个变量 (X) 的值时,另一个变量 (Y) 的不确定性会减少多少,条件熵的计算公式如下:

        ③信息增益:表示引入某个特征后,数据分类不确定性减少的程度,通过比较某个特征出现前后系统熵的变化来计算的,即该特征能够为系统带来多少“增益”的信息,信息增益的计算公式如下图所示:

        ④信息增益比:有时候以信息增益来划分训练数据集的特征,会存在偏向于选择取值较多的特征问题,使用信息增益比可以对这一个问题进行校正,成文一种更加权衡的选择标准。

        ⑤基尼系数:表示样本集合中一个随机选中的样本被分错的概率

        设有K个分类,样本属于第k类的概率是pk:

        基尼指数和信息增益、信息增益比一样,都近似代表分类误差率。

2、特征选择

        特征选择是决策树学习中的第一步,它涉及从数据集中众多特征中选择一个最具信息量的特征作为节点分裂的依据。特征选择的目的是找到一个特征,使得基于该特征的数据分割能够最大化类别的分离度,即让分割后的数据子集尽可能地纯净,包含同一类别的样本尽可能多,不同类别的样本尽可能少。

        根据特征选择的不同,决策树算法有很多种,最典型的三种分别是:ID3(迭代二叉树3代)、C4.5和CART(分类与回归树)。

        ID3是最初代的决策树算法,它对特征值的选择采用的计算指标是信息增益,就是在决策树各个节点上使用信息增益作为选择特征的准则,使用递归方法构建决策树。我们在构建决策树的时候,希望决策树在每次划分的时候,每个条件分支都能够最大化的去划分这些样本,让每个节点的信息熵最低,样本一致性更高。所以,决策树会计算每一个特征划分后样本的“纯度”,纯度越高的特征越接近根节点。这样一来,决策树的复杂度和计算机时间肯定就会较少,也就不会出现我们刚才说的那种“很大”的决策树。

         C4.5是在ID3基础上改进后的算法,ID3算法生成树有一个缺点,就是容易过拟合,并且避免决策树偏向选择取值较多的特征而C4.5对特征值选择采用的计算指标是信息增益比。在选择根节点时,选择信息增益比最大的属性作为根节点,

        CART分类与回归树,做分类问题时使用Gini系数,选择Gini系数最大的节点作为根节点,做回归问题的时候使用的是偏差值,CART算法是目前应用最广泛的决策树算法。

       ID3、C4.5和CART算法的优缺点如下表所示:

3、决策树生成

        决策树的生成是基于特征选择的结果,递归地构建树的过程。从根节点开始,使用特征选择得到的最佳特征对数据集进行分割,然后对分割后的每个子集重复这一过程,继续寻找子集中的最佳特征进行进一步的分割,直到满足停止条件,比如子集中的样本全部属于同一类别、没有更多特征可供选择或者达到了预设的最大深度。这个过程中,每个内部节点代表了一个特征的测试,而每个分支代表测试的一个结果,叶节点则代表最终的决策或预测结果。

4、决策树剪枝

       因为决策树很容易出现过拟合, 为了解决过拟合问题而引入了剪枝操作。过拟合意味着决策树过于复杂,对训练数据的噪声过于敏感,导致模型在未知数据上的泛化能力下降。剪枝通过移除或合并一些节点来简化决策树的结构,减少树的复杂度。

        剪枝可以是预剪枝,即在生成过程中提前停止树的生长;也可以是后剪枝,即先生成一个完整的树,然后自底向上地剪除对整体性能没有贡献或贡献很小的分支。剪枝的目的是找到一棵既能很好地拟合训练数据,又具有较强泛化能力的决策树。

五、决策树应用场景

        决策树可以应用于以下场景:

        1、分类问题:决策树算法可以用于解决分类问题,例如根据一组特征将实例分为不同的类别。它在垃圾邮件过滤、疾病诊断、客户分类等领域都有应用。
        2、回归问题:决策树算法也可以用于解决回归问题,例如根据一组特征预测一个连续的数值。它在房价预测、销量预测等领域可以发挥作用。
        3、特征选择:决策树算法可以通过特征选择的方式确定哪些特征对于解决问题是最重要的。通过分析决策树的结构和特征重要性,可以帮助我们理解数据集并选择最相关的特征。
        4、缺失值处理:决策树算法可以有效地处理带有缺失值的数据集。在决策树的构建过程中,可以根据可用的特征进行分割,从而处理缺失值问题。
        5、异常检测:决策树算法可以用于检测异常值。通过构建决策树,可以将异常值划分为与正常值不同的分支,从而帮助我们发现异常情况。
        6、推荐系统:决策树算法可以用于构建个性化的推荐系统。通过分析用户的特征和历史行为,决策树可以推断出用户的兴趣和偏好,进而提供个性化的推荐内容。

六、决策树的优缺点

        决策树优点:由于具有树形结构,决策树的解释性很强,直观好理解,而且还可以从结果向上去追溯原因。

        决策树的缺点:当数据量大,数据维度很多的时候,决策树会变的非常复杂,训练时间会很久,另外决策树的深度需要手动设置,如果设置的不合理,就很可能造成欠拟合或者过拟合的情况。

标签:机器,特征,增益,特征选择,算法,节点,决策树
From: https://blog.csdn.net/2301_79295435/article/details/140369736

相关文章

  • 【算法】求 x 的 n 次方
    1.概述题目链接牛客网题目描述给定一个double类型的浮点数x和int类型的整数n,求x的n次方。1.1解题思路最直观的解法是将x重复乘n次,x\*x\*x...\*x,那么时间复杂度为O(N)。因为乘法是可交换的,所以可以将上述操作拆开成两半(x\*x..\*x)\*(x\*x..\*x),两......
  • 基于ACO蚁群优化算法的WSN网络路由优化matlab仿真
    1.程序功能描述      基于ACO蚁群优化算法的WSN网络路由优化,通过蚁群优化迭代,在WSN中搜索一个最短的路由路径。在仿真过程中,实时显示每一次迭代过程中找到的路径,最后输出ACO的优化迭代过程,网络路由路径的搜索结果。 2.测试软件版本以及运行结果展示MATLAB2022a版本运......
  • 沁园春 · 算法
    OI风光,千里DP,万里背包。望深搜内外,唯余莽莽;广搜上下,顿失滔滔。山舞图论,原驰蜡象,欲与AC试比高。惜指针链表,略输文采;滚动数组,稍逊风骚;一代天骄,Vector数组,只识弯弓射大雕。俱往矣,数风流算法,还看今朝。OI风光,千里**DP**,万里**背包**。望**深搜**内外,唯余莽莽;**广搜**上......
  • 代码随想录算法训练营第八天| leetcode 344、541、卡码网54
    反转字符串 leetcode344classSolution{public:voidreverseString(vector<char>&s){intindex1=0,index2=s.size()-1;chartmp;while(index1<index2){tmp=s[index1];s[index1]=s[index2];......
  • Sentinel-1 Level 1数据处理的详细算法定义(二)
    《Sentinel-1Level1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level1处理算法和方程,以便生成Level1产品。这些算法适用于Sentinel-1的Stripmap、InterferometricWide-swath(IW)、Extra-wide-swath(EW)和Wave模式。今天介绍的内容如下:S......
  • telegram发卡机器人
    iDataRiver是一家提供telegram发卡机器人的发卡平台。商家上架商品后,自动获得平台提供的免费telegram发卡机器人。如果希望将机器人头像/名称设置成自己的,也支持自定义tg发卡机器人(收费)。自定义telegram机器人还提供了消息群发的功能,以及群发数据统计。入驻文档https://doc......
  • KD树空间划分算法碰撞检测
    参考:KD树详解-CSDN博客 KD树(k-dimensionaltree)是一种用于多维空间中点数据的高效存储和检索的数据结构。在游戏开发中,KD树具有多种重要的应用,主要体现在以下几个方面:1.空间分区KD树可以用于将游戏世界划分为多个区域,从而提高碰撞检测、物体查询等操作的效率。通过将空间划......
  • 【Unity】碰撞检测算法及框架实现
    背景硕士期间研究课题是海洋生物数字孪生,基于各类Boids改进的算法里会有大量的海洋鱼类在三维空间中运动,鱼类之间会有互相感知的过程,同一帧里需要对许多行为进行决策判定,例如同伴鱼、食物、捕食者、栖息地等等。因此打算研究下有什么空间加速算法能够避免暴力迭代,减少开销。既然......
  • 力扣 657. 机器人能否返回原点
    题目内容在二维平面上,有一个机器人从原点 (0,0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0,0) 处结束。移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返......
  • 【人工智能书籍】TensorFlow机器学习实战指南(推荐)
    今天又来给大家推荐一本人工智能方面的书籍<TensorFlow机器学习实战指南>。TensorFlow是一个开源机器学习库。本书从TensorFlow的基础开始介绍,涉及变量、矩阵和各种数据源。之后,针对使用TensorFlow线性回归技术的实践经验进行详细讲解。后续章节将在前文的基础上讲述神经网......