当前位置: 首页 > news >正文

机器学习策略Ⅰ

机器学习策略Ⅰ

  1. 在构建一个好的监督学习系统时,通常需要确保以下四个方面:

    • 系统需要在训练集上能够很好地拟合数据,达到某种可接受的性能水平(如接近人类水平)。如果训练集表现不好,可以使用更大的模型(深度神经网络)、改进优化算法(Adam)、增加训练时间或数据量。
    • 系统还需要在验证集上表现良好,避免过拟合。如果验证集表现不好,可以添加正则化(L2正则化、Dopout)、增加训练数据量、数据增强或改进特征工程。
    • 系统在测试集上的表现应该接近验证集,避免在测试数据上过拟合或欠拟合。如果测试集表现不好,可以使用更大的验证集,确保验证数据分布与测试数据一致,以及检查数据是否存在数据泄露或分布差异。
    • 系统在实际应用中的表现要好。系统在测试集上的表现不错,但在实际应用中效果不佳时,可能是成本函数或开发集分布有问题。如果实际应用表现不好,可以修改成本函数,使其更贴合实际需求,或者重新设计验证集,使其更接近真实分布。
  2. 正交化是指设计系统时,使每个调整项只影响一个性质,互相之间尽量不干扰。比如电视的设计中,一个旋钮只能调整图像高度,一个旋钮只能调整图像宽度,一个旋钮只能调整图像旋转角度等。如果一个旋钮同时影响多个性质(如高度、宽度、梯形角度等),调节起来会非常困难。

    在机器学习系统中,要尽量避免一个“旋钮”同时影响多个性质。Early Stopping(早停法)是一种常用技术,但它同时影响训练集拟合和验证集表现,因此不够正交化。为了更清晰地分析问题,可以使用其他更正交化的手段(如正则化、优化算法等)。

  3. 在构建机器学习项目时,无论是调整超参数,还是尝试不同的学习算法,都需要设置一个单一数字评估指标,可以帮助快速判断新尝试的手段是否比之前的更好,从而加速迭代和优化的过程。

    对于分类问题,**准确率(Precision)**指在分类器预测为真的数据中有多少标签实际为真,**召回率(Recall)**指在所有标签为真的数据中有多少被预测为真。虽然查准率和查全率是非常重要的指标,但它们往往需要在两者之间进行权衡。例如,一个分类器可能在查准率上表现更好,而另一个在查全率上表现更好。在这种情况下,单独依赖这两个指标难以快速判断哪个分类器更优。因此需要找到一个能结合准确率和召回率的新的数字评估指标,即 F 1 F_1 F1 分数,代表两个指标的调和平均数。

    F 1 = Pecision × Recall Pecision + Recall F_1=\frac{\text{Pecision} \times \text{Recall}}{\text{Pecision}+\text{Recall}} F1=Pecision+RecallPecision×Recall

    除了 F 1 F_1 F1 分数外,还可以采用平均错误率等作为单一数字评估指标。

  4. 在训练模型时通常需要同时考虑多个评估指标,主要可以分为两类:优化指标满足指标

    优化指标是希望尽可能优化和提升的指标,它是我们主要关注的目标,需要不断迭代改善,如准确率和召回率。

    满足指标是我们希望达到某个最低要求的指标。一旦满足了这个要求,我们不再关心它是否进一步优化。例如只要运行时间小于某个阈值(如 100 毫秒),我们就认为它达标,之后的优化(如从 80 毫秒减少到 50 毫秒)并不重要。

    如果需要考虑 n n n 个指标,可以先选择一个优化指标,尽可能去优化。然后设定 n − 1 n-1 n1 个满足指标,为这些指标设定最低要求。

  5. 必须保证训练集、验证集、测试集来自同一分布。在数据较少的时候,传统经验法则是采用训练集和测试集70%、30%的比例,或者训练集、验证集、测试集60%、20%、20%的比例。这种划分在早期的数据集规模较小时非常合理,然而在现代大规模数据集中,如数百万样本,更合理的训练集、验证集、测试集比例就变成了98%、1%、1%。

    测试集的主要目的是在模型训练完成后,用于评估系统的最终性能。测试集需要足够大,以高置信度评估系统的整体性能。通常,一万样本就足够了,具体数量取决于数据总量和应用场景。

    在某些情况下,可以只划分训练集和验证集,而不设立单独的测试集。例如验证集非常大,过拟合的风险较低。但是在实践中,缺少单独测试集可能会导致模型性能评估存在偏差,因为验证集可能会被多次使用,导致模型在验证集上的表现被过度优化。因此,通常建议保留一个独立的测试集,作为最终性能评估的基准。

  6. 当现有的评估指标无法正确衡量算法的优劣时,需要修改指标。

    第一种是开发集/测试集分布与实际应用场景不匹配,比如开发集使用高质量图片,但实际应用中处理的是低质量、模糊的图片,此时需要调整开发集和测试集的分布,使其更贴近实际应用。

    第二种是指标与实际需求不符合,比如猫分类器中,简单的分类错误率无法反映用户对色情图片的敏感性,因此需要改进加权分类错误率。

    原始分类错误率可以表示为:

    E r r o r = 1 m d e v ∑ i = 1 m d e v I { y p r e d ( i ) ≠ y ( i ) } Error = \frac{1}{m_{{dev}}}\sum_{i = 1}^{m_{{dev}}}{I\{ y_{{pred}}^{(i)} \neq y^{(i)}\}} Error=mdev1i=1mdevI{ypred(i)=y(i)}

    其中, m d e v m_{dev} mdev 表示验证集样本数, y p r e d ( i ) y_{pred}^{(i)} ypred(i) 表示预测值0/1, I I I 表示统计满足表达式为真的样本数量。但是这个评估指标问题在于,对色情图片和非色情图片一视同仁了。

    加权分类错误率可以改善这个问题:

    E r r o r = 1 m d e v ∑ i = 1 m d e v w ( i ) I { y p r e d ( i ) ≠ y ( i ) } Error = \frac{1}{m_{{dev}}}\sum_{i = 1}^{m_{{dev}}}{w^{(i)}I\{ y_{{pred}}^{(i)} \neq y^{(i)}\}} Error=mdev1i=1mdevw(i)I{ypred(i)=y(i)}

    如果图片 x ( i ) x^{(i)} x(i) 不是色情图片,则 w ( i ) = 1 w^{\left( i \right)} = 1 w(i)=1 。如果 x ( i ) x^{(i)} x(i) 是色情图片, w ( i ) w^{(i)} w(i) 可能就是10甚至100,赋予了色情图片更大的权重,让算法将色情图分类为猫图时,错误率会急剧变大。

    如果评估指标无法正确评估算法的效果,那么就需要定义一个新的评估指标。加权法只是定义评估指标的一种可能方式。即使无法一开始就定义完美的评估指标和数据集,也应快速设立初步的指标和数据集,推动迭代速度。如果在后续过程中发现评估指标和数据集不够理想,可以随时进行调整。

  7. 贝叶斯最优错误率是从输入 x x x 到输出 y y y 之间映射的理论最优函数。由于数据中存在噪声或模糊性,某些任务的贝叶斯最优准确率可能不是100%。对于许多任务(如图像识别、语音识别),人类的表现已经非常接近贝叶斯最优错误率,因此改进空间有限。
    机器学习算法在许多应用领域的性能已经接近甚至超越人类水平。通过与人类表现比较,可以帮助优化机器学习系统的设计和效率。当算法性能低于人类时,可以使用以下策略提升性能:

    • 标注更多数据:让人类标记数据,增加训练样本。
    • 错误分析:让人类分析算法的错误,找出改进方向。
    • 偏差/方差分析:人类表现作为基准,帮助判断应优先减少偏差还是方差。

    当算法的性能低于人类水平时,通过利用这些工具,改进速度通常较快。当算法超越人类水平后,性能提升的速度会显著减慢。性能最终会接近理论上的最优错误率(贝叶斯最优错误率),但无法超越。

  8. 在许多任务(如计算机视觉)中,人类的表现接近贝叶斯错误率,因此可以用人类水平错误率作为贝叶斯错误率的近似值。

    可避免偏差衡量的是模型训练错误率与贝叶斯错误率的差距,表示模型在训练集上的改进空间。方差衡量的是训练错误率与验证错误率之间的差距,表示模型的泛化能力还有多少提升空间。

    如果人类水平错误率是1%,训练错误率是8%,验证错误率是10%。那么可避免偏差是7%,方差为2%,显然要专注于减少偏差。

    如果人类水平错误率是7.5%,训练错误率是8%,验证错误率是10%。那么可避免偏差是0.5%,方差为2%,显然要专注于减少方差。

  9. 在医学影像识别上,人类水平错误率可以是普通人类的表现(3%),也可以是普通医生的表现(1%),也可以是经验丰富医生的表现(0.7%),甚至可以是经验丰富的医生团队的表现(0.5%)。

    如果目标是估计贝叶斯错误率,那么需要选择最优医生团队的表现。

    如果目标是评估系统是否具有实用价值,选择普通医生的表现即可。

    当偏差远离人类水平时,偏差和方差问题较为明显,容易判断优化方向。

    当偏差接近人类水平时,偏差和方差问题变得难以区分,需要更准确地估计贝叶斯错误率以指导优化方向。

  10. 当机器学习接近或超越人类水平时,难以准确估计贝叶斯错误率,进而难以判断是否应该专注于减少偏差还是减少方差,不确定性大大增加。依赖人类直觉和现有分析工具来指导优化方向也会变得更加困难。

    在结构化数据的领域,如广告推荐、物流预测等,模型可以访问比人类更多的数据,更敏锐地识别统计规律。人类在这些领域的表现有限,因此机器更容易超越人类。

    而在自然感知任务中,如语音识别、计算机视觉、医疗诊断等,人类在这些任务中表现极佳,计算机超越人类更具挑战性。

