机器学习笔记(四)-决策树

server/2024/10/18 9:11:06/

决策过程的最终结果对应我们期望的判定结果,一颗决策树包含一个根结点、若干个内部结点、若干个叶结点。决策树的生成是一个递归的过程,一般三种情况会导致递归返回:

(1)当前结点包含的样本属于同一类别,无需划分

(2)当前属性集为空,或者所有样本在所有属性上取值相同,无法划分(此时我们把当前结点标记为叶结点,将其类别设定为该结点所含样本最多的类别,是利用当前结点的后验分布)

(3)当前结点包含的样本集合为空,不能划分(把父节点的样本分布作为当前结点的先验分布)。

决策树学习关键:即如何选择最优划分属性,一般我们希望分支结点包含的样本尽可能属于同一类别。

划分选择:这些准则对决策树的尺寸影响较大,对其泛化能力影响较小

1、以信息增益作为准则----对取值数目较多的属性有偏好

定义信息熵作为样本纯度度量的指标。

2、增益率----对取值数目较少的属性有偏好

3、基尼系数

剪枝处理:使用方法和程度对决策树泛化能力影响显著

目的:为了解决过拟合

基本策略:预剪枝(可能带来欠拟合风险)、后剪枝(欠拟合的风险很小,泛化性能往往优于预剪枝)

连续与缺失值(在决策数中使用连续属性)

连续值处理:连续属性在样本上的取值进行排序,对相邻属性取值的中位数作为候选点进行划分。

PS:若当前结点划分属性为连续属性,该属性还可以作为其后代结点的划分属性,这一点与离散属性不同。

缺失值处理:
问题:属性值缺失如何进行划分属性选择;给定划分属性,样本在该属性上缺失值,应如何对样本进行划分。

方法:利用没有缺失的样本判断属性的优劣;给样本属性已知和样本属性未知的样本不同的权值。

多变量决策树

将每个属性视为一个坐标轴,对样本分类意味着在这个坐标空间中寻找不同类样本之间的分类边界,决策树分类边界有一个明显的特点,即由若干个与坐标轴平行的分段组成,因此具有较好的可解释性。当使用斜划分时,就成为了多变量决策树。此时,非叶结点不再是某一个属性,而是对属性的线性组合进行测试。


http://www.ppmy.cn/server/131116.html

相关文章

小米电机与STM32——CAN通信

背景介绍:为了利用小米电机,搭建机械臂的关节,需要学习小米电机的使用方法。计划采用STM32驱动小米电机,实现指定运动,为此需要了解他们之间的通信方式,指令写入方法等。花了很多时间学习,但网络…

react+ts+vite 别名一直爆红问题

已经配置如下代码安装了types/node import path from "path"; // https://vitejs.dev/config/ export default defineConfig({plugins: [react()],server: {proxy: {"/api": {target: "http://localhost:3000",changeOrigin: true,rewrite: (pa…

Django 1.2标准日志模块出现奇怪行为时的解决方案

在 Django 1.2 中,标准日志模块有时会出现意想不到的行为,例如日志消息未按预期记录、日志级别未正确应用或日志格式错乱等。这些问题可能源于日志配置不当、日志模块被多次初始化、或日志模块被其他包覆盖等原因。下面是一些常见问题的排查方法和解决方…

网络安全产品类型

1. 防火墙(Firewall) 功能:防火墙是网络安全的第一道防线,通过检查进出网络的流量来阻止未经授权的访问。它可以基于预定义的安全规则,过滤数据包和阻止恶意通信。 类型: 硬件防火墙:以专用设备…

Pandas库

一、安装 Pandas是一个基于Python构建的专门进行数据操作和分析的开源软件库,它提供了高效的数据结构和丰富的数据操作工具。 安装 pip install pandas 二、核心数据结构 Pandas库中最常用的数据类型是Series和DataFrame: Series:一维数…

大数据毕业设计选题推荐-B站热门视频数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Perl 子程序(函数)

Perl 子程序(函数) Perl 是一种高级、解释型、动态编程语言,广泛用于CGI脚本、系统管理、网络编程、 finance, bioinformatics, 以及其他领域。在Perl中,子程序(也称为函数)是组织代码和重用代码块的重要方…

6、Spring Boot 3.x集成RabbitMQ动态交换机、队列

一、前言 本篇主要是围绕着 Spring Boot 3.x 与 RabbitMQ 的动态配置集成,比如动态新增 RabbitMQ 交换机、队列等操作。二、默认RabbitMQ中的exchange、queue动态新增及监听 1、新增RabbitMQ配置 RabbitMQConfig.java import org.springframework.amqp.rabbit.a…