西瓜书学习笔记day2

2023-10-29

模型评估与选择

一、经验误差与过拟合

错误率:分类错误的样本数占样本总数的比例。在m个样本中共有a个样本分类错误,则错误率E=a/m。

精度:1-a/m

误差:学习器实际预测输入与样本的真实输出之间的差异定义为误差。在训练集中的误差被称为训练误差,在新样本上的误差被称为泛化误差。

过拟合:当学习器把训练样本学的“太好了”的时候,很可能会把训练样本的特性当作所有潜在样本所拥有的共性,从而模型的泛化性能下降,这种情况就被称为“过拟合”,一般是由于学习能力过于强大造成的。与之相对的,当学习器把训练样本学的“不够好”的时候,就被称作“欠拟合”,主要由于学习能力过弱。

二、评估方法

在训练前,我们需要一个“测试集”来对学习模型的泛化误差进行评估而做出选择。测试集应尽量与训练集互斥,且同样从样本的真实分布中独立同分布采样获得。

常见产生测试集的做法:
①留出法:
直接将数据集划分为两个互斥的集合,其中一个作为训练集,另外一个作为测试集。一般采用多次随机划分来确保采样的随机性。

②交叉验证法
先将数据集划分为k个大小相似的互斥子集,然后每次采用k-1个子集的并集用来训练,剩下的子集作为测试集,可进行k次训练与评估,最终返回k个测试结果的均值。又被称作k折交叉验证。
若数据集有m个样本,在进行交叉验证时使用k=m,则得到交叉验证的一个特例:留一法。这种方法不受随机样本划分的影响,但计算开销难以忍受,且“没有免费的午餐”定理对于评估方法也同样适用。

③自助法
希望评估以完整的数据集D所训练出的模型,但在留出法与交叉验证法中必须要留出一部分样本用于测试,可以用自助法解决这个问题,它以自助采样法为基础,给定包含m个样本的数据集D,对他进行采样生成D‘,每次随机从D中挑选一个样本放入D’,然后再将样本放入D中,使得该样本在下次采样过程中仍然能够被采集到,重复执行m次以后,就得到了包含m个样本的数据集D‘,可见,D中的一部分样本会在D’中出现。由于:

初始数据集中约有36.8%的样本未出现在D‘中,于是我们可以将D’作为训练集,将D\D‘作为测试集,这样实际评估的模型与期望评估的模型都使用m个训练样本,而同时仍然有1/3的样本没在训练集中出现并参与了测试,这样的测试结果又被称作“外包估计”
自助法在训练集较小是使用比较多,除此外,自助法还可以产生多个不同的训练集,对集成学习有很大的好处。但是在进行数据产生时,自助法改变了初始数据集的分布,会产生一定的估计偏差,故留出法与交叉验证法更加常用。

三、参数选择与性能度量

大多数学习算法都需要设定参数,参数的设定与学习模型的性能息息相关,这个过程被称作“调参”
性能度量是指对学习器的泛化能力进行评估,反应了任务的需求,不同的性能度量往往会导致不同的评判结果,在回归任务中,最常用的就是“均方误差”:


在这里插入图片描述

1、错误率与精度

分类任务中常见的两个性能度量,既适用于二分类,又适用于多分类任务。错误率即分类错误的样本数占总样本数的比例,精度则为分类正确的样本占总样本数的比例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、查准率、查全率与F1

对于一个二分类问题,有时我们并不关心分类错误的比例,而更关心在某个分类中正确的比例(就好像在某个分类中“宁肯错杀不能放过”)
于是我们将结果分为四类:真正例、真反例、假正例、假反例。
在这里插入图片描述
在这里插入图片描述
查准率与查全率必然一高一低,当所有的样本都被判定为正例的时候,查全率就会达到100%,但这样显然意义不大。双方关系如下图所示。

在这里插入图片描述
当一个学习器的PR曲线被另一个完全“包住”,则该学习器的性能要劣于另一个。一般来讲,我们以PR曲线下面积的大小来判断性能。但这个值难以估算,因此人们设计了一些其他的度量:
①平衡点(BEP):
查全率=查准率时双方的取值。
②F1度量
由于平衡点过于简化,F1度量更加常用。

在一些应用中,对于查重率与查准率有着明显的偏好,因此设计出了F1度量的一般形式,用来表现出在具体问题中的偏好:

在这里插入图片描述
其中β表示了查重率对查准率的相对重要性,β=1时就表示没有偏好的F1度量,β>1时表示查全率有更大的影响,<1时表示查准率影响更大。

若对多个混淆矩阵进行评估(多分类问题或多次训练),则可在各个混淆矩阵上分别计算查全率与查准率,就可得到宏查全率、宏查准率、宏F1:
在这里插入图片描述
还可先将各个矩阵的元素进行平均,再基于平均值算出微查全率、微查准率、微F1:
在这里插入图片描述

3、ROC与AUC

