news 2026/9/26 9:23:25

正负样本定义与采样实战:从翻车案例到工业级避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正负样本定义与采样实战:从翻车案例到工业级避坑指南

1. 从一个翻车现场说起:为什么正负样本值得单独拎出来讲

前阵子帮一个朋友看他的推荐系统项目,模型离线指标 AUC 跑到 0.92,团队欢天喜地准备上线,结果灰度第一天 CTR 直接掉了三成。排查了两天,问题不在模型结构,也不在特征工程,而是出在最不起眼的地方——负样本的采样方式。他们为了省事,把用户没点击的全部当成负样本,结果把"用户根本没曝光过的物品"也塞进了负样本池,模型学到的不是"用户不喜欢",而是"用户没见过",上线后自然一塌糊涂。

这个坑我见过太多次了。正样本(Positive Sample)和负样本(Negative Sample)这两个词,听起来像是机器学习入门第一课就该懂的东西,但真正在工业级项目里把它们定义清楚、采样合理、标注准确,难度远超大多数人的想象。不管你做的是搜索排序、推荐系统、风控反欺诈、图像分类,还是最近火得一塌糊涂的大模型偏好对齐,正负样本的定义方式直接决定了模型的上限。

这篇文章不打算给你背教科书定义,而是从一线实操的角度,把正负样本这件事掰开揉碎讲清楚:它们到底是什么、在不同场景下怎么定义、采样时有哪些坑、标注环节怎么保证质量、以及当样本出问题时怎么快速定位。适合已经上手做过模型、但对样本处理还停留在"调个库函数"阶段的同学,也适合想系统梳理一遍样本方法论的老手。

2. 正负样本到底是什么:别被教科书定义骗了

2.1 一句话讲清楚:它们不是"好"和"坏",而是"符合目标"和"不符合目标"

很多人第一次接触这两个词,会下意识理解成正样本就是"好的数据",负样本就是"坏的数据"。这个理解在情感分类里勉强说得通,但放到其他场景立刻就崩了。

举个反例:在信用卡反欺诈模型里,欺诈交易才是正样本,正常交易是负样本。你看,正样本反而是"坏"的那一类。再比如医疗影像筛查,有病灶的片子是正样本,健康的片子是负样本。所以正负的本质不是好坏,而是你希望模型去识别的那个目标类别,就是正样本;其余的就是负样本。

用一句更工程化的话说:正样本是"我们关心的、希望模型给出高置信度的事件",负样本是"我们希望模型压低置信度的事件"。这个定义在所有领域都成立,也是你后面做任何采样、标注、评估时判断对错的唯一标尺。

2.2 二分类、多分类、排序任务里的正负样本形态完全不同

在二分类任务里,正负样本是泾渭分明的两个集合,标签就是 0 和 1。但到了多分类,比如图像识别里识别猫、狗、鸟,正负样本的概念就变成了"相对于某个类别而言"——对"猫"这个类别来说,猫的图片是正样本,狗和鸟的图片都是负样本。这就是为什么多分类常用 one-vs-rest 的思路来理解。

到了排序和推荐场景,正负样本的形态又变了。这里没有绝对的"类别",只有"用户行为":点击、购买、收藏、停留超过 N 秒,这些通常算正样本;曝光未点击、划走、快速返回,这些算负样本。但注意,曝光未点击和从未曝光是两回事,前者是明确的负反馈,后者是未知,把它当负样本就是前面那个朋友踩的坑。

我整理了一张表,把常见场景下的正负样本定义列出来,你可以对照自己的项目看看有没有定义错:

场景正样本定义负样本定义常见误区
推荐系统点击/购买/收藏曝光未点击把未曝光当负样本
搜索排序点击且停留达标曝光未点击把误点当正样本
风控反欺诈欺诈交易正常交易正负比例极度失衡
图像分类目标类别图像其他类别图像忽略难负样本
大模型偏好对齐被选中的回答被拒绝的回答忽略平局样本
广告CTR点击曝光未点击忽略展示位置偏差

这张表建议你收藏,每次开新项目定义样本时拿出来对一遍,能省掉大量返工。

2.3 为什么这个定义如此重要:它决定了模型的学习目标

模型本质上是在拟合一个函数,输入特征,输出概率。正负样本的定义,就是在告诉模型"你要把哪些东西的概率往 1 推,哪些往 0 压"。定义一旦偏了,模型学到的就是错误的目标。

