决策树的基本构建流程

决策树的基本构建流程

决策树的本质是挖掘有效的分类规则,然后以树的形式呈现

这里有两个重点:

  1. 有效的分类规则;
  2. 树的形式。

有效的分类规则:叶子节点纯度越高越好,就像我们分红豆和黄豆一样,我们当然是想把红豆和黄豆完全分开。

这里标签的纯度的衡量指标有:

  1. 分类误差;
  2. 信息熵(Entropy)
  3. 基尼系数(Gini)

我们举例来看看这三个指标是如何计算的:

对于单个数据集

假如我们有10条样本,6条0类样本,4条1类样本

则0类样本占: 6 10 \frac{6}{10} 106
1类样本占: 4 10 \frac{4}{10} 104

分类误差(1-多数类的占比): 1 − 6 10 = 0.4 1-\frac{6}{10}=0.4 1106=0.4
信息熵: − 6 10 ∗ l o g 2 6 10 − 4 10 ∗ l o g 2 4 10 = 0.97 -\frac{6}{10}*log_2\frac{6}{10}-\frac{4}{10}*log_2\frac{4}{10} =0.97 106log2106104log2104=0.97
基尼系数: 1 − ( ( 6 10 ) 2 + ( 4 10 ) 2 ) = 0.48 1-((\frac{6}{10})^2+(\frac{4}{10})^2)=0.48 1((106)2+(104)2)=0.48

对于多个数据集
在这里插入图片描述

如何计算B1,B2两个子节点整体的评估指标?

加权求和

这里以基尼系数为例

Gini_B1 = 1 − ( ( 2 5 ) 2 + ( 3 5 ) 2 ) = 0.48 1-((\frac{2}{5})^2+(\frac{3}{5})^2)=0.48 1((52)2+(53)2)=0.48

Gini_B2 = 0

Gini_B = 5 8 \frac{5}{8} 85*Gini_B1 + 3 8 \frac{3}{8} 83*Gini_B2= 5 8 ∗ 0.48 \frac{5}{8}*0.48 850.48+ 3 8 ∗ 0 \frac{3}{8}*0 830=0.3

介绍完了有效的分类规则,我们再来看看第二个重点:树的形式。
下面简单画一下二层分类树。
在这里插入图片描述
主流的决策树分类类别可划分为:

  1. D3(Iterative Dichotomiser 3) 、C4.5、C5.0决策树
  2. CART(Classification and Regression Trees)决策树
  3. CHAID(Chi-square automatic interaction detection)树

下面我们分别来看看决策树构建重点问题

1. 决策树的生长方向?

决策树生长的方向也就是令每个划分出来的子集纯度越来越高的方向

2. 如何挑选有效的分类规则?

选择信息增益最大的

假设我们有age列:
在这里插入图片描述
首先逐列对特征进行数值排序:
在这里插入图片描述
然后寻找特征不同取值之间的中间点为切点:
在这里插入图片描述
N个取值,有N-1种划分方式
这里有10个取值,所以有9种划分方式将数据集一分为二。
假设我们以10和9的中间点为划分方式
10 + 9 2 = 9.5 \frac{10+9}{2}=9.5 210+9=9.5
则我们可以以age是否小于等于9.5为划分规则,将数据集一分为二。

Notes:
1.CART(二叉树)用这种方法同时处理连续变量(预测值是划分后子数据集的均值)和离散变量;
2. C4.5连续变量用这种方式,离散变量用列的取值。

信息增益的计算:
CART Gain = Gini(父节点)- Gini(子节点)
ID3和C4.5 Gain = Entropy(父节点)- Entropy(子节点)

3. 如何停止迭代生长?

收敛条件:
(1)两轮迭代损失函数的差值小于某个值;
(2)限制最大迭代次数,也就是约束树最多生长几层

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/243617.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表单的总数据为什么可以写成一个空对象,不用具体的写表单中绑定的值,vue3

