【人工智能】— 监督学习、分类问题、决策树、信息增益

news2024/11/27 6:14:29

【人工智能】— 监督学习、分类问题、决策树、线性分类器、K近邻、回归问题、交叉验证

  • 监督学习 - 正式设置
    • 符号表示
    • 假设选择
    • 学习目标
    • 预测
  • 分类
  • Decision Trees 决策树
    • 建立决策树分类模型的流程
    • 如何建立决策树?
  • 决策树学习
  • 表达能力
  • 决策树学习
  • 信息论在决策树学习中的应用
    • 特征选择准则一:信息增益
    • 举例
  • 结论
    • 不足
  • 回到餐厅的例子
    • 从12个例子中学到的决策树:

监督学习 - 正式设置

监督学习是一种学习框架,其中给定一组输入和输出示例 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) (x_1, y_1), (x_2, y_2), ..., (x_N, y_N) (x1,y1),(x2,y2),...,(xN,yN),目标是学习一个函数 f ( x ) f(x) f(x),该函数可以将新的输入映射到相应的输出。

符号表示

  • 输入空间: X X X
  • 输出空间: Y Y Y
  • 输入: x ∈ X x \in X xX
  • 输出: y ∈ Y y \in Y yY
  • 训练数据集: D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } D = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\} D={(x1,y1),(x2,y2),...,(xN,yN)}
  • 假设集合: H = { f ∣ f : X → Y } H = \{f | f:X \rightarrow Y\} H={ff:XY}

假设选择

监督学习的目标是学习一个函数 f ( x ) f(x) f(x),它可以将输入映射到输出。这个函数通常被选择为假设集合 H H H 中的一个函数。假设集合 H H H 可以选择为一组函数类,例如线性模型、决策树、神经网络等。在选择假设集合时,通常考虑模型的表达能力和复杂度。

学习目标

监督学习的目标是学习一个函数 f ( x ) f(x) f(x),使得该函数可以将输入映射到相应的输出。具体来说,学习目标是找到一个函数 f ∈ H f \in H fH,使得对于所有的 ( x i , y i ) ∈ D (x_i, y_i) \in D (xi,yi)D f ( x i ) f(x_i) f(xi) 的输出与 y i y_i yi 相匹配。这个过程通常使用训练数据集 D D D 来进行,其中学习算法通过最小化模型与真实值之间的误差来寻找最佳假设 f f f

预测

一旦找到了最佳假设 f f f,我们可以将新的输入 x N + 1 x_{N+1} xN+1 映射到相应的输出 y N + 1 y_{N+1} yN+1,即 y N + 1 = f ( x N + 1 ) y_{N+1} = f(x_{N+1}) yN+1=f(xN+1)

分类

分类是一种监督学习任务,旨在根据观测到的特征将数据点分配到已知类别中的一个。具体来说,我们被给定 N N N 个观测值 { ( x i , y i ) } i = 1 N \{(x_i, y_i)\}_{i=1}^N {(xi,yi)}i=1N,其中 x i ∈ X x_i \in X xiX 是一个特征向量, y i ∈ Y y_i \in Y yiY 是标签或类别。任务是将新的输入 x ∈ X x \in X xX 映射到相应的标签 y ∈ Y y \in Y yY

例如,在图像分类任务中,输入 x x x 可能是一幅图像,而标签 y y y 可能是描述图像内容的类别,如“狗”、“猫”、“汽车”等。

分类任务通常被分为两类:二分类和多分类。在二分类任务中,标签 y y y 只有两个可能的值。在多分类任务中,标签 y y y 可以有多个可能的值。

分类问题的解决方法通常是学习一个分类器,该分类器使用训练数据集中的特征和标签来预测新的未标记数据点的标签。常见的分类器包括逻辑回归、支持向量机、决策树、随机森林、朴素贝叶斯等。

Decision Trees 决策树

什么是决策树 —— 基本概念

  • 非叶节点:一个属性上的测试,每个分枝代表该测试的输出
  • 叶节点:存放一个类标记
  • 规则:从根节点到叶节点的一条属性取值路径
    在这里插入图片描述

建立决策树分类模型的流程

  • 模型训练:从已有数据中生成一棵决策树
  • 分裂数据的特征,寻找决策类别的路径
  • 相同的数据,根据不同的特征顺序,可以建立多种决策树

