模型评估与优化1--基本概念与最优化问题

2023-05-16

模型评估与优化1–基本概念与最优化问题

首先先看一下基本术语和概念
1.数据集的划分
(1)数据集(dataset):在机器学习任务中使用的一组数据。数据集中每一个数据称为一个样本。反映样本在某方面的表现或性质的事项或属性称为特征。
(2)训练集(training data):训练过程中使用的数据集。数据集中每个训练样本称为训练样本。从数据中学得模型的过程称为学习 (训练)。
(3)测试集(testing data):学得模型后,使用其进行预测的过程称为测试,使用的数据集称为测试集,每个样本称为测试样本。
(4)交叉验证集(cross validation data):用于衡量训练过程中模型的好坏。

2.偏差与方差
(1)偏差:衡量算法的期望预测与真实值之间的偏差程度,反映了模型本身的拟合能力。
(2)方差:衡量同等大小的训练集的变动导致模型学习的变化,刻画了数据扰动所导致的影响。
注意:
当模型越复杂时,拟合能力就越好,模型的偏差就越好。但此时如果换一组数据可能模型的变化就会很大,即模型方差变大,将这种现象称为过拟合,所以复杂的模型容易造成过拟合;当模型简单的时候,即使换一组数据,得出的学习器分类效果与之前分类器的效果也不会很大,即模型方差很小,但由于模型过于简单,导致偏差会很大,导致欠拟合。

3.过拟合和欠拟合
(1)欠拟合:模型没有很好地捕捉到数据特征,不能够很好地拟合数据。也就是高偏差,低方差。
(2)过拟合:通俗一点地来说过拟合就是模型把数据学习地太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确地分类,模型泛化能力太差。也就是高方差,低偏差。

4.抽样方法
(1)简单随机抽样:在简单随机抽样中,总体所有成员被选为样本的概率是相等的。
(2)分层抽样:将总体分成不同的子群,然后对所有的子层进行随机抽样。
(3)系统抽样:首先将总体中各单位按一定顺序排列,根据样本容量要求确定抽选间隔,然后随机确定起点,每隔一定的间隔抽取一个单位,以得到所需要的样本。
(4)整群抽样:整群地抽选样本单位,对被抽选的各群进行全面调查的一种抽样。例:检验某种零件的质量时,不是逐个抽取零件,而是随机抽若干盒 (每盒装有若干个零件),对所抽各盒零件进行全面检验。

5.凹凸函数
(1)凹集:非凸集。
(2)凸集:若集合中任意两点连线上的点都在该集合中,则称该集合为凸集。
函数的凹凸是由函数“上方”集合的凹凸性决定的,该集合为凸集则该函数为凸函数,相反该集合为凹集则该函数为凹函数。
(3)凸函数:简单理解为在函数图像上任取两点,如果函数图像在这两点之间的部分总在连接着两点的线段上方,则为凸函数。
(4)凹函数:简单理解为在函数图像上任取两点,如果函数图像在这两点之间的部分总在连接这两点的线段的下方,则为凹函数。

关于最优化模型
1.最优化概述
从某种程度上说,我们的世界是由最优化问题组成的。每一天,我们的生活都面临无数的最优化问题:上班怎么选择乘车路线,才能舒服又快速地到达公司;旅游如何选择航班和宾馆,既省钱又能玩地开心;跳槽应该选择哪家公司,钱多、事少、离家近;买房子应该选在哪里,交通发达有学区,生活便利升值快。
可以看出,上面所有的问题都面临无数的选择,我们会根据自己的偏好对每个选择打一个不同的分数,再从所有的选择中找出最优的一个。这个寻求最优解的过程其实就是最优化问题,我们要打的分数就称为目标函数。
最优化方法是机器学习中模型训练的基础,机器学习的很大一部分内容就是通过最优化方法找到最合适的参数,使得模型的目标函数最优。

2.最优化问题
最优化问题的定义:在给定的约束条件下,选择最优的参数和使得目标函数最大化/最小化。
最优化问题的三个基本要素:
(1)目标函数:用来衡量结果的好坏
(2)参数值:未知的因子且需要通过数据来确定
(3)约束条件:需要满足的限制条件
注意:
目标函数必须是凸函数,才能保证优化后获得的最优结果是全局最优而不是局部最优,否则要进行凸优化。