很多学习器在训练过程中会为样本产生一个概率预测,然后将预测值与分类阈值进行比较,若大于阈值就分为正类,否则就是反类。这个预测直接决定了,模型的泛化能力。
ROC:受试者工作特征
与PR相似,根据学习器的预测结果对样本进行排序,按此顺序逐个把样本作为正例来进行预测,每次计算出两个重要量的值,分别以他们为横纵坐标,就得到了ROC曲线。
在ROC曲线中,纵轴是“真正例率”,横轴是“假正例率”。
在这里插入图片描述
在这里插入图片描述

ROC曲线示意图:
在这里插入图片描述
AUC为阴影部分面积,可有效表示学习器的泛化能力。
对基于有限样例绘制的ROC曲线来说:
在这里插入图片描述

4、代价敏感错误率与代价曲线

在实际问题的解决中,不同的错误造成的结果也不同,有时需要“能放则放”,有时需要“宁肯错杀也不放过”。基于这样的现实需求,我们可以为错误赋予“非均等代价”

我们可以将costij表示为将第i类样本预测为第j类样本的代价。以二分类为例,代价矩阵如下:
在这里插入图片描述
在引入代价

矩阵后,我们希望获得总体的最小代价若将上图第0类作为正类,1类作为反类,令D+与D-分别代表例集D的正例与反例子集,则“代价敏感”的错误率为:
在这里插入图片描述

基于次操作,可以给出不同性能度量的代价敏感版本。
如:
若对ROC曲线进行代价敏感操作,ROC曲线不能反映出整体期望低价,可以使用“代价曲线”:
横轴是取值为【0,1】的正例代价概率:
在这里插入图片描述
其中FPR为假正例率,FNR=1-FPR为假反例率。

代价曲线的绘制:
在这里插入图片描述
在这里插入图片描述

四、比较检验

1、假设检验

假设检验中的“假设”是对学习器泛化错误率分布的某种猜想或判断,但我们并不知道学习器的泛化错误率,只知道它的测试错误率,两者接近的可能性比较大,但未必相同,我们一般使用测试错误率来推出泛化错误率的分布。

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②t检验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上两种方法是对单个学习器泛化性能的假设检验。

2、交叉验证t检验

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

3、McNemar检验

对于二分类问题,使用留出法不但可以估计出两种学习器的测试错误率,还可以获得两者分类结果的差别,如“列联表”所示。
在这里插入图片描述
在这里插入图片描述

4、Friedman检验与Nemenyi后续检验

交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能,而我们在使用过程中,常常会对多个算法进行比较,虽然我们可以把他们单列出来进行两两比较,但也可以使用Friedman方法(基于算法排序)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若两个算法的平均序值之差超出了临界值域CD,则以相应的置信度拒绝“两个算法性能相同这一假设”。
在这里插入图片描述
在这里插入图片描述

5、偏差与方差

除了要通过实验估计算法的泛化性能外,我们还要了解为什么它具有这样的性能,“偏差-方差分解”就是解释学习算法泛化性能的重要工具。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
偏差定义了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
方差度量了同样大小的训练集变送所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声则表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

根据上图的偏差-方差分解说明,泛化性能是由机器学习算法的能力、数据的充分性以及学习任务本身的难度来共同决定的。

一般来说,偏差与方差是有冲突的,这成为“偏差-方差窘境”。
在我们训练不足时,学习器的拟合能力不强,训练数据的扰动不足以使学习器发生显著变化,这时偏差主导了泛化错误率;而当训练充足后,学习器的拟合能力已经很强了,训练数据的轻微扰动都会被学习器学习到,若训练数据自身的特性被学习器学到了,那就会发生过拟合。这时就是方差在主导泛化错误率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

西瓜书学习笔记day2 的相关文章

