机器学习和数据挖掘(5):训练与测试

2024-08-24 11:08

本文主要是介绍机器学习和数据挖掘(5):训练与测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

回顾与说明

不像上一章的学习流程图,我们这里假设可学习的数据来自于一个统一的分布(不考虑噪声的情况),且假设空间中的假设函数为有限个的情况下,其学习流程图如图所示。

我们这里假设训练样本和测试样本本来自同一的分布,并且假设空间的假设是有限的,即 |H|=M M 是有限的值。在这种情况下,在训练样本N足够大,假设空间中的所有的假设都会遵循PAC准则,确保Ein(h)Eout(h),每一个假设函数都可以满足近似相等的性质。因此可以通过算法在这些假设空间中找一个使得 Ein(h)0 的假设,同样PAC也保证了 Eout(h)0

因此,训练样本和测试样本满足同分布,假设空间有限,并且训练数据足够大,机器学习在这种情况下是可行的。

虽然我学的不是台大的机器学习,但是我看两边的PPT很相似,我这里就摘抄了台大的课程情况。

回顾一下之前四章的内容:

第一章介绍了存在一个未知的目标函数f,机器学习的任务是找出一个假设函数g,使得假设g和目标函数f很接近,即 gf ,用第四章的概念可以解释为在测试时的错误率接近零,即 Eout(g)0

第二章介绍了在训练时使假设函数g和目标函数f很接近就可以了,即 Ein(g)0

第三章介绍了一种机器学习最基础、最核心的方法:使用批量的数据和监督式的学习来做二元分类。

第四章介绍了在假设空间不是太多,即假设函数有限的情况下,训练时的错误率和测试时的错误率很接近,即 Ein(g)Eout(g)

从以上各章节中可以看出将机器学习分为了两个主要问题来解决:

  1. 是否能确保 Ein(g) Eout(g) 足够接近的?这是连接第一章和第二章的桥梁。
  2. 如何 Ein(g) 使得足够小?这是第二章的内容,当然后面的章节还会继续介绍其他的技巧。

在第四章中介绍的假设空间的大小M与上述两个问题存在何种关系?

问题M很小的时候M很大的时候
Ein(g)Eout(g) 满足, PD[BADi]2Mexp()
M小的时候,两者不相等的几率变小了
不满足, PD[BADi]2Mexp()
M大的时候,两者不相等的几率变大了
Ein(g)0 不满足,在M变小时,假设的数量变小,
算法的选择变小,可能无法找到 Ein(g) 接近0的假设。
满足,在M变大时,假设的数量变大,
算法的选择变大,找到 Ein(g) 接近0的假设的几率变大。

显然M趋于无穷大时,问题一的解决非常不好,如何解决这个问题呢?

需要寻找一个小于无限大M的替代值,并且这个值还和假设空间有关系,用 mg 表示。

从训练到测试

在误差理论一文中,求出了在有限假设空间中满足 Ein(g)Eout(g) 的假设的上限,当时,使用联合上限(union bound),实际不等式的上界被放大了太多。假设在假设空间中包含无限多的假设函数,则此上限为无穷大,而真正合理的上界是不应该大于1。

上界较大的原因是,两个假设函数出现完全相同的坏数据的可能性非常大,对于集合而言,他们的交集不是空集,所以这两个集合的或集写成两个集合相加的形式时,一定要减去它俩的交集。而联合边界的问题出在,这几个集合不仅相交,而且交集很大,却没有被减掉,因此上界过于宽松。

举个简单的例子,在二维平面上进行二元线性分类,假设两条直线h1和h2很接近,那么就不难得出两种假设的坏数据也基本重叠,即 |Ein(h1)Eout(h1)||Ein(h2)Eout(h2)| 。如下图所示。

图1

二分类(Dichotomies)

那么我们可以想到,输入的样本空间 X 是无穷大的,同时也就造成了我们可能有无限种假设,也就是说 |H|=M

那么当我们在输入的样本空间中采样的时候,我们得到了 (x1,x2,,xN)X ,我们就可以在有限范围内进行计数,从而得到 |H(x1,x2,,xN)|2N