我见过一个特别典型的案例:某内容平台做"优质内容识别",把编辑人工推荐过的内容当正样本,其余当负样本。结果模型学出来的是"编辑的偏好",而不是"内容的优质程度",因为编辑推荐带有强烈的时效性和个人口味。上线后模型只会推编辑喜欢的那类内容,多样性极差。后来他们改成用"完播率+互动率+负反馈率"综合定义正样本,效果才正常。

所以定义正负样本,本质上是在回答一个业务问题:你到底想让模型帮你优化什么指标。这个问题想不清楚,后面所有工作都是白费。

3. 采样策略:正负样本比例失衡才是常态

3.1 为什么真实场景里负样本总是多到离谱

在绝大多数业务场景里,正样本都是稀缺的。广告点击率通常在百分之几甚至千分之几,欺诈交易占比可能只有万分之几,推荐场景里用户真正感兴趣的内容也是少数。这就导致原始数据里正负比例可能是 1:100、1:1000 甚至更极端。

直接把这种数据丢给模型会出问题。模型会学到一个"偷懒"的策略:把所有样本都预测成负样本,准确率依然能到 99% 以上,但这样的模型毫无价值。这就是所谓的类别不平衡问题。

解决思路主要有两条:一是从数据层面做采样,让正负比例更均衡;二是从算法层面做调整,比如给不同类别加权、用 focal loss 等。这里重点讲采样,因为它是实操中最常用、也最容易出错的环节。

3.2 负采样、正采样、分层采样怎么选

负采样(Negative Sampling)是最常用的手段,核心思路是从海量负样本中抽取一部分参与训练。但怎么抽很有讲究:

  • 随机负采样:最简单,从负样本池里随机抽。适合负样本同质性高的场景,比如纯随机曝光。
  • 难负样本挖掘(Hard Negative Mining):专门挑那些模型容易判错的负样本,比如曝光了但用户犹豫很久才划走的。这类样本信息量大,能显著提升模型判别力,但用多了容易过拟合,需要控制比例。
  • 按热度采样:在推荐里,热门物品的曝光多,负样本也多,按热度采样能缓解热门物品被过度惩罚的问题。

正采样(Positive Sampling)相对少用,因为正样本本来就少,再采样会更少。但在某些场景下,比如正样本内部差异很大(有强正反馈和弱正反馈),可以对强正样本做上采样,让模型更关注高价值行为。

分层采样(Stratified Sampling)是我个人最推荐的做法:按照某个关键维度(比如用户活跃度、物品类别、时间分段)分层,然后在每层内部按比例采样。这样能保证训练集和真实分布的偏差可控,避免某一类用户或物品被过度代表。

3.3 采样比例不是拍脑袋:一个可落地的计算方法

很多人问采样比例到底设多少合适。我的经验是,不要追求 1:1,那反而会让模型对真实分布的估计产生严重偏差。比较稳妥的做法是:

  1. 先统计原始正负比例,记为 1:N。
  2. 根据业务对召回率和准确率的偏好,设定目标比例。一般推荐场景控制在 1:3 到 1:10 之间,风控场景可以到 1:20。
  3. 采样后要做概率校准,因为采样改变了先验分布,模型输出的概率不再等于真实概率。

概率校准的公式很简单,假设负样本采样率为 r(即保留了 r 比例的负样本),那么校准后的真实概率为:

p_true = p_pred / (p_pred + (1 - p_pred) / r)

这个公式我在多个项目里验证过,采样率在 0.01 到 0.5 之间时校准效果都很稳。如果你不做校准,模型输出的概率直接拿去算期望收益,会系统性偏高,这是很多团队上线后才发现的问题。

注意:采样比例一旦确定,训练集、验证集、测试集必须用同一套采样逻辑,否则评估指标会失真。我见过有人训练用采样数据、测试用全量数据,结果离线指标和线上表现完全对不上。

4. 标注环节:正负样本质量的生死线

4.1 人工标注的三种模式与适用场景

不是所有项目都有现成的行为日志可以当标签。很多场景需要人工标注,这时候标注模式的选择就至关重要。

第一种是单标注,一个人标一条数据。成本最低,但一致性差,适合任务简单、容错率高的场景。

第二种是交叉标注,多人标同一条数据,取多数投票。成本翻倍,但能显著降低噪声,适合医疗、金融这类对准确性要求极高的场景。