随机推荐

  • brk(), sbrk() 用法详解

    http blog csdn net ssjhust123 article details 7772153 brk sbrk 的声明如下 cpp view plain copy include
  • H无穷控制器在Matlab中的实现

    H无穷控制器在Matlab中的实现 H无穷控制器是一种广泛应用于控制系统设计中的方法 它可以用来设计具有鲁棒性和性能要求的控制器 在本文中 我们将介绍如何在Matlab中实现H无穷控制器 并提供相应的源代码 H无穷控制器的设计主要涉及到两个
  • python 用OpenCV统计图片中黄色部分的个数。

    原图片 我的想法是 先将图片中除了黄色的部分全部变为白色 然后再利用 cv2 findContours 函数来识别轮廓 直接统计轮廓的个数就是黄色部分的个数 程序代码 coding utf 8 import os import cv2 im
  • 2023mathorcupA题量子计算机在信用评分卡组合优化中的应用思路

    2023mathorcup A题 量子计算机在信用评分卡组合优化中的应用思路 gzh数模孵化园 出品 先说说这题难在哪 主要在于计算 计算 还是计算 优化算法的计算 三道题都是考察这个 而且是转变为QUBO 形式并求解 问题1要求在100个
  • angular蚂蚁_angular api文档

    AngularJS 中的友好 URL 移除URL 中的 已翻译100 AngularJS 默认将会使用一个 号来对URL进行路由 例如 http example com http example com about http example
  • vue+element ui中的tableData中的数据格式

    tableData接收的是一个数组 数组中的元素是一个个的键值对 如图 tableData接收从后端返回的值 遍历一维数组 就是说 tabelData member 那么从纵向而言 就是遍历数组的个数 tableData从member中 取
  • android内存优化面试题,如何成为一个更好的Android开发者

    前言 事情是这样的 今年年初 在某个大博主那里拿到一份Android面试宝典合集 然后就一直躺在盘里吃灰 直到5月份的时候 有了要跳槽的计划和打算 就想着要刷刷面试题 所以就把这套 积灰 的面试宝典拿出看了看 因为这份文档是一位Alibab
  • Android Handler机制

    Android开发中经常用到handler来发送消息 比如将消息抛到主线程去更新UI handler机制涉及到四个核心的类 Looper 消息循环 有一个Messagequenue 不断从消息队列中取出消息 MessageQuenue 消息
  • cnn 预测过程代码_【交通+AI】使用CNN+LSTM实时出租车出行预测(上)

    这篇论文主要讲述了使用成都的出租车轨迹数据进行建模后生成出行强度图 使用CNN和LSTM进行学习之后通过反卷积生成出行强度预测图 非常适合上手这个领域 主要有两点原因 第一 出租车出行强度只包含了上车下车的频次信息 不涉及OD 路线等复杂问
  • hbase region拆分的三种方式

    我们都知道 region在数据量大到一定程度的时候 会进行拆分 最开始由一个变成二个 而拆分的方式有三种 包括预拆分 自动拆分 手动强制拆分 下面就来介绍介绍拆分的方式 预拆分 预拆分 pre splitting 就是在建表的时候就定义好了
  • 使用Python模拟登陆虎扑,获取cookies

    模拟的虎扑app登录逻辑 import requests import hashlib import re def login username password headers Host games mobileapi hupu com
  • java的remove方法_Java 中remove()方法的使用

    Java 中remove 方法的使用 1 在对集合进行迭代的时候删除其中的元素 最好使用迭代器Iterator的 remove方法进行删除 Iterator ite list iterator while ite hasNext Objec
  • 森林正版服务器,《森林》正式版服务器怎么设置 游戏专用服务器设置教程

    导 读 对于想要联机的小伙伴来说如果拥有自己的服务器那是一件再好不过的时间了 所以今天小编为大家带来的就是玩家 ccsingtao 翻译整理分享的森林游戏专用服务器设置教程 不会创建设置的玩家还不点击进来看看 对于想要联机的小伙伴来说如果拥
  • Jquery serializeObject

    获取Form表单数据 param string form param Array
  • unity中开启物理效果时,用A方块击打B方块,A会直接穿过B(当速度比较大时)

    unity中开启物理效果时 用A方块击打B方块 A会直接穿过B 当速度比较大时 这个有什么好办法解决不 谢谢 最核心的是 限制A方块的速度 以下是网友的建议 可以提高运行次数 减少速度 1 方块A的速度不要乘上Time deltaTime
  • 南开大学软件学院2021年秋季学期研究生算法课程(复习)非确定算法:随机与近似

    非确定算法 随机与近似 确定性算法Deterministic algorithms 对于给定的输入 算法的输出和运行时间不变 非确定性算法Non deterministic algorithms 对于给定的输入 算法的输出或运行时间是不确定
  • Arduino无人机四轴飞行器(esp8266)

    想要更多项目私wo 一 电路设计 硬件组成 Arduini Nan ESP8266 MPU6050 模块 有刷电机 螺旋桨 电池包 Si2302场效应管 无人机架 ESP8266模块 为了与无人机通信 我们需要蓝牙或WIFI连接 所以我们使
  • linux下Zlib的安装与使用

    1 zlib简介 zlib 适用于数据压缩的函式库 由Jean loup Gailly 负责compression 和 Mark Adler 负责decompression 开发 zlib被设计成一个免费的 通用的 法律上不受阻碍 即没有被
  • ARM编译Qt程序报错pinyin.cpp:1: error: stray ‘\357‘ in program

    ARM编译Qt程序报错pinyin cpp 1 error stray 357 in program 问题 Qt程序用gcc编译可以通过 用arm linux gcc编译文件的时候出现异常错误 pinyin cpp 1 error stra
  • 西瓜书学习笔记day2

    模型评估与选择 一 经验误差与过拟合 错误率 分类错误的样本数占样本总数的比例 在m个样本中共有a个样本分类错误 则错误率E a m 精度 1 a m 误差 学习器实际预测输入与样本的真实输出之间的差异定义为误差 在训练集中的误差被称为训练