3.非凸函数
在一些最优化问题中很可能遇到复杂且不易求解的目标函数如高阶函数。如下图所示,其可能有多个局部极值点,而我们想找到的只有一个全局最优点。
在这里插入图片描述
对于一个复杂函数,找其全局最优点无疑比较困难,在实际工程中可能很难求解,这时我们想将一个复杂的非凸函数转化为一个如下图所示的凸函数,这样其局部最优便是全局最优。凸函数所对应的优化便是凸优化。

4.凸优化
凸优化是机器学习的一个根本性问题,在工程中很多问题可以抽象化为一个凸问题,很多非凸问题可以通过一定的手段或方法转化为一个凸问题,一旦转化为一个凸问题,那么理论上来说,这个问题便可以得到解决。
凸优化的定义:只有满足以下两个条件才需要我们做凸优化的处理:
条件一: 约束条件为凸集。
条件二: 目标函数为凸函数。
非凸优化问题转化为凸优化问题的方法:
修改目标函数,使之转化为凸函数。
抛弃一些约束条件,使新的可行域为凸集并且包含原可行域。

5.损失函数
损失函数(Loss function) :是用来估量模型的预测值与真实值的不一致程度,是一个非负实值函数。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心,也是结构风险函数的重要组成部分。模型的风险结构通常包括风险项和正则项。如下所示:
在这里插入图片描述
6.0-1损失函数
在这里插入图片描述
7.平方损失函数/绝对值损失函数
在这里插入图片描述
8.对数损失函数
在这里插入图片描述
对数损失函数(Cross Entropy Loss):该损失函数用到了极大似然估计的思想。
P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,取对数。最后由于是损失函数(log函数)是递增的函数,P越大,所以函数值越大。进而预测正确的概率越高,其损失值应该越小,因此公式前加负号取反。

9.指数损失函数
在这里插入图片描述
10.最优化模型的分类
最优化模型分类方法有很多,可按变量、约束条件、目标函数个数、目标函数和约束条件的是否线性,是否依赖时间等分类。
根据约束条件来分类。首先最优化问题通常是带约束条件,比如对旅行路线的选择,总花费和出发、到达时间就构成了约束条件;对买房子的选择,离公司的路程、总价也可能构成约束条件。我们选择的最优解也必须满足这些约束条件。
最优化问题根据约束条件的不同主要分为三类:
无约束优化
等式约束的优化
不等式约束的优化

11.无约束最优化
无约束最优化的求解方法主要有解析法和直接法。
无约束优化常表示为:
在这里插入图片描述
直接方法为费马定理(Fermat), 即使用求取函数f(x)的导数,然后令其为零, 可以求得候选最优值。再在这些候选值中验证,如果是凸函数,可以保证是最优解。
解析法,是根据无约束最优化问题的目标函数的解析表达式给出一种求最优解的方法,主要有梯度下降法,牛顿法等。

无约束最优化的应用:
当下最常用的无约束优化方法为梯度下降法(已经在第二章数学基础知识部分详细介绍)。在机器学习算法中应用到梯度下降方法进行优化的主要算法有:线性回归,逻辑回归,神经网络等。
梯度下降常用的方法有三种:
批量梯度下降(BGD):每次更新使用所有的训练数据,最小化损失函数,如果只有一个极小值,那么批量梯度下降是考虑了训练集所有数据,是朝着最小值迭代方向运动的,但如果样本数量过多,更新速度会很慢。
随机梯度下降(SGD):每次更新的时候只考虑了一个样本点,这样会大大加快训练数据,也恰好是BGD的缺点。但是有可能陷入局部最优,不一定是朝着极小值方向更新,且SGD对噪声也更加敏感。
小批量梯度下降(MBGD):MBGD解决了批量梯度下降法的训练速度慢问题,以及随机梯度下降法的准确对噪声敏感的问题。

12.不等式优化
在这里插入图片描述

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