第三种是专家标注+众包预标,先用众包做初筛,再由专家复核争议样本。这是成本和质量的平衡点,也是我在实际项目里用得最多的模式。

4.2 标注一致性怎么量化:Kappa 系数实操

标注一致性不能靠感觉,要用数据说话。最常用的指标是Cohen's Kappa 系数,它衡量的是"扣除随机一致后的真实一致性"。

Kappa 的计算逻辑是:先算观察一致率 Po,再算随机一致率 Pe,然后 Kappa = (Po - Pe) / (1 - Pe)。一般来说:

  • Kappa > 0.8:一致性极好,标注质量可靠
  • 0.6 < Kappa < 0.8:一致性可接受,但需要关注争议样本
  • Kappa < 0.6:一致性差,标注规范需要重新制定

我在一个文本审核项目里遇到过 Kappa 只有 0.45 的情况,排查后发现是标注规范里"违规"的定义太模糊,不同标注员理解差异巨大。后来把规范拆成 12 条具体规则,每条都配了正反例,Kappa 直接升到 0.82。

4.3 标注规范怎么写才不扯皮

写标注规范是门手艺。我的经验是遵循三个原则:

  • 可判定:每条规则都要能明确判断"是"或"否",避免"视情况而定"这种表述。
  • 有边界:明确写出容易混淆的边界情况怎么处理,比如"部分违规算不算违规"。
  • 带示例:每条规则至少配 2 个正例和 2 个反例,最好是从真实数据里挑的争议样本。

规范写完后,一定要先做一轮小规模试标,让标注员标 100 条,然后开会讨论分歧。这一步能提前暴露 80% 的理解偏差,比标完几万条再返工划算得多。

提示:标注规范不是写完就锁死的,随着项目推进要持续迭代。建议每两周复盘一次争议样本,把新出现的边界情况补充进规范。

5. 不同领域的正负样本实战差异

5.1 推荐与搜索:曝光未点击才是真负样本

推荐和搜索场景里,正负样本的定义直接决定了模型能不能学到用户的真实偏好。核心原则是:只有曝光过的物品,才有资格谈正负。

用户点击了,是正样本;曝光了但没点击,是负样本;从未曝光过的,既不是正也不是负,是未知样本,不能参与训练。这个原则听起来简单,但实操中经常被违反,原因通常是数据埋点不完整,拿不到完整的曝光日志。

另一个坑是位置偏差。排在第一位的物品天然点击率高,排在第十位的天然点击率低。如果直接把点击当正样本,模型会学到"位置靠前就是好",而不是"内容好"。解决办法是在训练时引入位置特征,或者用反事实推理的方法做纠偏。

5.2 风控与反欺诈:极端不平衡下的采样艺术

风控场景的正负比例可能是 1:10000 甚至更极端。这时候负采样几乎是必须的,但采样策略要特别小心。

我的做法是:保留全部正样本,对负样本做分层采样。分层维度包括交易金额、时间、用户等级等。采样后正负比例控制在 1:10 到 1:50 之间。同时,因为欺诈手法会不断演变,还要定期用新数据做难负样本挖掘,把那些"看起来像欺诈但实际正常"的样本加进训练集,提升模型的边界判别能力。

评估指标上,风控场景不能只看准确率,要看召回率、精确率和 KS 值。尤其是召回率,漏掉一个欺诈交易的代价远大于误判一个正常交易。

5.3 大模型偏好对齐:正负样本的新战场

大模型时代,正负样本有了新形态。在 RLHF 或 DPO 这类偏好对齐方法里,正样本是"被人类选中的回答",负样本是"被拒绝的回答"。这里最大的坑是平局样本——两个回答质量差不多,人类标注员随便选了一个。这种样本如果当正负对用,会引入大量噪声。

处理办法是:标注时明确设置"平局"选项,训练时把平局样本单独处理,或者直接丢弃。另外,偏好数据的质量比数量重要得多,几千条高质量偏好数据的效果,往往好过几万条噪声数据。

6. 常见问题与排查技巧实录

6.1 模型离线指标好但线上拉胯,怎么查

这是最经典的问题,排查顺序我总结成一张表:

排查项检查方法常见原因
样本定义对比线上线下样本口径线上把未曝光当负样本
采样偏差检查采样是否分层采样后分布偏移
特征穿越检查特征时间戳用了未来信息
概率校准对比预测概率与实际采样后未校准
数据延迟检查特征更新时效线上特征滞后