如何建立决策树?

基本的决策树学习过程,可以归纳为以下三个步骤:

  1. 特征选择:选取对于训练数据有着较强区分能力的特征
  2. 生成决策树:基于选定的特征,逐步生成完整的决策树
  3. 决策树剪枝:简化部分枝干,避免过拟合因素影响
    在这里插入图片描述

决策树学习

问题:基于以下属性,决定是否在餐厅等待桌子:

  1. Alternate:附近是否有其他选择的餐厅?
  2. Bar:是否有一个舒适的酒吧区等待?
  3. Fri/Sat:今天是星期五还是星期六?
  4. Hungry:我们饿了吗?
  5. Patrons:餐厅里的人数(无人、有些人、满座)
  6. Price:价格范围($、$$、$$$
  7. Raining:外面是否下雨?
  8. Reservation:我们是否预约了?
  9. Type:餐厅类型(法国、意大利、泰国、汉堡)
  10. WaitEstimate:等待时间的预估值(0-10、10-30、30-60、>60)
    在这里插入图片描述
    假设的一种可能表示
    例如,在上述餐厅等待桌子的问题中,我们可以使用决策树来表示假设,该决策树定义了在不同属性值下等待桌子的决策。以下是一个可能的假设树示例:在这里插入图片描述
    在这里插入图片描述

表达能力

决策树可以表示任何输入属性的函数,但使用单条路径来表示每个训练示例的决策树可能会过度拟合数据,无法很好地推广到新的未见过的数据示例。

决策树可以表达输入属性的任何函数。例如,对于布尔函数,函数真值表的每行对应于树中 的一条路径:在这里插入图片描述
简单来说,针对每个训练示例,可以创建一条路径到叶子节点的一致性决策树(除非函数在输入属性上是非确定性的),但这种决策树可能会过度拟合数据,无法很好地泛化到新的未见过的数据示例。因此,更倾向于找到更紧凑的决策树来提高泛化性能。

决策树学习

目的:找到一个与训练示例一致的小树
想法:(递归)选择“最重要”属性作为(子)树的根
在这里插入图片描述
想法:一个好的属性将示例拆分为(理想情况下)“全正”或“全负”的子集
在这里插入图片描述
根据Patron分类是一个更好的选择

信息论在决策树学习中的应用

信息熵:计算数据的不确定性

Entropy ( t ) = − ∑ j = 1 m p ( j ∣ t ) log ⁡ 2 p ( j ∣ t ) \text{Entropy}(t) = - \sum_{j=1}^m p(j|t) \log_2 p(j|t) Entropy(t)=j=1mp(jt)log2p(jt)
此时:表示某个节点𝑡 (即某个特征)的信息不确定性
p ( j ∣ t ) p(j|t) p(jt)是节点特征𝑡的属于类别𝑗的样本的比例

  • 特点:对于该节点特征t
    • 当样本均匀地分布在各个类别时,熵达到最大值 l o g ( n c ) log(n_c) log(nc), 此时包含的信息最少
    • 当样本只属于一个类别时,熵达到最小值 0, 此时包含的信息最多

对于包含 p p p 个正例和 n n n 个反例的训练集,其熵可以用以下公式计算:

I ( p p + n , n p + n ) = − p p + n log ⁡ 2 p p + n − n p + n log ⁡ 2 n p + n I(\frac{p}{p+n},\frac{n}{p+n}) = -\frac{p}{p+n}\log_2\frac{p}{p+n}-\frac{n}{p+n}\log_2\frac{n}{p+n} I(p+np,p+nn)=p+nplog2p+npp+nnlog2p+nn

其中,第一项和第二项分别表示正例和反例的占比, log ⁡ 2 \log_2 log2 表示以 2 为底的对数。熵的值越高,表示数据集越不确定。

在这里插入图片描述

特征选择准则一:信息增益

信息增益: 按某个特征划分之后,数据不确定性降低的程度

Gain ( m ) = Entropy ( p ) − ( ∑ i = 1 k ∣ n i ∣ n Entropy ( i ) ) \text{Gain}(m) = \text{Entropy}(p) - (\sum^k_{i=1} \frac{|n_i|}{n}\text{Entropy}(i)) Gain(m)=Entropy(p)(i=1knniEntropy(i))

  1. 第一项 Entropy ( p ) \text{Entropy}(p) Entropy(p)表示数据未划分时的信息熵
  2. 第二项 ∑ i = 1 k ∣ n i ∣ n Entropy ( i ) \sum^k_{i=1} \frac{|n_i|}{n}\text{Entropy}(i) i=1knniEntropy(i)表示按特征m划分后,数据的信息熵
    1. 按特征 m m m划分后,父节点分裂成 k k k个子节点
    2. 𝑛表示父节点的样本个数
    3. 𝑛𝑖 表示子节点𝑖的样本个数
      选择准则:选择最大的𝐺𝐴𝐼N 对应的特征m

举例

在这里插入图片描述
在这里插入图片描述

结论

信息增益能够较好地体现某个特征在降低信息不确定性方面的贡献
信息增益越大,说明信息纯度提升越快,最后结果的不确定性越低

不足

信息增益的局限性,尤其体现在更偏好可取值较多的特征
取值较多,不确定性相对更低,因此得到的熵偏低,但不一定有实际意义在这里插入图片描述
特征Customer ID有最大的信息增益,因为每个子节点的熵均为0

回到餐厅的例子

对于训练集, p = n = 6 p=n=6 p=n=6,信息熵为 I ( 6 12 , 6 12 ) = 1 I(\frac{6}{12}, \frac{6}{12})=1 I(126,126)=1 bit。
考虑属性Patrons和Type(以及其他属性)
在这里插入图片描述

从12个例子中学到的决策树:

在这里插入图片描述

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

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

相关文章

Koa学习2:路由与数据库连接

路由 安装 npm i koa-router基本功能 定义路由:koa-router提供了一种简单的方式来定义路由,我们可以根据请求的方法和路径来定义不同的路由。 处理请求:koa-router可以帮助我们处理请求,当请求匹配到对应的路由时,k…

人工智能轨道交通行业周刊-第47期(2023.5.29-6.4)

本期关键词:郑州智慧地铁、货运安全监控、激光炮、6C系统、越行站、ChatGPT原理 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨…

SparkSQL文件格式和压缩算法是否支持Split

大数据支持Split的目的是为了能并行处理任务,可以将文件拆分成多个文件块处理。如果不支持Split的话,只能用一个任务处理单个文件。 能否支持Split受到文件格式和压缩算法的双重限制,大部分文件的读取都是可以支持Split,极少数压缩…

每日学术速递5.29

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Custom-Edit: Text-Guided Image Editing with Customized Diffusion Models(CVPR 2023) 标题:自定义编辑:使用自定义扩散模型进行文本引导图像编辑 作者&a…

部署rabbitmq3.10.6详细步骤

RabbitMQ简介 RabbitMQ是Erlang开发的,集群非常方便,因为Erlang天生就是分布式语言,但其本身并不支持负载均衡,支持高并发,支持可扩展。支持AJAX,持久化,用于在分布式系统中存储转发消息&#x…

八、Git分支和版本号的简介

1、Git分支介绍 分支在Git中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了! 2…

【AI绘图】一、stable diffusion的发展史

一、stable diffusion的发展史 本文目标:学习交流 对于熟悉SD的同学,一起学习和交流使用过程中的技巧和心得。 帮助新手 帮助没有尝试过SD但又对它感兴趣的同学快速入门,并且能够独立生成以上效果图。 1.发展史介绍: 2015年的时候…

汇编重复计算之使用循环与不循环使用区别

没有使用循环的汇编代码,计算ffff:0-ffff:b的累加之和 assume cs:code 表示code段与CS寄存关联 code segment 表示段开始 ,code ends表示段结束,end表示汇编程序结束 mov ax,0ffffh 表示将ffffh送入ax寄存器 mov ds,ax 表示将ax寄存器值送入ds寄存器 mov …

第二十四章 开发Productions - ObjectScript Productions - 定义业务服务

文章目录 第二十四章 开发Productions - ObjectScript Productions - 定义业务服务介绍关键原则定义业务服务类实施 OnProcessInput() 方法 第二十四章 开发Productions - ObjectScript Productions - 定义业务服务 本页介绍如何定义业务服务类。 提示: IRIS 提供…

高完整性系统 (2):Requirement 与 Design 阶段的风险控制——Hazards, HAZOP, Fault Tree

文章目录 安全性工程流程Hazards反事实推理(CounterFactual Reasoning)案例1案例2案例3 HAZOP: HAZARDS AND OPERABILITY STUDY案例1HAZOP 工作流程HAZOP 总结 Fault Tree AnalysisFault Tree 定义案例Node Symbolsanalysis outcomes 这节课主要介绍了高…

【Linux集锦01】CentOS的安装

Centos的安装 1.创建新的虚拟机2. 自定义3.下一步4.创建虚拟空白光盘5.安装Linux系统和Centos 7 发行版6.命名虚拟机名称和选择磁盘位置7.处理器配置 主要看自己的电脑的情况8.设置虚拟机内存9.网络设置 nat10.选择IO控制器类型11.选择磁盘类型12.创建新虚拟磁盘13.设置磁盘容量…

【MyBatis】2、MyBatis 的动态 SQL 和增删改操作

目录 一、添加(1) 基本插入(2) 设置新插入记录的主键&#xff08;id&#xff09;★ 二、更新三、删除四、动态 SQL(1) if 标签(2) where 标签(3) foreach 标签 五、起别名六、sql 标签七、在 MyBatis 中集成 druid 连接池 一、添加 (1) 基本插入 <mapper namespace"s…

qtcanpool 知 99:常见问题

文章目录 前言问题构建 fancydemo 报链接库错误 后语 前言 qtcanpool 是根据 qtcreator 整理出的一套通用的工程管理模板&#xff0c;同时集成一些常见的库和插件。就像 qtcanpool 名字一样&#xff0c;它是一个 qt 池&#xff0c;用户可以从中汲取所需。 对于初次使用 qtcan…

iPad触屏笔哪个牌子好用?平替电容笔推荐

电容笔可以说是人手必备的数码产品&#xff0c;市面上的电容笔品牌数不胜数&#xff0c;很多人都快赶不上它的步伐了&#xff0c;新品的大批量上升&#xff0c;说明市场上的电容笔的需求量日益扩大&#xff0c;越来越多人在学习上、办公上等使用&#xff0c;作为资深的电容笔发…

Kafka重平衡rebalance是什么

重平衡 背景&#xff1a; 假如你是一家公司的老板&#xff0c;手下有三名员工张三、李四、王五&#xff0c;现在你有三项工作A、B、C&#xff0c;正好安排给三人。 过了一个月后&#xff0c;员工王五离开了公司。这个时候只剩下两名员工&#xff0c;你只能把原先王五安排的…

每日学术速递6.3

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Reconstructing the Minds Eye: fMRI-to-Image with Contrastive Learning and Diffusion Priors 标题&#xff1a;重建心灵之眼&#xff1a;fMRI-to-Image with Contrastive lear…

反向ajax实现

在过去的几年中&#xff0c;web开发已经发生了很大的变化。现如今&#xff0c;我们期望的是能够通过web快速、动态地访问应用。在这一新的文章系列中&#xff0c;我们学习如何使用反 向Ajax&#xff08;Reverse Ajax&#xff09;技术来开发事件驱动的web应用&#xff0c;以此来…

【Android开发基础】更新\修改Adapter适配器数据(例:聊天功能等)

文章目录 一、引言二、解决方案1、需求一2、需求二&#xff08;1&#xff09;普通方法&#xff08;2&#xff09;观察者模式&#xff08;推荐&#xff09; 一、引言 描述&#xff1a;如何在主线程&#xff08;Activity/Fragment&#xff09;UI中修改子线程&#xff08;Adapter…

小白可以看懂的「GraphQL」,GraphQL到底是啥样

GraphQL是一种用于API的查询语言&#xff0c;可以在服务端定义GraphQL Schema&#xff0c;客户端可以向服务端发送GraphQL请求&#xff0c;服务端执行GraphQL查询&#xff0c;并将结果作为JSON返回给客户端。 下面是一个使用golang实现GraphQL的示例&#xff0c;首先需要安装g…

Ajax请求与浏览器缓存

在现代Web应用程序中&#xff0c;前端代码充斥着大量的Ajax请求&#xff0c;如果对于Ajax请求可以使用浏览器缓存&#xff0c;那么可以显著地减少网络请求&#xff0c;提高程序响应速度。 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求&#xff0c;示例代码如下&a…