模型评估与优化1--基本概念与最优化问题 的相关文章

  • Gitee同步GitHub仓库如何操作

    最近 xff0c 许多开发者在进行私有仓库同步时 xff0c 会发现无法在 Gitee 通过同步功能拉取 GitHub 上的代码 xff0c 产生该问题的原因是 GitHub 从 2021 年 8 月 14 日后 xff0c 使用 Git
  • AUTOSAR ComM模块介绍

    AUTOSAR ComM模块介绍 Autosar ComM概述 Autosar ComM 全称是 Autosar Communication Manager 顾名思义就是用来管理通讯的 ComM 模块位于 BSW 中 Systme Serv
  • C语言中__FILE__ __LINE__ #line的用法

    C语言中 FILE LINE line的用法 C语言中 FILE 用于指示本行语句所在源文件的文件名 例如该行语句位于main c中 xff0c 则 FILE 表示main c C语言中 LINE 用于指示本行语句位于源文件中的位置即行数
  • 【新手向】make工具的使用

    make工具 在了解make工具前我们回顾下gcc编译步骤 1 xff09 预处理 处理与 号相关的代码 gcc E xxx c o xxx i 2 xff09 编译 检查语法错误 xff1b 如果语法有误则报错 xff0c 如果语法没错则
  • [python] python调用C++ 程序

    Python调用C C 43 43 程序的方法 最近写BUG的时候遇到python计算很慢的情况 xff0c 于是调研了一波在python中嵌入C 43 43 程序的方法 xff0c 记录一下 xff0c 便于查询 一般来说在python调
  • 深度学习(三):yolov5环境配置及使用

    目录 0 前言 1 环境配置 1 1 python环境 1 2 官方github的样例 1 2 1 打印检测结果 1 2 2 展示检测结果 2 运用detect py进行检测 2 1 网络摄像头 2 2 将检测过程可视化 3 运用train
  • sensor_data参数校验

    新的 xff1a Akamai sensor data zwl haley的博客 CSDN博客 只说下思路吧 xff0c 毕竟把加密代码公开对别网站不好 如有权益问题可以发私信联系我删除 xff0c 或q 1847858794 如图 xff
  • C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装

    Muduo is a multithreaded C 43 43 network library based on the reactor pattern muduo库的介绍就是 xff1a 一个基于reactor反应堆模型的多线程C 43
  • FCT测试

    1 总论 2 启动过程 3 各模块实现 1 总论 FCT 作为 Android 的一个外来测试程序 xff0c 位于源码的 external 文件夹内 xff0c 其目的是作为产品在 PCBA 装配生产线中的一个制程 xff0c 对外围硬件
  • ARM上电启动及Uboot代码分析

    注意 xff1a 由于文档是去年写的 xff0c 内有多个图片 xff0c 上传图片很麻烦 xff08 需要截图另存插入等等 xff09 xff0c 我把文章的PDF版本上传到了CSDN下载资源中 为了给自己赚点积分 xff0c 所以标价2
  • 【解决】缺少libstdc++.so.6库的原因及解决办法

    问题原因 xff1a 系统是64bit xff0c 该库是32bit的 xff0c 在64bit系统上安装32bit库 解决办法 xff1a 1 查看哪个安装包包含该库 xff1a yum provides libstdc 43 43 so
  • 仿真器和模拟器的区别

    仿真器 xff08 emulator xff09 和模拟器 xff08 simulator xff09 是比较容易混淆的概念 xff0c 这两个概念不仅针对计算机体系结构 xff0c 在很多方面都有所应用 xff0c 例如航空模拟器 街机仿
  • Flush-Cache/Page-Lock/Flush-TLB说明

    Flush Cache Page Lock Flush TLB说明 理论上顺序 xff1a 获得页面锁 xff0c 保证后续flush操作完成之前不允许继续读写Flush cacheFlush tlb 以下用numa migrate pag
  • 内核动态补丁(kpatch)及kpatch pushsection popsection previous的解释

    内核动态补丁 xff08 katch xff09 解释 本文阅读体验不好 xff0c 因此做了pdf版本 xff0c 点击下载 xff0c 如果你没有分数 xff0c 可以直接留言找我要pdf版本 内核可以在运行时动态执行补丁中的代码 xf
  • Shell编程:字符串与数值之间的转换与计算

    shell编程往往需要对字符串进行操作 xff0c 有时需要将字符串转为数值 xff0c 并做加减运算 以下介绍将字符串转为数值并进行计算的方法 temp1 61 400d7c echo 16 temp1 43 4 xff08 打印默认是十
  • linux内核代码预处理后便于阅读

    inux 内核庞大而复杂 内核代码阅读的时候 xff0c 有没有遇到因为宏定义或者inline层次太深而不知道到底代码是什么样子 代码预处理可以解决这个难题 平台 xff1a linux 3 4 5 ARM xff0c PC linux上类
  • 深度学习(六):pointnet.pytorch环境配置与学习

    目录 0 前言 0 1 shapenet数据集 1 配置环境 1 1 配置Python环境与安装pytorch 1 2 安装pointnet及其他包与下载数据 2 默认训练 2 1 分类训练train classification 2 1
  • sed在行首(行尾)添加字符串;在某行后添加多行字符串

    sed在行首添加字符串 xff1b sed s xxx 39 filename gt output xff1a 符号代表行首 sed在行尾添加字符串 xff1b sed s string 39 filename gt output xff1
  • 【解决】xterm Xt error: Can't open display: xterm: DISPLAY is not set

    当你运行xterm出现错误如下 xff1a xterm Xt error Can 39 t open display xterm DISPLAY is not set 我的系统centos6 2 解决办法 xff1a 1 首先确定你安装了x
  • 【解决】yum 安装 出错 Error: Protected multilib versions:

    我安装zlib出错 xff1a yum install zlib 1 2 3 29 el6 i686 Error Protected multilib versions zlib 1 2 3 29 el6 i686 61 zlib 1 2

