人工智能的决策树介绍

news2024/11/18 19:46:35

决策树模型

决策树基于“树”结构进行决策

  • 每个“内部结点”对应于某个属性上的“测试”
  • 每个分支节点对应于该测试的一种可能结果(即属性的某个取值)
  • 每个“叶结点”对应于一个“预测结果”

学习过程:通过对训练样本的分析来确定“划分属性”(即内部结点所对应的属性)

预测过程:将测试示例从根结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶结点

决策树简史

第一个决策树算法:CLS(Concept Learning System)

使决策树受到关注、成为机器学习主流技术的算法:ID3

最常用的决策树算法:C4.5

可以用于回归任务的决策树算法:CART(Classification and Regression Tree)

基于决策树的最强大算法:RF(Random Forest)

决策树的基本算法

基本流程:

策略:“分而治之”

自根至叶的递归过程

在每个中间结点寻找一个“划分”属性

三种停止条件:①当前结点包含的样本全属于同一类别,无需划分;②当前属性集为空,或是所有样本在属性集上取值相同,无法划分;③当前结点包含的样本集合为空,不能划分

信息增益

信息熵

信息熵是度量样本集合“纯度”最常用的一种指标

假设当前样本集合D中第k类样本所占的比例为p_{k},则D的信息熵定义为:

Ent(D)=-\sum_{k=1}^{|y|}p_{k}log_{2}(p_{k}) 

其中y指的是总共有多少个类

Ent(D)的值越小,则D的纯度越高

如果p=0,则plog_{2}(p)=0

Ent(D)的最小值:0,此时D只有一类;

最大值:log_{2}(y),此时D每个样本都是一类

信息增益

离散属性a的取值:{a^1,a^2...a^v}

D_{v}:D中在a上取值=a^v的样本集合

以属性a对数据集D进行划分所获得的信息增益为:

Gain(D,a) = Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)

信息增益指的是划分前的信息熵--划分后的信息熵

 \frac{|D^v|}{|D|}指的是第v个分支的权重,样本越多越重要

生成决策树的例子

 增益率

信息增益:对可取值数目较多的属性有所偏好

Gain_-ratio(D,a)=\frac{Gain(D,a)}{IV(a)}

其中IV(a)= -\sum_{v=1}^{V}\frac{|D^v|}{|D|}log_{2}\frac{|D^v|}{|D|}

属性a的可能取值数目(即分支V越多),则IV(a)的值通常就越大

启发式:先从候选划分属性中找出信息增益高于平均水平的,再从中选取增益率最高的

基尼指数

Gini(D)=\sum_{k=1}^{|y|}\sum_{k'!=k}{p_{k}p_{k'}}=1-\sum_{k=1}^{|y|}p_{k}^{2} 

基尼指数越小,数据集D的纯度就越高

 属性a的基尼指数:Gini_-index(D,a)=\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}Gini(D^{v})

在侯选属性集合中,选取那个使划分后基尼指数最小的属性

 划分选择vs剪枝

划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限

剪枝方法和程度对决策树泛化性能的影响更为显著

剪枝是决策树对付“过拟合”的主要手段

剪枝

为了尽可能正确分类训练样本,有可能造成分支过多->过拟合,可通过主动去掉一些分支来降低过拟合的风险

预剪枝

提前终止某些分支的生长

后剪枝

生成一棵完全树,再“回头”剪枝

预剪枝后剪枝
时间开销训练时间开销降低,测试时间开销降低训练时间开销增加,测试时间开销降低
过/欠拟合风险过拟合风险降低,欠拟合风险增加过拟合风险降低,欠拟合风险基本不变
泛化性能后剪枝通常优于预剪枝

连续值

基本思路:连续属性离散化

连续变量x_{1}<x_{2}<....<x_{n},取区间的中点\frac{x_{i}+x_{i+1}}{2}作为属性值

常见做法:二分法

n个属性值可形成n-1个候选划分

然后可将它们当做n-1个离散属性值处理

 缺失值

现实应用中,经常会遇到属性值“缺失”现象;

选择划分属性的基本思路:样本赋权,权重划分

缺失值计算信息增益

 从“树”到“规则”

一棵决策树对应于一个“规则集”

每个从根结点到叶结点的分支路径对应于一条规则

好处:①改善可理解性;②进一步提高泛化能力

多变量决策树

每个分支结点不仅考虑一个属性;“斜决策树”不是为每个非叶节点寻找最佳划分属性,而是建立一个线性分类器

线性回归

 f(x)=wx_{i}+b      f(x)\simeq y_{i}

离散属性的处理:若有“序”,则连续化;否则,转化为k维向量

令均方误差最小化,有(w^{*},b^{*})=\frac{1}{m}\sum_{i=1}^{m}(f(x_{i})-y_{i})^2=\frac{1}{m}\sum_{i=1}^{m}(y_{i}-wx_{i}-b)^2

