二.西瓜书——线性模型、决策树

news2024/11/25 11:42:18

第三章 线性模型

1.线性回归

        “线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记.

2.对数几率回归

        假设我们认为示例所对应的输出标记是在指数尺度上变化,那就可将输出标记的对数作为线性模型逼近的目标,即

                               lny=w^Ta+b.
由此,引入对数几率回归:

        

        称为“几率”(odds),反映了a作为正例的相对可能性.对几率取对数则得到“对数几率”(log odds,亦称logit)

3.线性判别分析

        LDA的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得类样例的投类样的投尽可;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别.

4.多分类学习 

        利用二分类学习器来解决多分类 问题:
  • “一对一”(One vs.One,简称OvO):OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务
  • “一对其余”(One vs.Rest,简称OvR):OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器.
  • MvM是每次将若干个类作为正类,若干个其他类作为反类.显然,OvO和 OvR是MvM的特例.
        MvM的正、反类构造必须有特殊的设计,不能随意选 取.这里我们介绍一 种最常用的 MvM 技术:“ 纠错输出码 ”(E rror Correcting  Ou t p u t C o d es , E C O C ) .
         ECOC Dietterich and Bakiri,1995]是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性.ECOC工作过程主要分为两步:
  • 对N个 M 划分 次划分将一 部分类 别划为 一部 分划为反类,从而形成一个二分类训 练集;这样一 共产生M个训练集,可 训练出M个分类器.
    • 解码:M个分类 器分 别对测试样本 进行预测, 这些预 测标记组成一个编 .将这个预测编码与每 个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果.
              为什么称为“纠错输出码”呢?这是因为在测试阶段,ECOC编码对分类 器的错误有一定的容忍和修正能力.例如图3.5(a)中对测试示例的正确预测编 码是 ( - 1 , + 1 , + 1 , - 1 , + 1 ) , 测时 f 2 导致了错误编码(-1,-1,+1,-1,+1),但基于这个编码仍能产生正确的最终分 类结果C3.一般来说,对同一个学习任务,ECOC编码越长,纠错能力越强.然 而,编码越长,意味着所需训练的分类器越多,计算、存储开销都会增大;另一 方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了
      .

      5.类别不平衡问题

              类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数 目差别很大的情况.
              类别平衡时, y > 0.5 判别 ,否 则为反 . y实 际上表 了正例的可能性,几率分类规则为:
              类别不平衡时, 只要分 类器的预测几率高于观测 几率就应判定为正例,即

        此时,需要进行再缩放:

        大体上有三类做法:

  • 一类是直接对训练集里的反类样例进行“欠采样”(undersampling),即去除一些反例使得正、反例数目接近,然后再进行学习;
  • 第二类是对训练集里的正类样例进行“过采样”(oversampling),即增加一些正例使得正、反例数目接近,然后再进行学习;
  • 第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式(3.48)嵌入到其决策过程中,称为“阈值移(threshold-moving).
        欠采样法的时间开销通常远小于过采样法,因为前者丢弃了很多反例,使 得分类器训练集远小于初始训练集, 而过采样法增 加了很多正例,其训练集 大于初始训练集.需注意的是,过采样法不能简单地对初始正例样本进行重 复采样,否则会招致严重的过拟合;

第四章 决策树