随机推荐

  • 贴一下我的 vimrc 以及 vim 效果

    贴一下我的vimrc 看起来真的很养眼 xff0c 呵呵 这几天一直忙活着配置VIM xff0c 这个编辑器太迷人了 虽然emacs也强大 xff0c 可是仔细想想 xff0c 还是vim的效率高一些 原因如下 xff1a emacs通过
  • vim语法高亮——使自定义类型也能高亮的简单办法

    说明 xff1a 判断是否类型的简单办法 xff0c 就是简单的观察 xff1a 如果该标志符后面有空格 xff0c 空格后又是一个标志符的话 xff0c 在 xff23 xff0f xff23 xff0b xff0b 语言中 xff0c
  • 原创:纠正国人对Linux的误解和错误认识

    错误印象和认识罗列如下 xff0c 一一解释 xff1a 1 linux下的软件太少 回答 xff1a linux 下的软件一点也不少 windows还在娘肚子里的时候 xff0c Unix已经如日中天了 要知道微软公司开发的第一个操作系统
  • 原创:自己写的端口数据转发工具pf (port forwarding)

    看了 子清行 朋友博客里的一篇文章 xff0c 讲述了一个叫 DuplexPipe 的小工具的实现 最开始没怎么懂意思 xff0c 看了他公开的源代码 xff0c 是用java写的 xff0c 一个jar包 可惜我不太会java 因此没法看
  • 又一次被linux的工具震惊了

    前一篇博客还写了自己写的端口转发工具 xff0c 今天偶然在网上看到讲命名管道和netcat配合的用法 xff0c 被彻底雷倒了 原来以为netcat做不到 xff0c 原来是自己想不到 xff0c 而不是netcat做不到 方法如下 xf
  • Ubuntu桌面旋转xrandr

    项目实行过程中 xff0c 设备安装为竖屏模式 xff0c 分辨率由19201080变为10801920 xff1b 最简单实现 xff0c 将桌面系统显示旋转 xff1a xff08 终端命令 xff09 xrandr o left 向左
  • VR应用在直播领域上的实践与探索

    声明 xff1a 本文来自 七牛云主办的架构师实践日 泛娱乐 43 直播技术最佳实践 的演讲内容整理 PPT 速记和现场演讲视频等参见 七牛架构师实践日 官网 嘉宾 xff1a 孙其瑞 xff0c 得图网络CTO 责编 xff1a 钱曙光
  • ubuntu(14):ubuntu16编译move_base报错与解决

    目录 1 Could NOT find OpenVDB missing OPENVDB LOCATION 2 Could not find a package configuration file provided by 34 costma
  • 在CSDN发布博客怎么改变代码块颜色

    第一步 CSDN首页 xff0c 最右侧点击创作中心 第二步 左侧导航栏滑到最下面 xff0c 点击博客设置 第三步 找到代码片样式 xff0c 简单吧 xff08 又水了一篇 xff09
  • 裸机驱动与Linux设备驱动的区别

    裸机驱动一般针对没有操作系统支持的层面 不用考虑操作系统对它的调用 Linux驱动是在裸机驱动基础上 按照一定的规范来实现 虽然实现的都是同一个东西 不过你发现在 Linux驱动 搀杂 了许多维护信息 总之 xff0c Linux设备驱动就
  • 使用2020版IDEA创建Servlet

    使用2020版IDEA创建一个完整的Web项目的整个过程分为四步 第一步 创建一个普通的Java项目 1 打开IDEA xff0c 选择菜单File gt New gt Project 2 选择Java xff0c 以及自己的JDK xff
  • Apache IoTDB 系列教程-5:常见问题汇总(1)

    在过去的一段时间 xff0c 收集了不少大家在使用过程中反馈的问题 xff0c 今天把一些常见问题列出来 xff0c 给更多人提供参考 开了个交流群二维码 xff0c 可以扫码进群 正文 1974 字 xff0c 预计阅读时间 5 分钟 常
  • Apache IoTDB 系列教程-6:性能优化(0.8-0.10)

    今天的内容包括建模优化 读写性能优化 xff0c 会涉及一些简单的原理介绍 主要面向 0 8 0 10 版本 正文 3754 字 xff0c 预计阅读时间 10 分钟 建模指南 关于存储组 现在每个存储组是一个相对独立的引擎 xff0c 而
  • Apache IoTDB 系列教程-8:文件同步工具

    在官网用户手册的系统工具 xff08 System Tools xff09 一栏 xff0c 有一个同步工具 xff08 Sync Tool xff09 xff0c 有很多人问这个东西怎么用 xff0c 延迟是多少 xff0c 今天就介绍一
  • Apache IoTDB failed to start RPC ServerService, because Could not create ServerSocket on address

    原因 一般是端口占用 xff0c 可以 jps 检查是不是已经启动了一个 IoTDB
  • Apache IoTDB Query is time out (-1ms)

    现象 查询超时 xff0c 服务器出现一下日志 2022 01 05 15 57 05 724 pool 12 IoTDB query time manager 1 WARN o a i d q c QueryTimeManager 71
  • 解读事务的ACID!

    事务的ACID特性大学数据库课程基本都学过 xff0c 但是学完也就大概知道是干嘛的 xff0c 后来也没仔细想这个东西了 xff0c 后来接触了NoSQL系统的一致性 xff0c 于是重新学习 ACID xff0c 发现还有很多误区 今天
  • 欢迎加入 Apache IoTDB !

    官方网站 xff1a http iotdb apache org zh IoTDB 是清华自研时间序列数据库 xff0c 2014年项目启动 xff0c 2018年11月18号 IoTDB 正式进入 Apache 孵化器 xff0c 成为中
  • Xavier(2):Xavier NX刷机步骤及报错解决

    1 下载和安装NVIDIA SDK Manager 官方网站 xff1a https developer nvidia com embedded jetpac 选择sdk manager xff0c sdk manager版本没有要求 安装
  • 模型评估与优化1--基本概念与最优化问题

    模型评估与优化1 基本概念与最优化问题 首先先看一下基本术语和概念 1 数据集的划分 xff08 1 xff09 数据集 dataset xff1a 在机器学习任务中使用的一组数据 数据集中每一个数据称为一个样本 反映样本在某方面的表现或性