机器学习策略Ⅰ
机器学习策略Ⅰ
-
在构建一个好的监督学习系统时,通常需要确保以下四个方面:
- 系统需要在训练集上能够很好地拟合数据,达到某种可接受的性能水平(如接近人类水平)。如果训练集表现不好,可以使用更大的模型(深度神经网络)、改进优化算法(Adam)、增加训练时间或数据量。
- 系统还需要在验证集上表现良好,避免过拟合。如果验证集表现不好,可以添加正则化(L2正则化、Dopout)、增加训练数据量、数据增强或改进特征工程。
- 系统在测试集上的表现应该接近验证集,避免在测试数据上过拟合或欠拟合。如果测试集表现不好,可以使用更大的验证集,确保验证数据分布与测试数据一致,以及检查数据是否存在数据泄露或分布差异。
- 系统在实际应用中的表现要好。系统在测试集上的表现不错,但在实际应用中效果不佳时,可能是成本函数或开发集分布有问题。如果实际应用表现不好,可以修改成本函数,使其更贴合实际需求,或者重新设计验证集,使其更接近真实分布。
-
正交化是指设计系统时,使每个调整项只影响一个性质,互相之间尽量不干扰。比如电视的设计中,一个旋钮只能调整图像高度,一个旋钮只能调整图像宽度,一个旋钮只能调整图像旋转角度等。如果一个旋钮同时影响多个性质(如高度、宽度、梯形角度等),调节起来会非常困难。
在机器学习系统中,要尽量避免一个“旋钮”同时影响多个性质。Early Stopping(早停法)是一种常用技术,但它同时影响训练集拟合和验证集表现,因此不够正交化。为了更清晰地分析问题,可以使用其他更正交化的手段(如正则化、优化算法等)。
-
在构建机器学习项目时,无论是调整超参数,还是尝试不同的学习算法,都需要设置一个单一数字评估指标,可以帮助快速判断新尝试的手段是否比之前的更好,从而加速迭代和优化的过程。
对于分类问题,**准确率(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 分数外,还可以采用平均错误率等作为单一数字评估指标。
-
在训练模型时通常需要同时考虑多个评估指标,主要可以分为两类:优化指标和满足指标。
优化指标是希望尽可能优化和提升的指标,它是我们主要关注的目标,需要不断迭代改善,如准确率和召回率。
满足指标是我们希望达到某个最低要求的指标。一旦满足了这个要求,我们不再关心它是否进一步优化。例如只要运行时间小于某个阈值(如 100 毫秒),我们就认为它达标,之后的优化(如从 80 毫秒减少到 50 毫秒)并不重要。
如果需要考虑 n n n 个指标,可以先选择一个优化指标,尽可能去优化。然后设定 n − 1 n-1 n−1 个满足指标,为这些指标设定最低要求。
-
必须保证训练集、验证集、测试集来自同一分布。在数据较少的时候,传统经验法则是采用训练集和测试集70%、30%的比例,或者训练集、验证集、测试集60%、20%、20%的比例。这种划分在早期的数据集规模较小时非常合理,然而在现代大规模数据集中,如数百万样本,更合理的训练集、验证集、测试集比例就变成了98%、1%、1%。
测试集的主要目的是在模型训练完成后,用于评估系统的最终性能。测试集需要足够大,以高置信度评估系统的整体性能。通常,一万样本就足够了,具体数量取决于数据总量和应用场景。
在某些情况下,可以只划分训练集和验证集,而不设立单独的测试集。例如验证集非常大,过拟合的风险较低。但是在实践中,缺少单独测试集可能会导致模型性能评估存在偏差,因为验证集可能会被多次使用,导致模型在验证集上的表现被过度优化。因此,通常建议保留一个独立的测试集,作为最终性能评估的基准。
-
当现有的评估指标无法正确衡量算法的优劣时,需要修改指标。
第一种是开发集/测试集分布与实际应用场景不匹配,比如开发集使用高质量图片,但实际应用中处理的是低质量、模糊的图片,此时需要调整开发集和测试集的分布,使其更贴近实际应用。
第二种是指标与实际需求不符合,比如猫分类器中,简单的分类错误率无法反映用户对色情图片的敏感性,因此需要改进加权分类错误率。
原始分类错误率可以表示为:
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=1∑mdevI{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=1∑mdevw(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,赋予了色情图片更大的权重,让算法将色情图分类为猫图时,错误率会急剧变大。
如果评估指标无法正确评估算法的效果,那么就需要定义一个新的评估指标。加权法只是定义评估指标的一种可能方式。即使无法一开始就定义完美的评估指标和数据集,也应快速设立初步的指标和数据集,推动迭代速度。如果在后续过程中发现评估指标和数据集不够理想,可以随时进行调整。
-
贝叶斯最优错误率是从输入 x x x 到输出 y y y 之间映射的理论最优函数。由于数据中存在噪声或模糊性,某些任务的贝叶斯最优准确率可能不是100%。对于许多任务(如图像识别、语音识别),人类的表现已经非常接近贝叶斯最优错误率,因此改进空间有限。
机器学习算法在许多应用领域的性能已经接近甚至超越人类水平。通过与人类表现比较,可以帮助优化机器学习系统的设计和效率。当算法性能低于人类时,可以使用以下策略提升性能:- 标注更多数据:让人类标记数据,增加训练样本。
- 错误分析:让人类分析算法的错误,找出改进方向。
- 偏差/方差分析:人类表现作为基准,帮助判断应优先减少偏差还是方差。
当算法的性能低于人类水平时,通过利用这些工具,改进速度通常较快。当算法超越人类水平后,性能提升的速度会显著减慢。性能最终会接近理论上的最优错误率(贝叶斯最优错误率),但无法超越。
-
在许多任务(如计算机视觉)中,人类的表现接近贝叶斯错误率,因此可以用人类水平错误率作为贝叶斯错误率的近似值。
可避免偏差衡量的是模型训练错误率与贝叶斯错误率的差距,表示模型在训练集上的改进空间。方差衡量的是训练错误率与验证错误率之间的差距,表示模型的泛化能力还有多少提升空间。
如果人类水平错误率是1%,训练错误率是8%,验证错误率是10%。那么可避免偏差是7%,方差为2%,显然要专注于减少偏差。
如果人类水平错误率是7.5%,训练错误率是8%,验证错误率是10%。那么可避免偏差是0.5%,方差为2%,显然要专注于减少方差。
-
在医学影像识别上,人类水平错误率可以是普通人类的表现(3%),也可以是普通医生的表现(1%),也可以是经验丰富医生的表现(0.7%),甚至可以是经验丰富的医生团队的表现(0.5%)。
如果目标是估计贝叶斯错误率,那么需要选择最优医生团队的表现。
如果目标是评估系统是否具有实用价值,选择普通医生的表现即可。
当偏差远离人类水平时,偏差和方差问题较为明显,容易判断优化方向。
当偏差接近人类水平时,偏差和方差问题变得难以区分,需要更准确地估计贝叶斯错误率以指导优化方向。
-
当机器学习接近或超越人类水平时,难以准确估计贝叶斯错误率,进而难以判断是否应该专注于减少偏差还是减少方差,不确定性大大增加。依赖人类直觉和现有分析工具来指导优化方向也会变得更加困难。
在结构化数据的领域,如广告推荐、物流预测等,模型可以访问比人类更多的数据,更敏锐地识别统计规律。人类在这些领域的表现有限,因此机器更容易超越人类。
而在自然感知任务中,如语音识别、计算机视觉、医疗诊断等,人类在这些任务中表现极佳,计算机超越人类更具挑战性。
相关文章:
机器学习策略Ⅰ
机器学习策略Ⅰ 在构建一个好的监督学习系统时,通常需要确保以下四个方面: 系统需要在训练集上能够很好地拟合数据,达到某种可接受的性能水平(如接近人类水平)。如果训练集表现不好,可以使用更大的模型&…...
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文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么ÿ…...
摄影相关常用名词
本文介绍与摄影相关的常用名词。 曝光 Exposure 感光元件接收光线的过程,决定图像的明暗程度和细节表现。 光圈 Aperture 控制镜头进光量的孔径大小,用 F 值(f-stop) 表示。 光圈越大(F 值越小),…...
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作…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
