决策树基础

news2024/9/22 23:26:48

概述

  1. 决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一 个测试输出,每个叶结点代表一种类别。
  2. 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。

模型 : 特征树决定的空间划分

策略:不确定信息“度量”最小

算法:以不同的指标选择最优特征进行空间划分,直到满足停止条件

         ID3   (信息增益 )、C4.5    ( 信息增益比)、CART  (二叉树、分类与回归、Gini指数

流程:

  1. 特征选择:决策树在每个节点上选择最佳特征进行分割,这个特征能够最好地区分数据。
  2. 树的增长:通过递归地选择特征并分割数据,直到满足停止条件,如达到最大深度或叶节点中的样本数量小于某个阈值。
  3. 剪枝:为了防止过拟合,决策树需要剪枝,即去除一些不必要的分支。

算法

(1) ID3

使用信息增益作为选择特征的标准,它倾向于选择具有最高信息增益的特征进行分割。

1.1 熵

日常生活中,当我们要搞清楚某件事情时,这件事情的不确定性越大,我们需要了解的信息就越多。由此可以看出,一条信息的信息量大小和它的不确定性有直接关系。受此启发,人们就拿不确定性这个量来度量信息量的大小。在信息论或概率统计中,用熵度量随机变量的不确定性。熵值越大 ,随机变量的不确定性就越大。

定义随机变量X的概率分布为p(x),从而定义X信息量:H(X)=-log_{2}P(x)

对离散型随机事件X的信息量求期望,得熵的定义:

H(X)=\sum_{i=1}^{n}P_{i}logP_i

注:经典熵的定义,底数是2,单位是bit;

        若底数是e,单位是nat(奈特)。

1.2 信息增益

联合熵:

H(Y,X)=H(Y|X)+H(X)

条件熵为:

H(Y|X)=\sum_{x,y}P(x)H(Y|X=x)

信息增益概念:当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。

信息增益表示:得知特征A的信息而使得类X的信息的 不确定性减少的程度。

信息增益定义:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:

g(D,A)=H(D)-H(D|A)

选择信息增益最大的特征作为当前的分裂特征(根节点)。

其中,数据集D的经验熵为:

H(D)=-\sum_{k=1}^{K}\frac{|C_k|}{|D|}log_{2}\frac{|C_k|}{|D|}

信息增益的缺点:特征的类别越多,其信息增益越大,越容易形成分裂特征,造成决策树宽且浅。

(2)C4.5

使用信息增益比(率)来选择特征,以避免偏向于具有更多值的特征

2.1 信息增益比

用信息增益作为划分训练集特征的标准时,有一个潜在的问题,那就是相比之其会倾向于选择类别取值较多的特征。因此人们提出使用信息增益比(Information Gain Ratio)来对这一问题进行校正。 

特征X对训练集的信息增益比定义为特征X的信息增益g(Y,X)与特征X的取值的熵 H(X) 的比值,记为g_{r}(D,A),即

g_{r}(D,A)=\frac{g(D,A)}{H(A)}

(3)CART(Classification and Regression Trees)

既可以用于分类也可以用于回归任务。使用Gini系数求解分类问题;使用平方误差最小求解回归问题。

3.1 基尼系数——分类树:目标变量是离散型

基尼系数(Gini) 可以用来度量任何不均匀分布,且介于 0~1 之间的数 (0指完全相等,1指完全不相等)。分类度量时,总体包含的类别越杂乱,基尼系数就越大 (与熵的概念相似)。基尼指数主要用来度量数据集的不纯度。基尼指数越小,表明样本只属于同一类的概率越高,即样本的纯净度越高。

分类问题中,假设有k个类,样本点属于k的概 率Pk,则概率分布的基尼指数:

 对给定的样本集合D,基尼指数:

Gini系数的图像、熵、分类误差 率三者之间的关系如下:

 

 说明:Gini系数越小越好。

3.2 平方误差最小——回归树:目标变量是连续型

对于含有M个样本、每个样本的特征维度为N的训练数据集D,遍历样本的特征变量Fn,n=1,2...M,对每一个特征变量Fn, 扫描所有可能的K个样本切分点Sk, k = 1,2, ..., K,样本切分点Sk每次将数据集D划分为D1和D2两个子集.我们的目标是选出划分点Sk,使得D1和D2各自集合的标准差最小,同时D1和D2的标准差之和也最小,写为数学表达式为:

其中, c1为数据集中所有样本的输出均值,yi是D1数据子集中各样本的实际值,c2为D2数据集中所有样本的输出均值,yj是D2数据子集中各样本的实际值。 

CART回归树的过程:

总结

一个属性的信息增益(率)大/Gini指数越小,表明属性对样本的熵减少的能力更强,这个属性使得数 据由不确定性变成确定性的能力越强

优点:

  1. 易于理解和解释:决策树的结构类似于流程图,可以直观地展示数据是如何被分割的,以及如何根据特征做出决策。

  2. 数据要求不高:决策树可以处理数值型和类别型数据,不需要复杂的数据预处理。

  3. 特征重要性评估:可以识别哪些特征对分类结果影响最大,提供特征重要性的信息。

  4. 处理缺失值:一些算法可以在构建树的过程中处理缺失值。

  5. 非线性:决策树可以捕捉数据中的非线性关系。

  6. 多类问题:决策树可以用于多类分类问题。

  7. 可视化:可以轻松地将决策树可视化,有助于理解模型的决策过程。

缺点:

  1. 容易过拟合:决策树容易生长成过于复杂的树,这可能导致模型在训练数据上表现良好,但在未见数据上表现差。

  2. 对噪声敏感:如果训练数据中包含噪声,决策树可能会学习到错误的规则。

  3. 对特征规模敏感:如果特征数量很多,尤其是当特征之间存在高度相关性时,决策树的性能可能会受到影响。

  4. 树的构建依赖于数据集:不同的数据集可能导致生成不同的树结构,这可能导致模型的泛化能力下降。

  5. 忽略特征间的交互:决策树通常不考虑特征之间的交互作用,这可能限制了模型的表达能力。

  6. 需要剪枝:为了防止过拟合,通常需要进行剪枝处理,这增加了模型构建的复杂性。(文中没有提及)

  7. 不稳定:小的变化在训练数据中可能会导致生成完全不同的树。

  8. 对类别不平衡不敏感:决策树在类别不平衡的数据集中可能表现不佳,因为它倾向于为多数类创建更多的分支。

  9. 基尼不纯度或信息增益的局限性:这些指标可能不会总是导致最优的分割,特别是在具有不同分布的数据集中。

图片来源 :《机器学习基础:从入门到求职》胡欢武

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学Java第16Day

学习目标:面向对象进阶 学习内容:Object、Objects、BigInteger、BigDecimal、正则表达式 学习时间:下午 3 点-下午 6 点 学习产出: 1. Object类 1.1 概述 查看API文档,我们可以看到API文档中关于Object类的定义如下&…

【SpringBoot3】场景整合(实战)

0 环境准备 0.0 云服务器 阿里云、腾讯云、华为云 服务器开通; 按量付费,省钱省心 安装以下组件:docker、redis、kafka、prometheus、grafana 下载windterm: https://github.com/kingToolbox/WindTerm/releases/download/2.5…

React-Native 宝藏库大揭秘:精选开源项目与实战代码解析

1. 引言 1.1 React-Native 简介 React-Native 是由 Facebook 开发的一个开源框架,它允许开发者使用 JavaScript 和 React 的编程模型来构建跨平台的移动应用。React-Native 的核心理念是“Learn Once, Write Anywhere”,即学习一次 React 的编程模型&am…

《LeetCode热题100》---<5.普通数组篇六道>

本篇博客讲解LeetCode热题100道普通数组篇中的六道题 第一道:最大子数组和(中等) 第二道:合并区间(中等) 第一道:最大子数组和(中等) 法一:贪心算法 class So…

文件上传漏洞--之upload-labs靶场(第1关到第5关)专栏更新ing.....

第一关&#xff1a; 第一步&#xff1a;新建一个木马文件muma.php 第二步&#xff1a;在木马文件中写入一句话木马访问php主页 <?php eval(phpinfo());?> ​ 第三步&#xff1a;直接上传试一下 现上传一个png格式文件查看一下 然后上传一句话木马文件的&#xff0c;…

C:图案打印

引言 本篇文章讲了一些常见的图形编程题&#xff0c;并总结了一些规律。 1、打印空心正方形 1.1 代码展示&#xff1a; #include<stdio.h> int main() {int a 0;//边长初始化scanf("%d", &a);//输入边长的值{int i 0;for (i 0; i < a; i)//控制行…

面试经典算法150题系列-数组/字符串操作之多数元素

序言&#xff1a;今天是第五题啦&#xff0c;前面四题的解法还清楚吗&#xff1f;可以到面试算法题系列150题专栏 进行复习呀。 温故而知新&#xff0c;可以为师矣&#xff01;加油&#xff0c;未来的技术大牛们。 多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其…

Python 提取excel中嵌入的图片

注意&#xff1a;是嵌入在单元格里的图片&#xff0c;嵌入在单元格里的图片&#xff0c;嵌入在单元格里的图片 会显示这种类似的命令&#xff08;office好像不支持查看&#xff0c;wps可以查看这个位置显示的图片&#xff09; 网上好多都说用 _image 提取&#xff0c;经测试,…

精装房、旧房改造智能家居,单火线也有“救”了单火模块 零线发生器

精装房、旧房改造智能家居&#xff0c;单火线也有“救”了单火模块 零线发生器 史新华 以前写过关于智能家居没有预留零线&#xff0c;导致无法安装零火开关&#xff0c;也没办法装触控屏&#xff0c;主要原因还是无法通过零火线给设备供电。今年最火的一款思万奇零线发生器救…

LCM接口通讯说明

LCM&#xff08;Liquid Crystal Module&#xff0c;液晶模块&#xff09;接口通讯说明涉及多种接口类型和通讯方式&#xff0c;这些接口和通讯方式的选择取决于具体的应用场景和需求。 最常见的LCD模块接口协议是&#xff1a; 1.并行接口 2.串行接口 3.串行或并行配置到微处…

MySql的中的MVCC解决事务隔离性

MVCC 如何保证事务的隔离性&#xff1f; 1.排他锁&#xff1a;如一个事务获取了一个数据行的排他锁&#xff0c;其他事务就不能再获取改行的其他锁。 2.MVCC&#xff1a;多版本并发控制。 MVCC&#xff1a; 1.隐藏字段 1.DB_TRX_ID&#xff1a;最近修改事务的id。默认值从0开…

ShardingSphere-Jdbc + Spring Security + Redis 实现简单JWT认证

1. 项目结构 2. 数据库相关操作 create database user_profiles; use user_profiles; CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(255) UNIQUE,role VARCHAR(2…

数据结构之《二叉树》(上)

在之前的数据结构的学习中&#xff0c;我们了解了顺序表、链表等线性表&#xff0c;接下来在本篇中将要学习一种非线性的数据结构——树&#xff0c;我们将来了解树的相关概念和性质&#xff0c;在树当中将重点学习二叉树的结构和特性。学习完相关概念后将试着实现二叉树&#…

我是怎么解决一个电力采集问题的全过程分享

行业设备联网&#xff0c;没人开发/开发太慢/投入太大 怎么办&#xff1f;用合宙DTU整体解决方案&#xff01; 一、整体解决方案内容 合宙DTU整体解决方案 DTU硬件&固件SIM卡业务云平台APP&小程序&web h5页面看板&#xff1b; 合宙提供的DTU整体解决方案&#x…

免费【2024】springboot 宠物中心信息管理系统app

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【超级宠物】-对战游戏

【超级宠物】是一款轻松好玩的休闲趣味卡通宠物模拟养成游戏,游戏中玩家需要不断的训练你的小宠物以参加比赛,你将会是一名专业的训宠物大师,成功的培养自己的宠物成为宠物之星。 超级宠物是一款充满趣味的休闲趣味宠物养成模拟竞技游戏&#xff0c;游戏中玩家需要培养你的狗狗…

Ollama0.3.0 + llama3.1本地部署

Ollama0.3.0 llama3.1本地部署 安装Ollama 官网下载安装包 https://ollama.com/download ​​ 根据系统选择对应版本 安装完成后&#xff0c;电脑右下角会出现ollama程序图标&#xff0c;表示ollama正在运行。 ​​ 打开cmd命令 下载Llama3.1 输入ollama&#xff0c…

51单片机嵌入式开发:22、STC89C52R控制 实现单总线温度传感器DS18b20的温度读取

STC89C52R控制 实现单总线温度传感器DS18b20的温度读取 1 概述1.1 介绍1.2 特点1.3 应用领域 2 DS18B20原理详解2.1 内部机理2.2 读写时序2.3 DS18B20操作代码程序 3 演示4 总结 配套演示例程 1 概述 DS18B20是一款数字温度传感器&#xff0c;由Maxim Integrated&#xff08;美…

linux下frambuffer的使用

什么是Framebuffer&#xff1f; Framebuffer是一个内存区域&#xff0c;操作系统可以通过它直接控制显示设备的像素。与传统的图形加速硬件不同&#xff0c;framebuffer不依赖于图形处理器&#xff0c;而是通过CPU来处理图形数据。这种方式虽然在性能上可能不如硬件加速&#…

vegecad画线及调整功能

vegecad添加了绘制直线和层颜色&#xff0c;目前没有线型&#xff0c;点击工具按钮"画线"&#xff0c;画线是连续的画&#xff0c;右键结束&#xff0c;下面是画的 vegetable&#xff0c;目前画线没有捕捉和引导线画特定角度的线&#xff0c;所以现在还是涂鸦式的&am…