• 传统机器学习笔记4——决策树


    前沿

      上篇博文我们介绍了逻辑回归算法,对逻辑回归有不明白的小伙伴可以回到之前的博文再看看,这里附一个前面介绍过的传统机器学习系列的汇总:

      这篇博文我们开始介绍决策树算法,机器学习中非常经典的一个算法,后面我们要介绍的几个算法也都跟决策树息息相关。在分类问题中,决策树可以看成一个if-then语句。决策树模型具有可读性,速度快等特点,在实际业务中也广泛使用。可以做分类,也可以做回归。

    一.核心思想

    在这里插入图片描述
      决策树是基于已知的情况,通过构建树型决结构来分析的方式。上面我们以乘坐交通工具为例,于是就有了上面的决策树。决策树是一种预测模型,代表的是对象属性和对象的值之间的一种映射关系,是一种树形的结构,有四种类型:

    • 内部节点:表示一个属性的测试
    • 分支:表示一个测试输出
    • 叶节点:每个叶节点表示一种类别
    • 根节点

    根节点,内部节点,叶子结点如下图:
    在这里插入图片描述

    1.1.发展史

    • 第一个决策树算法: CLS (Concept Learning System)
    • 使决策树受到关注、成为机器学习主流技术的算法: ID3
    • 最常用的决策树算法: C4.5
    • 可以用于回归任务的决策树算法: CART (Classification and Regression Tree
    • 基于决策树的最强大算法: RF (Random Forest)

    二.决策树的生长与最优属性的选择

      上面我们知道了什么是决策树算法,决策树算法就是基于已知的情况,通过构建树型决结构来分析的一种方式。下面我们来介绍下决策树是怎么生长的以及决策树是怎么选择最优路径的。

    2.1.决策树的生长

      决策树的决策过程是从根节点开始,测试待分类项中对应的特征属性,并按照他的值进行选择输出分支,直至叶子结点,将叶子节点存放的类型作为决策结果。简言之,决策树的过程就是从根节点到叶子节点的一个判断选择过程。我们来看一下决策树的生长流程:
    在这里插入图片描述
    从上面的伪代码可以看到,决策树停止生长的条件有三个:

    • 当前节点包含的样本全部属于同一类别
    • 样本的属性取值相同或属性集为空,不能划分
    • 当前节点包含的样本集合为空,不能划分

    2.2.最优属性选择

      我们怎么通过属性来构建决策树,下面我们以拖欠贷款预测为例来讲解一下,其中会涉及两个知识点,熵和基尼系数。
    在这里插入图片描述
      上面的属性总共有三种:是否有房,婚姻状况,年收入,标签为是否拖欠贷款。是否有房是二元属性,婚姻状况是多元属性,年收入是序数属性。下面我们分别介绍下这三类属性构造节点的方法。

    2.2.1.二元属性

    在这里插入图片描述
    表格中二元属性,我们可以直接划分成是和否两类

    2.2.2.多元属性

    在这里插入图片描述
    多元属性可以根据属性的类别数进行划分,也可以将类别相近的进行合并。

    2.2.3.序数属性

    在这里插入图片描述
    序数属性可以根据不同的数据段进划分两端或者多段(纠正一下,上面年收入划分,一边可取等号,下面构建决策树的过程也是)。

    2.2.4.基尼系数和熵

      上面我们知道了怎么通过属性来构建节点,但是我们在构建决策树的时候要选择哪一个属性呢?属性选择用什么指标来度量呢?就是用我们上面提到的两个公式:熵、基尼系数。
    基尼系数:
    Gini ⁡ ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}(p)=\sum_{k=1}^K p_k\left(1-p_k\right)=1-\sum_{k=1}^K p_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
    其中, p k p_{k} pk表示label=k的概率。
    熵:
    H ( X ) = − ∑ i = 1 n p i log ⁡ p i H(X)=-\sum_{i=1}^n p_i \log p_i H(X)=i=1npilogpi
    其中, p i p_{i} pi表示label=i的概率。
      下面我们以上面的表格为例来解释下这两个公式,先看下基尼系数,假设有一个数据有两个label分别为0,1,概率有如下三种情况。如下表:
    在这里插入图片描述

    我们代入基尼系数公式可得三种情况的基尼系数分别为:0.5,0.32,0。同理熵的计算方法也是一样。于是我们就得到了下面这幅图,基尼系数和熵的坐标图:在这里插入图片描述
      通过上面的计算可以看到属性的纯度越高(某一属性中,其中一类占比越高),基尼系数越小。由此,我们在选择属性的时候就可以通过基尼系数来选择。我们决策树要做的事情就是要让最终的基尼系数越小越好,数据的纯度更高。

    2.3.决策树构建

      下面我们开始使用上面我们给出的是否拖欠贷款进行构建决策树。首先我们需要选择一个属性作为根节点,我们现在使用基尼系数的方式来选择,那么我们就希望选择这个属性所分成的各个组的基尼系数的加权平均值是最小的。下面我们看下怎么来选择,在选择的时候我们需要计算不同属性的基尼系数的加权平均。我们以有房者为例进行计算:
    在这里插入图片描述
      有房者总共3个,无房7个,针对有房者对应的是否拖欠贷款的label中是的有0个,否的有3个;针对无房者是否拖欠贷款的label中是的有3,否的有4个。所以我们可计算针对有房者的基尼系数是0,无房者的基尼系数是 25 49 \frac{25}{49} 4925。我们对这两个基尼系数计算一下加权平均:
    3 10 × 0 + 7 10 × 25 49 = 5 14 \frac{3}{10}\times0+\frac{7}{10}\times \frac{25}{49}=\frac{5}{14} 103×0+107×4925=145
      同理我们可以计算出婚姻状况和年收入的基尼系数分别是 3 10 \frac{3}{10} 103 5 14 \frac{5}{14} 145。注意,我们这里计算婚姻状况的时候是把离婚和单身算作一类,年收入以8w为分界线分两类。我们上面讲了基尼系数越小,纯度越高,所以我们以婚姻状况为根节点进行划分得到如下图:
    在这里插入图片描述
    至此,关于决策树的内容基本上已经介绍完了,欢迎各位大佬批评指正。

  • 相关阅读:
    MDC、ThreadLocal、InheritableThreadLocal的区别和联系
    【DP】大厂真题:小红书2023秋招提前批-连续子数组最大和
    暂退法dropout----详解与分析(多层感知机)
    【Redis专题】Redis核心数据结构实战与高性能原理解析
    【Qt】顶层窗口和普通窗口区别以及用法
    C语言---汉诺塔与青蛙跳台阶。
    【前端实例代码】仅使用 HTML 和 CSS 的动画登录表单(超简单)
    论人机关系
    Fiber Golang:Golang中的强大Web框架
    解释一下用于WebRTC的SRTP的实时传输协议
  • 原文地址:https://blog.csdn.net/qq_38683460/article/details/127372871