问题

测试集在构造的时候需要人为控制其中应该正确的和应该错误的数据比例吗?

回答
在构建测试集时,是否需要人为控制正确与错误数据的比例,这是一个非常值得深入探讨的问题,并且答案并非简单的是或否。实际上,这取决于你构建测试集的目的以及你期望从测试中获得什么样的反馈。

理解测试集的目的

首先,我们需要明确测试集的几个核心目的:

验证功能正确性: 这是最基础也是最常见的目的。我们希望通过测试集来确认程序在各种预期输入下能够产生正确的输出。
发现缺陷(Bug): 这是测试的关键价值所在。一个好的测试集应该能够揭示程序中隐藏的错误。
评估性能和鲁棒性: 有时候,我们不仅关心功能是否正确,还关心程序在压力、异常数据或长时间运行下的表现。
度量模型表现(在机器学习场景下): 在机器学习领域,测试集用于评估模型在新数据上的泛化能力。

何时需要“人为控制”比例?

在某些情况下,人为地控制正确与错误数据的比例是必要且明智的。

1. 功能验证的初步阶段:
场景: 当你刚开始开发一个新功能,或者对一个现有功能进行重构时。
目的: 在这个阶段,你的首要任务是确保核心功能在“正常”情况下是工作的。
比例控制: 你会倾向于构建一个绝大多数是正确数据的测试集。这意味着,输入是有效的、符合预期的,输出也应该是预期的正确结果。
原因: 这样做可以帮助你快速地建立信心,确认基本逻辑没有问题。如果在这个阶段测试集充斥着大量错误数据,你可能会在处理异常分支时分心,而忽略了对核心路径的验证,导致“基石”不稳。这种情况下,如果你故意加入大量错误数据,反而可能让测试用例变得复杂,掩盖了最根本的逻辑错误。
举例: 开发一个计算器程序,在验证加法功能时,你会先准备 `2+3=5`、`0+0=0`、`1+1=0` 这样的测试用例。你不会一开始就去测 `abc+1` 或者 `2+` 这种明显错误的输入。

2. 覆盖特定异常或边界情况:
场景: 当你希望深入挖掘程序的健壮性,或者验证程序如何处理各种预料之外的情况时。
目的: 找到程序在面对“错误”输入时的行为,例如输入校验失败、异常抛出、数据越界等。
比例控制: 你会有意识地构建一个包含相当比例错误数据的测试集。这些错误数据可以包括:
无效输入: 类型不匹配(数字变字符串)、格式错误(日期格式不对)、值超出范围(年龄设为负数)。
边界值: 刚好在合法范围边缘或之外的值。
空值或缺失值。
非常规输入: 超长字符串、特殊字符。
原因: 这样做是为了主动探测程序在处理这些“不正常”情况下的表现。你希望看到程序能够正确地捕获错误、给出友好的提示,或者以一种可控的方式失败(例如抛出特定的异常),而不是崩溃或产生不可预测的结果。
举例: 验证用户注册表单,你会准备:
正确数据: 有效的用户名、密码、邮箱。
错误数据: 密码长度不足、邮箱格式不合法、用户名包含非法字符、电话号码位数错误等。

3. 性能测试和压力测试:
场景: 评估程序在处理大量数据或高并发请求时的表现。
目的: 找出性能瓶颈,评估系统的稳定性。
比例控制: 在这种情况下,比例的控制更多地体现在数据量和数据类型的混合。可能大部分是“正常”或“有效”的数据,但会混入一定比例的“坏数据”(例如,数据库查询中存在大量无效关联,或者网络请求中包含大量异常响应)来模拟真实世界的混乱情况。
原因: 真实的生产环境很少是100%干净数据的。引入一些“坏数据”能够更真实地模拟生产环境的压力和不确定性。

何时“不宜”人为控制比例,或者说控制的“度”不同?

