决策树简介

决策树是一种树形结构

树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

(仅举例无其他意义或隐喻)就像一个女孩去相亲,那么首先询问是否大于30,大于则不见,不大于再看外貌条件,不丑则在看收入条件等。这些选择就是这棵树的特征

决策树的建立过程

1.特征选择:选取有较强分类能力的特征。

2.决策树生成:根据选择的特征生成决策树。

3. 决策树也易过拟合,采用剪枝的方法缓解过拟合

然后我们引入一个特殊的概念:

信息熵

熵 Entropy :信息论中代表随机变量不确定度的度量

熵越大,数据的不确定性度越高,信息就越多

熵越小,数据的不确定性越低

信息熵的计算方法

例如

信息增益

公式有点难看明白,所以来看个例子8:

了解完熵之后,就可以看后面的了

ID3决策树

接下来还要了解一些信息增益率

信息增益率 = 信息增益 /特征熵

求特征ab的信息增益率

CART树

基尼值GiniD):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,GiniD值越小,数据集D的纯度越高

基尼指数Gini_indexD):选择使划分后基尼系数最小的属性作为最优化分属性。

例子

CRAT分类树

已知:是否拖欠贷款数据。

需求:计算各特征的基尼指数,选择最优分裂点

CART回归树

平方损失

根据平方损失构建CART回归树

但是实际使用中回归问题还是用线性回归来做,决策树容易过拟合

"""
结论:回归类的问题。即能使用线性回归,也能使用决策树回归优先使用线性回归,因为决策树回归可能比较容易导致过拟合
"""import  numpy as np
import  pandas as pd
from sklearn.tree import  DecisionTreeRegressor  #回归决策树
from sklearn.linear_model import  LinearRegression #线性回归
import matplotlib.pyplot as plt#1、获取数据
x = np.array(list(range(1, 11))).reshape(-1, 1)
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])#2、创建线性回归 和 决策树回归
es1=LinearRegression()
es2=DecisionTreeRegressor(max_depth=1)
es3=DecisionTreeRegressor(max_depth=10)#3、模型训练
es1.fit(x,y)
es2.fit(x,y)
es3.fit(x,y)#4、准备测试数据 ,用于测试
# 起始, 结束, 步长.
x_test = np.arange(0.0, 10.0, 0.1).reshape(-1, 1)
print(x_test)#5、模型预测
y_predict1=es1.predict(x_test)
y_predict2=es2.predict(x_test)
y_predict3=es3.predict(x_test)#6、绘图
plt.figure(figsize=(10,5))#散点图
plt.scatter(x,y,color='gray',label='data')plt.plot(x_test,y_predict1,color='g',label='liner regression')
plt.plot(x_test,y_predict2,color='b',label='max_depth=1')
plt.plot(x_test,y_predict3,color='r',label='max_depth=10')plt.legend()
plt.xlabel("data")
plt.ylabel("target")plt.show()

决策树剪枝

决策树剪枝是一种防止决策树过拟合一种正则化方法;提高其泛化能力。

把子树的节点全部删掉,使用用叶子节点来替换

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

优点:

预剪枝使决策树的很多分支没有展开,不单降低了过拟合风险,还显著减少了决策树的训练、测试时间开销

缺点:

有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高;

预剪枝决策树也带来了欠拟合的风险

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

优点:比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝

缺点:后剪枝先生成,后剪枝。自底向上地对树中所有非叶子节点进行逐一考察,训练时间开销比未剪枝的决策树和预剪枝的决策树都要大得多。

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

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

相关文章

SQL面试题及详细答案150道(116-135) --- 高级查询与函数篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 116. 如何使用CASE语句实…