相关文章:

机器学习策略Ⅰ

机器学习策略Ⅰ 在构建一个好的监督学习系统时,通常需要确保以下四个方面: 系统需要在训练集上能够很好地拟合数据,达到某种可接受的性能水平(如接近人类水平)。如果训练集表现不好,可以使用更大的模型&…...

redis中的bigkey及读取优化

一、bigKey介绍 1、简介 在 Redis 中,Big Key(大键)指的是占用大量内存的单个键。通常,Redis 是一个高性能的内存数据库,但是当某些键变得非常大时,会带来性能上的影响。例如,大量的内存消耗、长时间的操作延迟,甚至可能导致 Redis 停止响应或崩溃。 通俗的来说,指…...

【西瓜书】支持向量机(SVM)

支持向量机(Support Vector Machine,简称SVM)。 超平面 分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。 但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪…...

三维渲染中顺序无关的半透明混合(OIT)(二——Stencil Route)

1、A-Buffer算法。 在谈到Stencil Route之前,需要先讨论A-Buffer算法。A-Buffer是一种图形学(渲染方向)上的用于可见面分析(Visble Surface Detection)的技术,是Z-Buffer的衍生方法。 Z-Buffer是用于剔除 不透明 物体的算法。假…...

(SAST检测规则-3)固定的 SessionID 缺陷详解