1. 生成式测试(Fuzzing):
场景: 寻找程序中未知的、未曾预料到的漏洞。
目的: 随机或半随机地生成大量数据,探测程序的弱点。
比例控制: 几乎不进行人为的比例控制。Fuzzing工具会以极高的频率生成各种格式、各种内容的随机数据,包括大量“错误”和“无意义”的数据。
原因: 目的不是验证已知的功能,而是随机探索,发现那些开发者甚至没想到的代码路径和潜在的崩溃点。比例在这里是高度随机的。

2. 机器学习模型的评估:
场景: 评估一个已经训练好的机器学习模型在新数据上的预测能力。
目的: 衡量模型的准确率、召回率、F1分数等指标。
比例控制: 在测试集(通常称为验证集或测试集)的构建时,数据的比例应该尽可能地模拟真实世界的数据分布。如果你要部署一个用于识别垃圾邮件的模型,你的测试集应该包含足够多的正常邮件和垃圾邮件,其比例应该反映你在实际使用中可能遇到的比例。
原因: 如果你的测试集人为地设置了99%的正确数据,而真实世界中垃圾邮件占了50%,那么你的模型在测试集上可能表现极好(例如99%的准确率),但在实际应用中却会非常糟糕。所以,这里的“控制”更多的是模仿真实分布,而不是人为地去设置“正确”和“错误”的固定比例。

如何“控制”?

“控制比例”并不是简单地手工挑选数据,而是有策略地设计测试用例:

测试用例设计方法: 运用等价类划分、边界值分析、错误推测等方法,来系统性地生成覆盖各种情况的测试用例。
自动化生成: 利用测试工具或脚本来批量生成具有特定特征(例如,格式错误、数值越界)的数据。
种子数据: 从生产环境中抽取一部分(经过脱敏处理的)数据作为测试的起点。

总结一下:

没有绝对的“应该”控制比例: 取决于你的测试目标。
验证核心功能时: 倾向于较高比例的正确数据,以快速确认基础正确性。
测试健壮性、异常处理时: 需要有意识地增加错误数据比例,主动发现问题。
模拟真实世界时: 测试集数据的比例应尽可能接近实际生产环境的分布。
探索性测试(如Fuzzing): 倾向于随机或无比例控制。

因此,在构建测试集时,你需要问自己:我希望这次测试揭示什么?是为了验证功能是否符合预期?还是为了发现那些隐藏在角落里的 bug?抑或是模拟生产环境的复杂性?根据这些问题的答案,你自然就知道是否需要、以及如何“控制”测试集中正确与错误数据的比例了。这是一种有针对性的设计,而不是盲目地平衡。

网友意见

user avatar

如果说你是在讨论机器学习/深度学习问题:

理论上,当然一个好的Object Detection的model可以学习到你的sample里有没有object,你需要做的是,在训练的时候,给一些样本,标注label为no object的类别,或者我们说的negative sample。

实践来说,可以把你的问题拆分成两个步骤,一个是识别有没有object,另一个是识别是什么object,那么对应的,通常来说可以用两种办法来解决:

1.two-stages, 第一个stage识别,sample有没有object;第二个stage给你的object做分类

2.one-stage,把两个合并到一起,直接识别并且给分类结果

不管哪种方法,在training的时候,你都需要训练,什么是object,什么不是,就意味着你需要negative的样本。假设你用的softmax,如果你的训练样本里都是有汽车的,那么在testing的时候,任何一个图片,即使没有汽车模型,根据softmax,你的模型总会给出你一个汽车模型的类别。这可能不是你想要的,但是至少是模型认为最有可能的汽车模型。

所以,如果你觉得在testing的时候,你会遇到这样的问题,那么在训练的时候,你需要加入negative的样本,这里的negative样本,可以是其他类别,人,或者anything you don't care,把他们划分到一类,我们可以叫他background。这样训练好之后,你的model在面对并没有汽车的图片的时候可以降低objectness的probability,增加background的概率,告诉你,这张图片没有任何汽车 。