VeRL:强化学习与大模型训练的高效融合框架

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1 概述:VeRL的起源与核心价值 VeRL(Versatile…

2. 计算机系统基础知识

1 计算机系统概述 计算机系统 (Computer System) 是指用于数据管理的计算机硬件、软件及网络组成的系统。 计算机系统可划分为硬件(子系统)和软件(子系统)两部分。硬件由机械、电子元器件、磁介质和光介质等物理实体构成,例如处理器(含运算单元和控制单元)、存储器、…

国产EtherCAT从站芯片FCE1353与N32G435 MCU功能板测试流程

上期推荐,我们在前期介绍了FCE1353与国民N32G435 MCU开发板的基本情况,本期主要介绍此开发板的测试流程,以便用户拿到此板做功能验证、兼容性测试、可靠性测试时更加便捷地提高开发验证效率。01概述FCE1353_N32G435RBL7_GPIO_V1 开发板主要通…

向日葵亮点16功能解析:被控端“快速解锁”

向日葵16重磅上线,本次更新新增了诸多实用功能,提升远控效率,实现应用融合突破设备边界,同时全面提升远控性能,操作更顺滑、画质更清晰!无论远程办公、设计、IT运维、开发还是游戏娱乐,向日葵16…

深度解析:IService 与 ServiceImpl 的区别

在使用 MyBatis-Plus 开发业务逻辑时,IService 和 ServiceImpl 是经常遇到的两个核心类。很多初学者会疑惑: 为什么要定义 IService?ServiceImpl 又解决了什么问题?它们之间到底有什么区别与联系? 本文将结合源码与应用…

YOLO12 改进、魔改|通道自注意力卷积块CSA-ConvBlock,通过动态建模特征图通道间的依赖关系,优化通道权重分配,在强化有效特征、抑制冗余信息

在分割的研究中,传统卷积神经网络(CNN)存在两大关键问题:一是池化操作虽能降低计算复杂度,却会导致特征图中有效空间信息丢失,尤其太阳暗条这类不规则、精细结构的特征易被削弱;二是传统 CNN 对…

JuiceFS分布式文件系统

对象存储虽然具备极高的扩展性和成本优势,却缺乏对POSIX语义的支持,导致许多应用无法直接使用。正是在这样的背景下,JuiceFS 应运而生——它巧妙地融合了对象存储的弹性与传统文件系统的易用性,为现代应用提供了一种全新的存储解决…

nginx配置前端请求转发到指定的后端ip

nginx conf配置 配置把“前端静态文件”和“后端接口”统一收在 同一个 server{} 块 里,通过 两条 location 做分流,其中 /api 这条 location 用到了一点“小技巧”把路径裁掉后再转发。下面按执行顺序逐句拆解,告诉你“请求是怎么被转发到 1…

HTML 各种标签的使用说明书

HTML 各种标签的使用说明书 1. HTML 简介 HTML(HyperText Markup Language,超文本标记语言)是用于创建网页的标准标记语言。它使用一系列标签来描述网页的结构和内容,这些标签被浏览器解释并渲染成用户看到的网页。HTML是构建We…

从关键词到语义理解:小陌引擎如何重构AI搜索优化逻辑?

引言:AI搜索时代的范式转变在传统互联网时代,SEO(搜索引擎优化)是企业数字营销的核心策略,通过关键词密度、外链建设等技术手段提升网页在搜索引擎结果页(SERP)中的排名。然而,随着生…

ADE explorer遇到XVFB服务器的问题

遇到这个报错,是因为服务器没有安装xvfb的原因。yum install Xvfb即可解决问题。

期权的套利怎么理解?

期权套利是利用期权价格之间的不合理偏差,通过构建对冲组合获取无风险利润的策略。其核心逻辑基于“无套利定价原则”——若存在价格偏差,市场力量会迅速修正,套利者通过反向操作锁定利润。期权的套利怎么理解?一、主要套利类型与…

RabbitMQ 重试机制 和 TTL

目录 1. 重试机制 1.1 简介 1.2 配置文件 1.3 消费者确认机制为 auto 时 1.4 消费者确认机制为 manual 时 2. TTL 2.1 设置消息的过期时间 2.2 设置队列的过期时间 2.3 给过期队列中消息设置过期时间 1. 重试机制 1.1 简介 在消息传递过程中, 可能会遇到各种问题, …

四、FVP启动linux

目录 1 实验目的及环境 1.1 实验目的 1.2 实验环境 1.2.1 拉取代码 1.2.2搭建交叉编译环境 2 相关镜像编译 2.1 TF-A镜像编译 2.2 U-Boot镜像编译 2.3 Linux Kernel镜像编译 2.4 构建跟文件系统 3 启动linux内核 3.1 启动脚本构建 3.2 启动Linux内核 1 实验目的及环境 1.1 实验…

浅聊一下微服务的服务保护

在微服务架构里,服务间调用关系错综复杂,一个服务出问题很可能引发连锁反应,也就是 “雪崩”。今天就带大家从零开始学习 Sentinel,这款阿里开源的微服务保护工具,帮你解决雪崩难题,做好流量控制、隔离降级…

ECharts Gallery:Apache官方数据可视化模板库,助你快速制作交互图表并实现深度定制

你有没有过这种时候?手里攥着一堆 Excel 数据,想做个直观的图表给同事看,用 Excel 自带的图表吧,样式丑不说,稍微复杂点的交互(比如点击柱子显示详情)根本做不了;想自己用代码写吧&a…

[数据结构——lesson3.单链表]

目录 引言 学习目标: 1.什么是链表 2.链表的分类 2.1 单向链表和双向链表 (1)单向链表 (2)双向链表 2.2 带头结点链表和不带头结点链表 (1)带头结点链表 (2)不带头结点链表 2.3 循环链表和不循环链表 (1)循环链表 (2)非循环链表 3.链表的实…

从零深入理解嵌入式OTA升级:Bootloader、IAP与升级流程全解析

引言(Opening)想象一下,你开发的一款智能水杯、一个环境监测设备或者一台共享充电宝,已经部署到了成千上万的用户手中。突然,你发现了一个软件bug,或者需要增加一个酷炫的新功能。你不可能派人跑到每个设备…

【Ansible】实施 Ansible Playbook知识点

1.清单概念与静态清单文件是什么?答:Ansible 清单是被管理主机的列表,用于明确Ansible的管理范围,分为静态清单和动态清单。静态清单是通过手动编辑的文本文件来定义被管主机,文件格式可以是INI格式或YAML格式。在INI格…