<el-form :model"form" label-width"120px"><el-form-item label"Activity name"><el-input v-model"form.name" /></el-form-item> </el-form> const form ref({})from为空对象 在v-model里写form…

Python 猎户星空Orion-14B,截止到目前为止,各评测指标均名列前茅,综合指标最强;Orion-14B表现强大,LLMs大模型

1.简介 Orion-14B-Base是一个具有140亿参数的多语种大模型&#xff0c;该模型在一个包含2.5万亿token的多样化数据集上进行了训练&#xff0c;涵盖了中文、英语、日语、韩语等多种语言。在多语言环境下的一系列任务中展现出卓越的性能。在主流的公开基准评测中&#xff0c;Orio…

Tensorflow2.0笔记 - tensor的合并和分割

主要记录concat,stack,unstack和split相关操作的作用 import tensorflow as tf import numpy as nptf.__version__#concat对某个维度进行连接 #假设下面的tensor0和tensor1分别表示4个班级35名同学的8门成绩和两个班级35个同学8门成绩 tensor0 tf.ones([4,35,8]) tensor1 tf…

centos安装:node.js、npm及pm2

前言 Node.js发布于2009年5月&#xff0c;由Ryan Dahl开发&#xff0c;是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;使用了一个事件驱动、非阻塞式I/O模型&#xff0c;让JavaScript 运行在服务端的开发平台&#xff0c;它让JavaScript成为与PHP、Python、Perl、Ru…

20.云原生之GitLab CICD实战

云原生专栏大纲 文章目录 GitLab RunnerGitLab Runner 介绍Gitlab Runner工作流程 Gitlab集成Gitlab RunnerGitLab Runner 版本选择Gitlab Runner部署docker-compose方式安装kubesphere中可视化方式安装helm方式安装 配置gitlab-runner配置gitlab-ci.ymlgitlab-ci.yml 介绍编写…

SpringCloud Alibaba 深入源码 - Nacos 分级存储模型、支撑百万服务注册压力、解决并发读写问题(CopyOnWrite)

目录 一、SpringCloudAlibaba 源码分析 1.1、SpringCloud & SpringCloudAlibaba 常用组件 1.2、Nacos的服务注册表结构是怎样的&#xff1f; 1.2.1、Nacos的分级存储模型&#xff08;理论层&#xff09; 1.2.2、Nacos 源码启动&#xff08;准备工作&#xff09; 1.2.…

Linux编辑器---vim

目录 1、vim的基本概念 2正常/普通/命令模式(Normal mode) 2、1命令模式下一些命令&#xff08;不用进入插入模式&#xff09; 3插入模式(Insert mode) 4末行/底行模式(last line mode) 4、1底行模式下的一些命令 5、普通用户无法进行sudo提权的解决方案 6、vim配置问题 6、1配…

超优秀的三维模型轻量化、格式转换、可视化部署平台!

1、基于 HTML5 和 WebGL 技术&#xff0c;可在主流浏览器上进行快速浏览和调试&#xff0c;支持PC端和移动端 2、自主研发 AMRT 展示框架和9大核心技术&#xff0c;支持3D模型全网多端流畅展示与交互 3、提供格式转换、减面展UV、烘焙等多项单模型和倾斜摄影模型轻量化服务 4、…

uniapp 链接跳转(内部跳转和外部跳转)

使用uniapp的超链接跳转在微信小程序中会出现复制链接在外面在跳转如图 这样的客户体验感不好 我们需要可以直接跳转查看 思路&#xff1a;webview 1.先在自己uniapp项目pages.json建一个内部页面webview.vue 在page.json里面指向我们跳转的这个内部路径(这个创建页面会自动…

Unity中URP下的SimpleLit的 BlinnPhong高光反射计算

文章目录 前言一、回顾Blinn-Phong光照模型1、Blinn-Phong模型&#xff1a; 二、URP下的SimpleLit的 BlinnPhong1、输入参数2、程序体计算 前言 在上篇文章中&#xff0c;我们分析了 URP下的SimpleLit的 Lambert漫反射计算。 Unity中URP下的SimpleLit的 Lambert漫反射计算 我…

