描述基于基尼系数法构建决策树的步骤_决策树 基尼系数

描述基于基尼系数法构建决策树的步骤_决策树 基尼系数决策树的基尼系数计算过程1、基尼指数的计算在介绍具体的计算之前,先从一个例子入手吧。先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no1、数据ChestPainGoodBloodCirculationBlockedArteriesHeartDiseaseNoNoNoNoYesYesYesYesYesYesNoNoYesNo???Yesetc…etc…etc…etc…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

决策树的基尼系数计算过程

1、基尼指数的计算

在介绍具体的计算之前,先从一个例子入手吧。

先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no

1、数据

Chest Pain

Good Blood Circulation

Blocked Arteries

Heart Disease

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

No

No

Yes

No

???

Yes

etc…

etc…

etc…

etc…

2、统计

Chest Pain

true

Heart Disease

Yes:105

No:39

false

Heart Disease

Yes:34

No:125

Good Blood Circulation

true

Heart Disease

Yes:37

No:127

false

Heart Disease

Yes:100

No:33

Blocked Arteries

true

Heart Disease

Yes:92

No:31

false

Heart Disease

Yes:45

No:129

在统计数据的时候,若遇见缺失值,最简单的办法就是先跳过这个缺失值

从统计的数据可以看出,在某一特征的条件下,无论是true或者false都有患有Heart Disease的人,同时也都有健康的人。且这两个分布是不同,有的true中患有Heart Disease的多一些,有的false中患有Heart Disease的多一些,则就要引出另一个概念—纯度。刚刚将的那种情况其实就是不纯的,那么我们接下来的操作就是对其不断的提纯。

接下来引出基尼指数的概念:基尼指数遵循最小的准则,计算得到的基尼指数越小,则越纯。接下来则以该特征作为决策树的一个分支。但若当前节点的基尼指数小于待划分节点的基尼指数时,则不需要划分。

3、基尼指数的基本公式

Single_gini = 1 − ( a a + b ) 2 − ( b a + b ) 2 1-(\dfrac{a}{a+b})^2-(\dfrac{b}{a+b})^21−(a+ba​)2−(a+bb​)2

Gini_Index = Single_gini_true * a + b a + b + c + d \dfrac{a+b}{a+b+c+d}a+b+c+da+b​ + Single_gini_false * c + d a + b + c + d \dfrac{c+d}{a+b+c+d}a+b+c+dc+d​

4、上述例子的计算过程

第一次分支

Chest Pain

Gini_index = 0.364

Good Blood

Gini_indx = 0.360

Blocked Arteries

Gini_index = 0.381

有上面这些结果可知,我们第一次分叉应该选择Good Blood这个特征,因为前面我们提到,在同一情况下一个特征的基尼指数越小,其纯度也就越高,也就越具有代表性,分类的效果也就越好。上面三个例子相比较,我们应该选择Good Blood这个作为决策树的一个分支。

第二次分支

我们第一次是以Good Blood为分支的那么,假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.35(false分支上的计算也是同理,这里我们只进行true分支上的基尼指数的计算)

进行分支后我们对剩余的两个特征的值进行统计

Chest Pain

true

Heart Disease

Yes:13

No:98

false

Heart Disease

Yes:24

No:29

Blocked Arteries

true

Heart Disease

Yes:24

No:25

false

Heart Disease

Yes:13

No:102

并在此基础上,我们进行第二次分支

接下来来计算Chest Pain和Blocked Arteries这两类特征在Good Blood这类特征的分支下的基尼指数

Chest Pain

Gini_index = 0.3

Blocked Arteries

Gini_index = 0.29

因为0.29<0.3<0.35,故我们选择Blocked Arteries作为 Good Blood的true分支下的一个分支节点

第三次分支

假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.5

进行分支后我们对剩余的特征的值进行统计

Chest Pain

true

Heart Disease

Yes:17

No:3

false

Heart Disease

Yes:7

No:22

并在此基础上,我们进行第三次分支

