决策树中的相关概念

server/2025/1/12 5:50:50/

目录

算法介绍

基本概念:

节点

信息熵(Information Entropy)

条件熵(Conditional Entropy)

python中计算对数

分类标准

信息增益(ID3(Iterative Dichotomiser 3)算法的评估标准)

信息增益率(C4.5 算法的评估标准)

基尼系数(CART(Classification and Regression Tree)算法的评估标准)


算法介绍

决策树是一种非常直观且易于理解的机器学习算法

决策树通过对数据特征的一系列判断来进行分类或预测。

基本概念:
节点
  • 根节点:第一个节点,决策树的开始节点。

  • 非叶子节点(内部节点):中间节点,基于特征进行条件判断的节点。

  • 叶节点:最终结果节点,表示最终的分类或预测结果。

信息熵(Information Entropy)

信息熵是信息论中的一个概念,用于度量随机变量的不确定性。

决策树算法机器学习场景中,信息熵通常用于衡量数据集的混乱程度或不确定性。

计算公式:

举个例子:以下两个集合的熵值谁更大呢

条件熵(Conditional Entropy)

条件熵是在给定某个条件下,随机变量的不确定性。

假设随机变量X 和 Y,条件熵H(Y|X) 表示在已知随机变量X 的取值的情况下,随机变量 Y的不确定性。

联合概率密度的计算公式:

条件熵的计算公式:

举个例子:

假设有两个随机变量 X 和 Y,X 表示天气(晴、雨),Y 表示是否适合运动(是、否)。它们的联合概率分布如下:

X\Y
0.30.2
0.40.1
python中计算对数

如何计算这个式子的答案呢

在 Python 中,可以使用math 库来计算对数。上面的式子可以这么写

import math
result=-9/14*math.log(9/14,2)-5/14*math.log(5/14,2)

分类标准

构建决策树的关键在于选择合适的特征和划分点,一般而言,随着划分过程的不断进行,我们自然希望决策树各分支结点所包含的样本尽可能属于同一类别,即结点的 “纯度” (purity) 越来越高。本篇文章将介绍几类较为主流的衡量指标(信息增益、信息增益率、基尼系数)。

我们以一个分类问题为例,贯穿在接下来要讲的计算 ID3、C4.5 和 CART 算法的特征选择过程。

天气温度湿度是否出去玩
信息增益(ID3(Iterative Dichotomiser 3)算法的评估标准)

信息增益基于信息熵的概念,选择使信息熵减少最多的特征进行分裂。

  1. 特征选择标准:使用信息增益来选择特征。信息增益是基于信息熵的概念,它衡量了使用某个特征进行划分后,数据集的信息不确定性减少的程度。

  2. 局限性:倾向于选择具有较多取值的特征,可能导致过拟合。对于连续型特征,需要先进行离散化处理。

  3. 优点:算法简单直观,易于理解和实现。

信息增益为:1-0.693=0.307

同理计算 “温度” 和 “湿度” 特征的信息增益。

假设 “温度” 特征的信息增益为 0.2,“湿度” 特征的信息增益为 0.1。

由于 “天气” 特征的信息增益最大,所以 ID3 算法会选择 “天气” 特征作为根节点进行分裂。

信息增益率(C4.5 算法的评估标准)

信息增益比则对信息增益进行了归一化处理,克服了信息增益偏向取值较多的特征的问题。

  1. 特征选择标准:是 ID3 算法的改进,采用信息增益比来选择特征。信息增益比克服了 ID3 中信息增益偏向选择取值多的特征的不足。

  2. 处理连续属性:能够直接处理连续型特征,通过对连续特征进行排序和离散化来构建决策树

  3. 优点:在特征选择和防止过拟合方面比 ID3 更优,生成的决策树更加准确和稳健。

基尼系数(CART(Classification and Regression Tree)算法的评估标准)

基尼系数反映了从数据集中随机抽取两个样本,其类别不一致的概率。

  1. 用途:既可以用于分类问题,也可以用于回归问题。

  2. 特征选择标准:对于分类问题使用基尼系数,对于回归问题使用平方误差最小化。

  3. 生成结构:生成的是二叉树,即每次分裂都将数据集分为两部分。

  4. 优点:在处理复杂数据和大型数据集时表现较好,并且在分类和回归任务中都有不错的效果。


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

相关文章

ros2笔记- 5.2 python 中手眼坐标转换

本节继续跟小鱼老师学习5.2.先看下需求 相机固定在右上方的camera_link处,机械臂的底座固定在base_link处从base_link到camera_link的位置是固定不变的,瓶子可能是变的。求base_link到bottle_link的坐标关系,方便控制机械臂抓取瓶子。 5.2.1…

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection) 引言 UNION注入是一种利用SQL的UNION操作符进行注入攻击的技术。攻击者通过合并两个或多个SELECT语句的结果集,可以获取数据库中未授权的数据。这种注入技术要…

高斯函数Gaussian绘制matlab

高斯 约翰卡尔弗里德里希高斯,(德语:Johann Carl Friedrich Gau,英语:Gauss,拉丁语:Carolus Fridericus Gauss)1777年4月30日–1855年2月23日,德国著名数学家、物理学家…

简单的spring boot tomcat版本升级

简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE,对应的tomcat版本为9.0.41,公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应,从而可能导致获取其他用户先前请求的数据,造…

原生JavaScript实现文本内容的文字数量变化,适配容器宽度和高度,文本内容文字字体的字号大小自动缩小,保障文字全部都在容器内显示完

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文字自动填充容器</title><style>body {…

Python对象的序列化和反序列化工具:Joblib与Pickle

在Python中&#xff0c;序列化是将内存中的对象转换为可存储或传输的格式的过程。常见的序列化格式有JSON、YAML、Pickle和Joblib等。其中&#xff0c;Pickle和Joblib是最常用的用于序列化和反序列化Python对象的工具。虽然这两者有很多相似之处&#xff0c;但它们在某些方面有…

【react进阶】create-react-app高阶配置

create-react-app新建项目还是官网推荐的主流方法&#xff0c;当然vite已经使用越来越广泛了&#xff0c;构建速度也是比cra快几倍。记录下怎么用cra来搭建一个react项目。 在index.html文件中使用变量 1.在script代码中的使用方式 <script>const $ window.$ "…

面试:类模版中函数声明在.h,定义在.cpp中,其他cpp引用引入这个头文件,会有什么错误?

1、概述 类模版中函数声明在.h&#xff0c;定义在.cpp中&#xff0c;其他cpp引用引入这个头文件&#xff0c;会有什么错误?报编译错误&#xff1a;error C2512: Demo<int>: no appropriate default constructor available 举例如下代码&#xff1a;demo.h 声明模版类 …