别再因为React、Vue吵了,真的毫无新意!

最近尤大的一个推文引起了不小热议&#xff0c;大概经过是&#xff1a; 有人在推上夸React文档写的好&#xff0c;把可能的坑点都列出来尤看到后批评道&#xff1a;框架应该自己处理这些坑点&#xff0c;而不是把他们暴露给用户 尤大在推上的发言一直比较耿直&#xff0c;这次…

2024-01-22(MongoDB)

1.Mongodb使用的业务场景&#xff1a; 传统的关系型数据库/mysql在“三高”需求以及应对web2.0的网站需求面前&#xff0c;有点力不从心&#xff0c;什么是“三高”需求&#xff1a; a. 对数据库高并发的读写需求 b. 对海量数据的高效率存储和访问需求 c. 对数据库的高可扩…

Redis应用(1)缓存(1.2)------Redis三种缓存问题

一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。所谓穿透&#xff0c;就是直接透过了redis&#xff0c;直接透到数据库 2、原因&#xff1a;…

Spring Boot3整合Druid(监控功能)

目录 1.前置条件 2.导依赖 错误依赖&#xff1a; 正确依赖&#xff1a; 3.配置 1.前置条件 已经初始化好一个spring boot项目且版本为3X&#xff0c;项目可正常启动。 作者版本为3.2.2最新版 2.导依赖 错误依赖&#xff1a; 这个依赖对于spring boot 3的支持不够&#…

【学习】FPN特征金字塔

论文&#xff1a;Feature Pyramid Networks for Object Detection &#xff08;CVPR 2016) 参考blog&#xff1a;https://blog.csdn.net/weixin_55073640/article/details/122627966 参考视频讲解&#xff1a;添加链接描述 卷积网络中&#xff0c;深层网络容易响应语义特征&am…

芯驰E3340软件编译以及更新步骤

打开已有工程File->Open Solution: 东南项目&#xff1a;e3340\boards\e3_324_ref_display\proj\jetour-t1n-fl3\sf\SES 编译&#xff1a;build->build sf 增加头文件和宏定义&#xff1a; 编译完成sf后&#xff0c;进行编译bootloader 东南项目&#xff1a;e3340\boa…

k8s-kubectl常用命令

一、基础命令 1.1 get 查询集群所有资源的详细信息&#xff0c;resource包括集群节点、运行的Pod、Deployment、Service等。 1.1.1 查询Pod kubectl get po -o wid 1.1.2 查询所有NameSpace kubectl get namespace 1.1.3 查询NameSpace下Pod kubectl get po --all-namespaces…

机器人学论文——智能施药机器人调研报告

目录 摘 要 Abstract 第一章&#xff1a;引言 1.1研究背景 1.2 研究意义 1.3文章架构 第二章&#xff1a;智能施药机器人发展现状 2.1引言 2.2 大田智能施药机器人发展现状 2.3 果园智能施药机器人发展现状 2.4 设施农业智能施药机器人发展现状 第三章&#xff1a;智能施药机器…

【Spring Boot 3】【Redis】基本数据类型操作

【Spring Boot 3】【Redis】基本数据类型操作 背景介绍开发环境开发步骤及源码工程目录结构 背景 软件开发是一门实践性科学&#xff0c;对大多数人来说&#xff0c;学习一种新技术不是一开始就去深究其原理&#xff0c;而是先从做出一个可工作的DEMO入手。但在我个人学习和工…

http网络编程——在ue5中实现文件传输功能

http网络编程在ue5中实现 需求&#xff1a;在unreal中实现下载功能&#xff0c;输入相关url网址&#xff0c;本地文件夹存入相应文件。 一、代码示例 1.Build.cs需要新增Http模块&#xff0c;样例如下。 PublicDependencyModuleNames.AddRange(new string[] { "Core&q…