接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

Chest Pain

Gini_index = 0.33

因为0.33<0.5,故我们选择Chest Pain作为Blocked Arteries的true分支下的一个分支节点

但假如选定的分支是false,那么其基尼指数计算得到大概是0.2

Chest Pain

true

Heart Disease

Yes:7

No:26

false

Heart Disease

Yes:6

No:76

接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

Chest Pain

Gini_index = 0.29

因为0.29>0.2故该节点不需要分支,因为分支的目的是提纯,而提纯,则是选择使基尼指数变小的那个特征,而0.29>0.2基尼系数上升,没有达到提纯的目的,故不需要分支。

学习视频:https://www.bilibili.com/video/BV17J411C7zZ?p=59

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182506.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月13日 上午10:46
下一篇 2022年10月13日 上午10:46


相关推荐

  • 自定义 MCP Server,在 cursor 中连接本地 MySQL 实现了统计分析

    自定义 MCP Server,在 cursor 中连接本地 MySQL 实现了统计分析

    2026年3月16日
    2
  • 详细分析小米抢购软件的实现步骤

    详细分析小米抢购软件的实现步骤不知道是饥饿营销还是真的供不应求 小米的火热真的是无法阻挡 众多产品一一亮相 着实吸引眼球 但是一机难求的局面没有改善 让众多米粉败兴而归 我们来实现一个简单的小米抢购软件 让抢购之路多上那么一点点希望 首先要说明的是小米抢购过程中的很多页面和请求地址都是在开放抢购当天时间点到了之后才开放 抢购结束会关闭 所以你在按照博客的内容自己实现的过程中有请求地址不能访问的 请在抢购开始

    2026年3月20日
    2
  • JavaWeb专栏之(二):Idea创建JavaWeb项目

    JavaWeb专栏之(二):Idea创建JavaWeb项目JavaWeb 专栏之 二 Idea 创建 JavaWeb 项目前言 关注 遇见小 Du 说 微信公众号 分享更多 Java 知识 不负每一次相遇 更多内容请访问 www dushunchang top 在上一篇博客中传送门 小 Du 带大家了解了什么 JavaWeb B C 与 C S 结构 以及 Java 开发中最常见的 MVC 三层架构模式 本文章将带大家使用 Idea 创建 JavaWeb 项目的教程 在企业开发中 我们经常使用 maven 构建框架来创建项目 但很多初学者没有接触过 Maven 构建工具 所以本期教程使用 Idea 自带的 W

    2026年3月17日
    2
  • jqGrid基本用法与示例「建议收藏」

    jqGrid基本用法与示例「建议收藏」转自:https://chuanlu.iteye.com/blog/1953544一、jqGrid的基本用法1、html页面Html代码<!DOCTYPE html 

    2022年7月3日
    59
  • Java 里氏代换原则

    Java 里氏代换原则一 什么是里氏代换原则 一个软件实体如果使用的是一个基类的话 那么一定适用于其子类 而且它根本不能察觉出基类对象和子类对象的区别 比如 假设有两个类 一个是 Base 类 另一个是 Derived 类 并且 Derived 类是 Base 类的子类 那么一个方法如果可以接受基类对象 Base 的话 method Baseb 那么它必然可以接受一个子类对象 d 也即 method d 里氏代换原则是继承复用的基石 只有当衍生类可以替换掉基类 软件单位的功能不会受到影响时 基类才能真正被复用 而衍生类也才能够在基类的基

    2026年3月17日
    2
  • vs2015配置opencv_捷达VS5进取版有哪些配置

    vs2015配置opencv_捷达VS5进取版有哪些配置目录安装环境说明下载OpenCV配置OpenCV开发环境属性表测试可能存在的问题安装环境说明操作系统:Windows10OpenCV版本:OpenCV2和OpenCV3VS版本:VS2015或者VS2017下载OpenCVOpenCV下载地址:http://opencv.org/或者直接搜OpenCV下…

    2022年10月4日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号