E_{(w,b)}=\sum_{i=1}^{m}(y_{i}-wx_{i}-b)^2进行最小二乘参数估计

分别对w和b求导:

\frac{\partial E_{(w,b)}}{\partial w}=2(w\sum_{i=1}^{m}x_{i}^{2}-\sum_{i=1}^{m}(y_{i}-b)x_{i})

\frac{\partial E_{(w,b)}}{\partial b}=2(mb-\sum_{i=1}^{m}(y_{i}-wx_{i}))

令导数为0,得到闭式解:

w=\frac{\sum_{i=1}^{m}y_{i}(x_{i}-\bar x)}{\sum_{i=1}^{m}x_{i}^{2}-\frac{1}{m}(\sum_{i=1}^{m}x_{i})^{2}}, b=\frac{1}{m}\sum_{i=1}^{m}(y_{i}-wx_{i})

广义线性模型

一般形式

y=g^{-1}(w^{T}+b)g^{-1}是单调可微的联系函数

令g(.)=ln(.)则得到对数线性回归,lny=w^{T}x+b

二分类任务

线性回归模型产生的实值输出z=w^{T}+b,期望输出y∈{0,1}

对数几率函数简称“对率函数”y=\frac{1}{1+e^{-z}},理想的“单位阶跃函数”y=\left\{\begin{matrix} 0,z<0 & \\ 0.5,z=0& \\ 1,z>0 & \end{matrix}\right.

对率回归(对数几率回归)

以对率函数为联系函数:y=\frac{1}{1+e^{-z}}变为y=\frac{1}{1+e^-{(w^{T}x+b)}},即ln\frac{y}{1-y}=w^{T}x+b

无需事先假设数据分布,可得到“类别”的近似概率预测,可直接应用现有数值优化算法求取最优解

若将y看作类后验概率估计p(y=1|x)

ln\frac{y}{1-y}=w^{T}x+b可写为ln\frac{p(y=1|x)}{p(y=0|x)}=w^{T}x+b

于是可使用“极大似然法”,给定数据集{(x_{i},y_{i})}_{i=1}^{m}最大化“对数似然”函数

\delta(w,b)=\sum_{i=1}^{m}lnp(y_{i}|x_{i};w,b)

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

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

相关文章

如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。

对于刚刚使用jupyter的新手来说&#xff0c;经常不知道如何在其中使用新建的虚拟环境内核&#xff0c;同时&#xff0c;对于默认安装的jupyter&#xff0c;使用jupyter notebook命令启动 jupyter 以后往往默认是C盘的启动路径&#xff0c;如下图所示&#xff0c;这篇教程将告诉…

vector类(一)

文章目录 vector介绍和使用1.vector的介绍2.vector的使用2.1 vector的定义2.2 vector iterator的使用2.3 vector空间增长问题2.4 vector增删查改2.5 vector迭代器失效问题 3.vector 在OJ中的使用 vector介绍和使用 1.vector的介绍 vector是表示 可变大小数组的 序列容器。 就…

Matlab|【免费】面向多微网网络结构规划的大规模二进制矩阵优化算法

目录 1 主要内容 节点故障网络拓扑变化示意 约束条件 目标函数 3 结果一览 4 下载链接 1 主要内容 当前电力系统中微电网逐步成为发展的主力军&#xff0c;微网中包括分布式电源和负荷&#xff0c;单一的微电网是和外部电源进行连接&#xff0c;即保证用电的效益性&#…

手机短信验证码自动转发到服务器

今天写一个自动化处理程序&#xff0c;需要验证码登录&#xff0c;怎么样把手机收到的短信自动转发到服务器接口呢&#xff1f; 利用ios手机快捷指令的功能 打开快捷指令点击中间自动化点击右上角号选择信息信息包含选取&#xff0c;输入验证码选择立即执行点击下一步按下图配…

SpringBoot集成WebSocket实现简单的多人聊天室

上代码—gitee下载地址&#xff1a; https://gitee.com/bestwater/Spring-websocket.git下载代码&#xff0c;连上数据库执行SQL&#xff0c;就可以运行&#xff0c;最终效果

17、GateWay和Sentinel继承实现服务限流

注&#xff1a;本篇文章主要参考周阳老师讲解的cloud进行整理的&#xff01; 1、需求说明 cloudalibaba-sentinel-gateway9528 保护 cloudalibaba-provider-payment9001 2、启动nacos服务器8848 startup.cmd -m standalone 3、启动sentinel服务器8080 java -jar sentinel-dash…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT&#xff0c;正准备保存的时候电脑没电自动关机了&#xff0c;打开电脑后才发现我的PPT没保存。这可怎么办&#xff1f;还有机会恢复吗&#xff1f;” 在日常办公和学习中&#xff0c;PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示&#xff1a;有页码的操作题 背景需求&#xff1a; 实操课终于全部结束了&#xff0c;把考试内容&#xff08;docx&#xff09;都写好了 【办公类-21-10】三级育婴师 视频转文字docx&#xff08;等线小五单倍行距&#xff09;&#xff0c;批量改成“宋体小四、1.5倍行…

汇编语言学习记录 01

目录 VScode配置调试环境 Debug的主要命令 简单写个Hello World VScode配置调试环境 没有IDE真的蛮难受的 安装插件TASM/MASM 右键扩展设置&#xff0c;选择Assembler&#xff1a;MASM 右键调试即可开始 Debug的主要命令 R-查看和修改寄存器 D-查看内存单元 E-修改内…

Remote Desktop Manager for Mac:远程桌面管理软件

Remote Desktop Manager for Mac&#xff0c;是远程桌面管理的理想之选。它集成了多种远程连接技术&#xff0c;无论是SSH、RDP还是VNC&#xff0c;都能轻松应对&#xff0c;让您随时随地安全访问远程服务器和工作站。 软件下载&#xff1a;Remote Desktop Manager for Mac下载…

Linux虚拟机环境搭建spark

Linux环境搭建Spark分为两个版本&#xff0c;分别是Scala版本和Python版本。 一、 安装Pyspark 本环境以 Python 环境为例。 1、下载spark 下载网址&#xff1a;https://archive.apache.org/dist/spark 下载安装包&#xff1a;根据自己环境选择合适版本&#xff0c;本环境…

【JSON2WEB】11 基于 Amis 角色功能权限设置页面

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

【氮化镓】p-GaN栅极退化的温度和结构相关性

论文总结&#xff1a; 本文献深入研究了带有p-GaN栅极的正常关断型(normally-off)高电子迁移率晶体管(GaN-HEMTs)在恒定电压应力下的时序退化行为。通过直流特性分析和温度依赖性分析&#xff0c;研究了故障时间(TTF)与应力温度和器件几何结构的依赖性。结果显示&#xff0c;p…

4毛5起的国产32位单片机 PY32F002A系列,多种封装可以选择

PY32F002A系列单片机可以说是现在市面上非常火的一款32位单片机了&#xff0c;超低的价格&#xff0c;不错的性能&#xff0c;让很多开发者都选择了它。主频最大24M&#xff0c;有着20Kbytes flash 和 3Kbytes SRAM&#xff0c;很多小产品也是足够用了。PY32F002A的SOP8封装的价…

SQLite中的动态内存分配(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite中的原子提交&#xff08;四&#xff09; 下一篇&#xff1a;SQLite使用的临时文件&#xff08;二&#xff09; ​概述 SQLite使用动态内存分配来获得 用于存储各种对象的内存 &#xff08;例如&#xff1a…

Nacos的搭建和使用——SpringCloud Alibaba

1. 概要说明 在使用Nacos之前&#xff0c;请在你的虚拟机中下载好Nacos,再进行连接本机使用 port&#xff1a;8848 本机访问地址&#xff1a;http://{虚拟机ip}:8848/nacos/ 访问账号密码&#xff1a;nacos/nacos 2. Nacos的作用 2.1 服务发现中心 微服务将自身注册至Nacos&am…

uniapp怎么使用接口返回的iconfont图标

uniapp怎么使用接口返回的iconfont图标 首先在你的项目中添加该图标&#xff0c;名称要对应 实际应用 item.ICONFONT_NAME“tools”; item.ICONFONT_COLOR“FA5151”; <view class"iconfont" :class"icon-item.ICONFONT_NAME" :color"item.ICON…

浅谈电商网络爬虫技术

摘 要 目前网络上存在着海量的数据资料&#xff0c;将这些数据爬取保存下来&#xff0c;并进行进一步操作&#xff0c;即可挖掘出数据的潜在价值。如今的互联网存在的缺陷是用户很难获得有用的数据资料&#xff0c;虽然传统的搜索引擎可以为用户返回大量信息&#xff0c;但是…

MySQL数据库(MySQL主从搭建|Django中实现MySQL读写分离|Django中使用MySQL连接池)

文章目录 一、MySQL主从搭建1.MySQL主从的目的&#xff1f;2.MySQL主从原理3.搭建步骤 二、Django中实现MySQL读写分离1.使用sqlite实现读写分离2.MySQL实现读写分离 三、Django中使用连接池1.使用池的目的2.Django中使用MySQL连接池 一、MySQL主从搭建 1.MySQL主从的目的&…

【vue3学习笔记(一)】vue3简介;使用vue-cli创建工程;使用vite创建工程;分析工程结构;安装开发者工具

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 对应课程136-140节 课程 P136节 《vue3简介》笔记 课程 P137节 《使用vue-cli创建工程》笔记 官方文档&#xff1a; https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create官方文档地址 查看vue-cli版本&#x…