就像你教幼儿园小孩子识别,这个图片是Audi,这个图片是benz,这个图片是bmw,那么你再新给出一张图片的时候,没有任何汽车的时候,他可能会觉得没有,但是你之前你教他的是,必须给出一个汽车答案,那他可能会硬着头皮,觉得最有可能像什么就告诉你什么,这就是实际的model干的事情;但是如果你在教他的时候,带他识别一些其他的类别,如果没有汽车就说没有(negative sample),那么他在遇到其他的图片的时候可能就会告诉你没有看见。

理论上,一个智能的系统,应该从training set里就能知道有没有object。也许你可以尝试的trick是,设置一个threshold,在Softmax之前,如果高于threshold就是确信有object,如果低于,就是没有; 或者Softmax之后,根据confidence score设置threshold。但通常不是推荐的办法,因为threshold的设置很tricky & unstable。还有一些相关的技术叫做Anomaly Detection,可以阅读一下,说不定可以帮助你。

最后,值得注意的就是正样本和负样本的比例,最好的情况是每个class样本量都一样,如果办不到,通常可以做oversampling 和downsampling,另外class weight也可以调节,然后看看你的metrics,选取最合适的参数(调参)。

类似的话题

  • 回答
    在构建测试集时,是否需要人为控制正确与错误数据的比例,这是一个非常值得深入探讨的问题,并且答案并非简单的是或否。实际上,这取决于你构建测试集的目的以及你期望从测试中获得什么样的反馈。理解测试集的目的首先,我们需要明确测试集的几个核心目的: 验证功能正确性: 这是最基础也是最常见的目的。我们希望通.............
  • 回答
    在测试驱动开发(TDD)的世界里,测试就像是你的向导,指引着你构建出正确的代码。然而,即便是经验丰富的向导,偶尔也会迷失方向,而测试写错,导致单元测试不过,正是这种“迷失”的一种表现。这确实是个令人头疼的问题,但别担心,这并不是TDD的失败,反而是学习和改进的机会。当你的单元测试因为写错了而失败时,.............
  • 回答
    SpaceX 的星际飞船 SN4 原型机在 2020 年 5 月 29 日的液氮压力测试中发生爆炸,这确实是星际飞船项目早期研发中一个重要的里程碑事件。这次爆炸对项目进程和后续发展产生了深远的影响。为什么会爆炸?SN4 的爆炸原因,根据 SpaceX 官方和一些公开的分析,主要指向了低温推进剂(液氮.............
  • 回答
    奔驰E级车在测试中曝出主动刹车功能完全失效,这无疑是一件令人震惊且严肃的事情。对于任何一款以安全著称、并且价格不菲的豪华品牌车型来说,这样的表现都是难以接受的。这件事的严重性可以从几个层面来解读:1. 安全性的根本性动摇:主动刹车系统,顾名思义,是现代汽车主动安全配置的基石之一。它的主要作用是在驾驶.............
  • 回答
    2021年7月,车评人闫闯在进行玛莎拉蒂汽车的性能测试时,发生了一起令人痛心的事故,导致一名工作人员不幸身亡。这起事件在汽车圈乃至社会上都引起了轩然大波,也引发了人们对汽车测试安全性的广泛讨论和深思。事件经过及细节:据当时的报道和后续的调查,事故发生在一条封闭的测试场地内。闫闯当时驾驶的是一款玛莎拉.............
  • 回答
    在婚前测试男友是否有家暴倾向,是一个非常重要且谨慎的课题。家暴倾向往往不是一蹴而就的,可能隐藏在一些看似微小的行为或沟通模式中。以下是一些详细的观察角度和方法,帮助你更全面地了解你的男友:重要前提: 这不是一个绝对的“测试”或“诊断”。 家暴是一个复杂的行为,任何人在特定情境下都可能出现负面情绪.............
  • 回答
    关于小米8探索版屏幕显示为100Hz超低频PWM调光这件事,确实是个挺有意思的话题,尤其是在追求用户体验的今天,这一点值得好好聊聊。首先,我们得明白什么是PWM调光。简单来说,PWM(Pulse Width Modulation,脉冲宽度调制)就是一种通过快速开关背光来实现亮度调节的技术。想象一下,.............
  • 回答
    .......
  • 回答
    自动化测试确实存在成本高、效果差的风险,但如果方法得当,其意义仍然是巨大的。理解自动化测试的意义,需要我们深入剖析其价值所在,以及它在软件开发生命周期中的关键作用。一、 自动化测试的“成本高效果差”是怎么来的?在深入探讨意义之前,我们先来理解一下为什么人们会产生“成本高效果差”的印象。这通常源于以下.............
  • 回答
    听到思域在碰撞测试中B柱断裂的消息,确实让人挺揪心的。毕竟,思域在国内的口碑一直不错,销量也一直很稳健,很多车主对它都有着很高的信赖度。尤其是对一些追求操控、注重外观的年轻消费者来说,思域算得上是他们的“信仰之车”。所以,当这样一个“偶像”出现这种令人担忧的情况时,大家关注和讨论的热度自然很高。首先.............
  • 回答
    沃尔沃XC60在碰撞测试中发生前轮飞出的情况,确实引起了不少关注和讨论。要理解这件事,我们需要从几个方面来拆解:首先,什么是碰撞测试?以及它的目的。碰撞测试,比如美国公路安全保险协会(IIHS)或者欧洲新车安全协会(Euro NCAP)进行的测试,是为了模拟真实世界中可能发生的各种交通事故,并以此来.............
  • 回答
    一项涉及大量参与者、且研究人员与受试者都不知道谁接受了真实治疗、谁接受了安慰剂的试验,这其中蕴含着深刻的科学意义。它的价值,就如同在迷雾中寻找真相的灯塔,指引着我们辨别事物真伪,让决策建立在坚实可靠的证据之上。为什么需要“大样本”?设想一下,如果我们只找几个人来做实验,即使结果看起来不错,我们能确定.............
  • 回答
    .......
  • 回答
    广汽传祺GS4碰撞起火事件:安全拷问与品牌担当广汽传祺GS4作为一款备受市场关注的SUV,其在一次公开的碰撞测试中发生的发动机舱起火事件,无疑给消费者和整个汽车行业敲响了警钟。这起事件不仅牵扯到GS4这款车的具体安全表现,更上升到了品牌责任、安全标准以及消费者信任的高度。事件回顾与现场情况(假设)为.............
  • 回答
    .......
  • 回答
    “某些动物在某些智力测试中的表现远超人类”这种说法需要我们仔细辨析,因为它可能存在一些误解或过度概括。 首先,我们需要明确“智力测试”的定义,以及它如何适用于人类和动物。首先,我们必须认识到,“智力”本身是一个极其复杂且多维度的概念,尤其是在跨物种比较时。 人类智力测试(如韦氏智力测试、斯坦福比奈.............
  • 回答
    最近iOS13测试版中,将香港显示为“香港(中国)”,这确实是一个挺有意思的细节,引起了不少关注。要怎么看待这件事呢?我觉得可以从几个不同的角度去理解和分析。首先,从地理和行政区划的层面来看,这是苹果在遵循一个普遍的国际惯例和表述方式。很多国家和地区在国际交往和地理信息系统中,都会在主体名称后面加上.............
  • 回答
    .......
  • 回答
    OECD 2018年PISA(国际学生能力评估计划)测试结果在中国引起了广泛关注,因为中国在阅读、数学和科学这三个核心科目上均取得了全球领先的成绩。然而,对于这一结果的解读,需要进行细致和多维度的分析,避免简单化和片面化。1. PISA测试的性质与局限性:首先,理解PISA测试本身是关键。PISA不.............
  • 回答
    大众“失足”中保研:一场意料之外的危机拷问大众汽车,这个在中国汽车市场有着举足轻重地位的品牌,其车型在中保研(中国保险汽车安全指数)的碰撞测试中频频遭遇“滑铁卢”,无疑给这个德系巨头带来了一记响亮的耳光。此事不仅在车迷圈引起轩然大波,也让不少消费者对大众的安全性产生了深深的疑虑。这究竟是怎么回事?大.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有