1.基本流程 

        决策树将样本根据属性测试的结果被划分到子结点中;根结点包含样本全集.从根结点到每个叶结点的路径对应了一个判定测试序列.决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之”(divide-and-conquer)策略

        策树的生成是一个递归过程.在决策树基本算法中,有三种情形会导致递归返回:

  • (1)当前结点包含的样本全属于同一类别,无需划分;
  • (2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;利用当前结点的后验分布
  • (3)当前结点包含的样本集合为空,不能划分.当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别.父结点的样本分布作为当前结点的先验分布.

2.划分选择

        一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高.

(1)信息增益

信息熵的定义 

         

Ent(D)值越D.

        信息增益的计算为父节点的信息熵减去划分后各子节点的信息熵之和,其中子节点信息熵的权重为   第v个分支节点样本数/父节点样本数

         

        一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯 度提升”越大.ID3决策树学习算法以信息增益为准则来选择划分属性.

 例如:

 

(2)增益率

        当考虑编号时,每个类别仅仅包含1个样本,此时信息增益最大,这些分支结点的纯度已达最大.然而,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测.

        也就是说信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法[Quinlan,1993]不直接使用信息增益,而是使用“增益率”(gainratio)来选择最优划分属性采用与式(4.2)义为

 IV(a)称为属性a的“固有值”(intrinsic value)[Quinlan,1993].属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大.

        需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5

        算法并不是直接选择增益率最大的候 选划分属性,而是使用了一个启发式 先从候选划分属性中找出信息增益高于平均水平的属性,再从 中选择增益率最高的.

(3)基尼指数

        CART决策树[Breiman et al.,1984]使用“基尼指数”(Gini index)来选择划分属性.采用与式(4.1)相同的符号,数据集D的纯度可用基尼值来度量:

        直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率.因此,Gini(D)越小,则数据集D的纯度越高

        采用与式(4.2)相同的符号表示,属性a的基尼指数定义为

 3.剪枝处理

  1. 预剪枝在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;
  2. 后剪枝:先从训练集生成一棵完整的决策树然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点.
        预剪枝使得决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销.但另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险.

         后剪枝决策树通常比预剪枝决策树保留了更多的分支.一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树.但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多.

4.连续与缺失值         

 (1) 连续值处理

          连续值将区间的中点作为候选划分点,然后像离散值属性一样考察这些点,

        对属性a,表示无缺失值样本所占的比例,表示无缺失值样本中第k类所占的比例,则表示无缺失值样本中在属性a上取值a^{v}的样本所占的比例.

        

        若样本α在划分属性a上的取值已知,则将a划入与其取值对应的子结点,且样本权值在子结点中保持为wg.若样本z在划分属性a上的取值未知,则将a同时划入所有子结点,且样本权值在与属性值a^{v}对应的子结点中调整为;直观地看,这就是让同一个样本以不同的概率划入到不同的

子结点中去.

5.多变量决策树  

        若我们把每个属性视为坐标空间中的一个坐标轴,则d个属性描述的样本就对应了d维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界.决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel),即它的分类边界由若干个与坐标轴平行的分段组成,

       

        分类边界的每一段都是与坐标轴平行的.这样的分类边界使得学习结果有较好的可解释性,因为每一段划分都直接对应了某个属性取值.但在学习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似,此时的决策树会相当复杂,由于要进行大量的属性测试,预测时间开销会很大.

        “多变量决策树”(multivariate decision tree)就是能实现这样的“斜划 分”甚至更复杂划分的决策树.以实现斜划分的多变量决策树为例,在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试

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

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

相关文章

unity-firebase-Analytics分析库对接后数据不显示原因,及最终解决方法