漏洞类型: 会话固定攻击(Session Fixation Attack) 漏洞描述: 会话固定攻击是利用服务器的会话管理机制存在漏洞,攻击者通过提前控制或预测用户的会话标识符(Session ID),当用户登录…...

【安卓开发】【Android Studio】项目构建(Build)时报错:Integer Overflow

一、问题描述 在安卓项目中,构建(Build)失败并报错:xxxxx Integer Overflow(整型溢出)。 二、相关代码 刚开始以为是某个整数(例如控件、java类)不匹配造成的,检查如下…...

STM32主要功能

STM32 是由意法半导体(STMicroelectronics)推出的一系列基于 ARM Cortex-M 内核的微控制器(MCU)。STM32 微控制器广泛应用于嵌入式系统中,因其高性能、低功耗、丰富的外设接口和多种封装形式而被广泛采用。其主要功能和…...

MacOS 如何连接 Linux NFS 服务器

以 Ubuntu 为例。 Ubuntu 服务器端设置 1. 进入 root 权限,安装 NFS 服务: apt-get update apt-get install nfs-kernel-server2. 创建共享目录: mkdir /data chown nobody:nogroup /data chmod 777 /data3. 配置 /etc/exports 文件: vi …...

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-39

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…...

摄影相关常用名词

本文介绍与摄影相关的常用名词。 曝光 Exposure 感光元件接收光线的过程,决定图像的明暗程度和细节表现。 光圈 Aperture 控制镜头进光量的孔径大小,用 F 值(f-stop) 表示。 光圈越大(F 值越小)&#xff0c…...