上图是一个两个点采样的情况,我们可以得到4个假设函数。

很明显的,如果我们采样的点很多,那么我们的假设空间也较大,而我们如果采样较少的点,我们的假设空间也就较小。我们就可以用这样的采样点得到假设空间,从而代替M。

生长函数

我们需要找到的是对于某一个大小的采样,最大的假设空间是多少。生长函数就是用于计算具体的某个采样的大小,可以得到最多多少个二分类。

mH(N)=maxx1,,xNX|H(x1,,xN)|2N

先从最简单的分一个样本点着手,假设是一个二元线性分类问题,一个样本的例子比较容易理解,如下图所示:

一个样本点分类可以有几种方式?无非两种,该样本为正,或者为负。而假设空间中的所有假设或者称之为直线,都只能分属于这两种情况。

继续观察两个样本的情况,如图所示:

这种情况可以分为如图所示的4种情况,也就是所有的直线可以分属这4个类中。

继续观察三个样本的情况,如图所示。

出现了8种情况,但是如果样本的分布转变一下呢?比如三排成一线,就只有6类,如图所示。

继续观察四个样本的情况,如图所示:



如何具体化(就是只使用训练样本的大小N来表达出该函数)生长函数成为接下来需要解决的问题。先从简单的例子着手一步一步的推导到在感知器下该函数的具体表达。

生长函数的例子

正射线

第一个例子是举一个最简单的情况,在一维实数的情况下,并且限制分类的正方向指向固定的一边,求解生长函数。给这一分类情况起名叫做正射线(positive rays),如图所示。

用数学的方式表示如下:

  1. 输入数据样本为 xR R 为实数集;
  2. 其假设空间可以表示为 h(x)=sign(xa) ,其中a是阈值,表示大于某个实数a数据被分为正类,反之为负类。
  3. 本质是在一维平面上的感知器。

正射线分类的生长函数很容易得出:

mH(N)=N+1

正分类

下一个例子还是在一维空间里,与正射线分类不同的是,这是一种中间为正两边为负的情况,叫做中间为正的分类(positive interval),如图所示。

其生长函数公式如下:

mH(N)=C2N+1+1=12N2+12N+1

凸包

以凸图形分类为例,在凸区域内部为正,外部为负,也就是凸区域的边界作为假设函数的划分线,如图所示。

如何求解在这种情形下的生长函数?生长函数是寻找一个最大值的情形,因此要取一些极端的情况,比如所有的点都落在一个圆圈上,用一个凸多边形将所有正类的样本点连接起来,将此图形稍微的放大一点,得到的凸多边形,其中间的区域为正,外边的区域为负,如图所示。

可以很容易地得到生长函数

mH(N)=2N

突破点

将上一节中列举出来的所有成长函数列在表中

正射线

        一维空间的感知器

间隔为正的分类

凸图形分类

二维平面的感知器

在某些情况

我们希望得到一种多项式(polynomial)形式的成长函数,而不是指数(exponential)形式的,因为这样上界的下降速度将会更快(可以用类似于时间复杂度的方式来理解)。

能否找出一种规律将表中二维感知器的成长函数也写成多项式形式的呢?于是提出了一个新的概念,突破点(break point)。

那什么叫突破点呢?对于三个样本点的感知器,所有的样本还是满足完全二分类情形(shattered,也就是还是可以最大化分类的),但是四个样本是却不能满足完全分类情形(不能满足 种分类了),于是我们称不能满足完全分类情形的样本数量为突破点,可以想象得出当有更多的样本点时,一定也不能满足完全分类情形。因此二维感知器成长函数的突破点是4。在通过一个表来说明上节提到的所有分类情况。

正射线

突破点是2

一维空间的感知器

突破点是3

间隔为正的分类

突破点是3

凸图形分类

没有

二维平面的感知器

突破点是4

在某些情况

从表中可以看出可能成长函数和突破点之间有一定的关系,即突破点是k的情况下,成长函数 。(但是这是一个过于宽松的上界,从上表的第二行可以看出成长函数实际比这个规律要小)

这篇关于机器学习和数据挖掘(5):训练与测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102306

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测