自己记录一下unity对接了 FirebaseAnalytics.unitypackage(基于 firebase_unity_sdk_10.3.0 版本) 库后,数据不显示的原因及最终显示解决方法: 1. 代码问题(有可能是代码写的问题,正确的代码如下&#xff…

分布式系统一致性与共识算法

分布式系统的一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据(元数据,日志数据等等)变动在系统内部各节点应该是一致的。 一致性模型分为如下几种: ① 强一致性 所有用户在任意时…

vue源码分析之nextTick源码分析-逐行逐析-错误分析

nextTick的使用背景 在vue项目中,经常会使用到nextTick这个api,一直在猜想其是怎么实现的,今天有幸研读了下,虽然源码又些许问题,但仍值得借鉴 核心源码解析 判断当前环境使用最合适的API并保存函数 promise 判断…

【RL】Actor-Critic Methods

Lecture 10: Actor-Critic Methods The simplest actor-critic (QAC) 回顾 policy 梯度的概念: 1、标量指标 J ( θ ) J(\theta) J(θ),可以是 v ˉ π \bar{v}_{\pi} vˉπ​ 或 r ˉ π \bar{r}_{\pi} rˉπ​。 2、最大化 J ( θ ) J(\theta)…

计算机服务器中了DevicData勒索病毒怎么办?DevicData勒索病毒解密数据恢复

网络技术的发展与更新为企业提供了极大便利,让越来越多的企业走向了正规化、数字化,因此,企业的数据安全也成为了大家关心的主要话题,但网络是一把双刃剑,即便企业做好了安全防护,依旧会给企业的数据安全带…

Prometheus+Grafana 监控

第1章Prometheus 入门 Prometheus 受启发于 Google 的 Brogmon 监控系统(相似的 Kubernetes 是从 Google的 Brog 系统演变而来),从 2012 年开始由前 Google 工程师在 Soundcloud 以开源软件的 形式进行研发,并且于 2015 年早期对…

如何在Linux搭建Inis网站,并发布至公网实现远程访问【内网穿透】

如何在Linux搭建Inis网站,并发布至公网实现远程访问【内网穿透】 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.…

论文阅读:How Do Neural Networks See Depth in Single Images?

是由Technische Universiteit Delft(代尔夫特理工大学)发表于ICCV,2019。这篇文章的研究内容很有趣,没有关注如何提升深度网络的性能,而是关注单目深度估计的工作机理。 What they find? 所有的网络都忽略了物体的实际大小,而关注他们的垂直…

全球最强开源大模型一夜易主!谷歌Gemma 7B碾压Llama 2 13B,今夜重燃开源之战

一声炸雷深夜炸响,谷歌居然也开源LLM了?! 这次,重磅开源的Gemma有2B和7B两种规模,并且采用了与Gemini相同的研究和技术构建。 有了Gemini同源技术的加持,Gemma不仅在相同的规模下实现SOTA的性能。 而且更令…

嵌入式学习-qt-Day3

嵌入式学习-qt-Day3 一、思维导图 二、作业 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳…

Transformer 架构—Encoder-Decoder

文章目录 前言 一、Encoder 家族 1. BERT 2. DistilBERT 3. RoBERTa 4. XML 5. XML-RoBERTa 6. ALBERT 7. ELECTRA 8. DeBERTa 二、Decoder 家族 1. GPT 2. GPT-2 3. CTRL 4. GPT-3 5. GPT-Neo / GPT-J-6B 三、Encoder-Decoder 家族 1. T5 2. BART 3. M2M-100 4. BigBird 前言 …

SpringBoot---集成MybatisPlus

介绍 使用SpringBoot集成MybatisPlus框架。 第一步&#xff1a;添加MybatisPlus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version> </dependenc…

MIT6.S081学习——一、环境搭建、资料搜集

MIT6.S081学习——一、环境搭建、资料搜集 1、环境准备2、资料搜集2、环境搭建2.1 Linux环境准备2.2 环境搭建2.2.1 根据官网指导代码进行相关工具的安装2.2.2 下载并且编译QEMU 3、VSCode远程连接Ubuntu3.1 安装remote-ssh3.1.1 安装插件3.1.2 配置config文件 3.2 Ubuntu安装S…

springcloud:2.OpenFeign 详细讲解

OpenFeign 是一个基于 Netflix 的 Feign 库进行扩展的工具,它简化了开发人员在微服务架构中进行服务间通信的流程,使得编写和维护 RESTful API 客户端变得更加简单和高效。作为一种声明式的 HTTP 客户端,OpenFeign 提供了直观的注解驱动方式,使得开发人员可以轻松定义和调用…

Redis突现拒绝连接问题处理总结

一、问题回顾 项目突然报异常 [INFO] 2024-02-20 10:09:43.116 i.l.core.protocol.ConnectionWatchdog [171]: Reconnecting, last destination was 192.168.0.231:6379 [WARN] 2024-02-20 10:09:43.120 i.l.core.protocol.ConnectionWatchdog [151]: Cannot reconnect…

win32 汇编读文件

做了2个小程序&#xff0c;没有读成功&#xff1b;文件打开了&#xff1b; .386.model flat, stdcalloption casemap :noneinclude windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib include Comdlg32.inc includelib …

Pormise---如何解决javascript中回调的信任问题?【详解】

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 回调中的信任问题回调给我们带来的烦恼&#xff1f;调用过早调用过晚调用的次数太少或太多调用回调时未能…

数据结构之链表经典算法QJ题目

目录 单链表经典算法题目1. 单链表相关经典算法OJ题&#xff1a;移除链表元素思路一&#xff1a;思路二&#xff1a; 2. 单链表相关经典算法QI题&#xff1a;链表的中间节点思路一思路二 3. 单链表相关经典算法QJ题&#xff1a;反转链表思路一思路二 4. 单链表相关经典算法QJ题…

pytest 框架自动化测试

随笔记录 目录 1. 安装 2. 安装pytest 相关插件 2.1 准备阶段 2.2 安装 2.3 验证安装成功 3. pytest测试用例的运行方式 3.1 主函数模式 3.1.1 主函数执行指定文件 3.1.2 主函数执行指定模块 3.1.3 主函数执行某个文件中的某个类、方法、函数 3.1.4 主函数执行生…

学习鸿蒙背后的价值?星河版开放如何学习?

现在是2024年&#xff0c;华为在1月18开展了鸿蒙千帆起仪式发布会。宣布了鸿蒙星河版&#xff0c;并对开发者开放申请&#xff0c;此次发布会主要是说明了&#xff0c;鸿蒙已经是全栈自研底座&#xff0c;鸿蒙星河版本的编程语言改为ArkTS/仓颉&#xff0c;内核改为鸿蒙原生内核…