02.06、回文链表

02.06、[简单] 回文链表 1、题目描述 编写一个函数,检查输入的链表是否是回文的。 2、解题思路: 快慢指针找中点: 利用快慢指针的技巧来找到链表的中间节点。慢指针 slow 每次移动一步,而快指针 fast 每次移动两步。这样&…...

Shell脚本小练习

学习了这么长时间Shell脚本,总得来一次小小的练习吧,那么请看下文! 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式,表达式的格式设定为操作数1 运算符 操作数2,例如53,然后利用设计的脚本…...

四轮转向轮式里程计设计(python)

目录 写在前面的话参考教程官方教程参考代码(c) 关键代码解析订阅车轮速度订阅车轮转向订阅四轮转向控制模式积累速度和转向角发布里程计 完整代码完整视频演示 写在前面的话 上一篇博客:键盘控制车子四轮转向 这篇文章通过订阅车轮的速度和…...

多方法做配对样本t检验(三)

Wilcoxon符号秩检验 Wilcoxon符号秩检验(Wilcoxon Signed-Rank Test) 是一种非参数统计方法,用于检验两组相关样本(配对样本)之间的差异是否显著。它通常用来代替配对样本t检验,特别是在数据不符合正态分布…...

Vue 将推出「无虚拟DOM」版本,又是新的前端框架趋势?

文章目录 背景无虚拟DOM版的Vue3Vue Vapor 在线演练题外话:渲染流程 背景 随着 React 和 Vue 这些前端框架的爆火,他们的渲染方式,虚拟DOM,也跟着火了起来,大家都认为这是一种高性能批量更新DOM的方式但是近一两年有不…...

阿里云ECS服务器磁盘空间不足的几个文件

查看磁盘空间命令: df -h /mnt 清零 echo >nohup.out 磁盘空间不足的文件列表: 一、nohup.out:来自"nohup java -jar service.jar &"命令产生的文件,位置在服务jar所在目录 二、access.log:位于…...

从0开始linux(38)——线程(1)线程概念

欢迎来到博主专栏:从0开始linux 博主ID:代码小豪 文章目录 进程与线程线程概念线程的优点线程的独立数据 进程与线程 如果要理解线程,那么进程将会时绕不开的点。首先我们回顾一下我们之前在进程章节当中是如何描述进程的? 进程&…...

Ubuntu源码安装gitlab13.7集群多前端《二》

Ubuntu源码安装gitlab13.7《一》 gitaly需要调整的服务 redis socket->ipbind ....* # 0.0.0.0pg vim /etc/postgresql/14/main/pg_hba.confhost all all ..../32 md5gitaly vim /home/git/gitaly/config.tomlbin_dir "/home/gi…...

身份证OCR 识别 API 接口的发展前景

随着信息时代的到来,大量的身份证数据需要进行整理、存储和管理,OCR 识别技术可以将身份证信息转化为结构化的电子文本,方便后续的数据管理和分析,提高工作效率。 未来,随着人工智能和深度学习等技术的不断发展&#…...

Spring boot之BeanDefinition介绍

在spring框架中IOC容器进行bean的创建和管理。Bean的创建是一个比较复杂的过程,它并不像我们创建对象一样只是直接new一下就行,虽然有些bean确实就是New一下。但在Spring中可以通过一些途径对bean进行增强扩展。在这个过程中,BeanDefinition作…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...