按这个顺序查,90% 的问题能在半天内定位。

6.2 正负样本比例突然变化怎么办

如果监控发现正负比例突然变化,先别急着调模型,先查数据。常见原因有三个:一是埋点出问题,某些行为没上报;二是业务策略调整,比如改了曝光逻辑;三是数据管道故障,部分数据丢失。这三种情况的处理方式完全不同,盲目调模型只会越调越乱。

6.3 几个我踩过的坑

第一个坑是用测试集的采样比例去评估模型。测试集应该尽量接近真实分布,如果测试集也做了负采样,评估出来的指标会虚高。正确做法是测试集用全量数据,或者用固定的采样比例并做校准。

第二个坑是忽略时间因素。用户兴趣会随时间变化,如果用一个月前的数据训练、预测今天的用户行为,效果会打折。建议训练数据用滑动窗口,并且做时间上的负采样,让模型学到时间衰减。

第三个坑是难负样本用过头。难负样本能提升模型判别力,但用太多会让模型过拟合到那些边界样本上,对普通样本的判别反而下降。我的经验是难负样本占比控制在 20% 到 30% 之间。

7. 写在最后:一些个人体会

正负样本这件事,说到底是一个"定义问题"的问题。技术手段再花哨,定义错了全白搭。我在实际项目里最大的体会是:花在定义和验证样本上的时间,永远不亏。一个项目如果样本定义清晰、采样合理、标注规范,模型结构用最朴素的都能出效果;反过来,样本一团糟,上再复杂的模型也是徒劳。

最后分享一个小技巧:每次开新项目,先别急着写代码,拿一张纸把"什么是正样本、什么是负样本、怎么采样、怎么验证"这四个问题写清楚,然后找业务方和数据方各对一遍。这个动作花不了半小时,但能帮你避开后面几周的返工。这个习惯我坚持了好几年,屡试不爽。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 9:20:48

Origin柱状图逐点着色与图例同步实战指南

1. 这不是“改颜色”那么简单&#xff1a;Origin柱状图定制背后的真实工作流OriginLab的柱状图&#xff0c;表面看只是把一串数字变成几根竖条&#xff0c;但实际工作中&#xff0c;它几乎天天出现在科研论文插图、项目汇报图表、仪器数据比对报告里。我用Origin画过超过2300张…

作者头像 李华
网站建设 2026/9/26 9:20:22

C#通过OPC读取WinCC数据:从源码到上位机实战

简介&#xff1a;这份程序源码面向C#开发人员与工控领域学习者&#xff0c;聚焦于通过OPC协议与西门子WinCC进行数据交互这一典型场景&#xff0c;帮助读者理解上位机如何读取WinCC中的实时数据。资源以完整可运行的工程形式提供&#xff0c;包含窗体界面、业务逻辑与配置代码&…

作者头像 李华
网站建设 2026/9/26 9:20:03

精密运放选型新思路:国产CM4132与ADI AD8606实测对比

1. 精密运放选型这件事&#xff0c;为什么值得重新审视 搞模拟电路的兄弟都有一个共识&#xff1a;精密运放选型是个磨人的活。早些年做高精度信号链&#xff0c;脑子里第一反应就是去ADI的官网翻数据手册&#xff0c;AD8606、AD8615、AD8628这些型号几乎成了默认选项。不是说国…

作者头像 李华
网站建设 2026/9/26 9:19:56

Substrate区块链开发框架实战:从核心模块拆解到搭链全流程

1. 从“substrate”这个词说起&#xff1a;它到底是什么&#xff0c;为什么值得单独聊第一次听到“substrate”这个词&#xff0c;很多人会愣一下。它在英文里的本意是“基底”“底层”“培养基”&#xff0c;字面意思就是“承载某个东西的那一层”。但如果你是在技术社区、开发…

作者头像 李华
网站建设 2026/9/26 9:19:09

GitHub热榜揭秘:AI agent底层基建与从0到1搭建指南

1. 从热榜前五看 AI agent 的底层基建潮9 月 22 日这天的 GitHub Trending 榜单挺有意思&#xff0c;前五名里三个项目都在做同一件事——给 AI agent 造地基。不是做应用层那种花哨的聊天机器人&#xff0c;也不是套壳调 API 的轻量工具&#xff0c;而是往底层扎&#xff1a;会…

作者头像 李华