想象你是海关的资深关长。每天有成千上万个货柜入关,有的货柜混进了夹带违禁品的“问题件”,有的报关单与实物严重不符,有的货物表面完好、内里却暗藏玄机,甚至还有内部员工长期往供应链里安插“眼线”。如果这些货放行,轻则损失一笔生意,重则整个通关体系被渗透。 AI 工程师其实也是这样的“关长”,只不过检验的对象换成了训练数据。数据质量决定模型的天花板:一份混入异常值、错标标签、被恶意投毒的数据集,会让模型悄悄“学坏”,上线后翻车。这篇文章带你走一遍完整的“数据海关安检流程”——从异常值基础认知、统计与聚类检测法,到标签噪声识别、对抗样本与投毒防护,再到清洗流水线的搭建和污染程度的量化评估。学完,你就能亲手守好这道数据大门。
掌握数据质检与污染识别,是 AI 从业者交付可靠模型的底线能力。它帮你提前拦截“带病数据”,避免模型训练失控与上线事故,是数据工程师、算法工程师必须修炼的看家本领。
目录
可视化演示
动态演示异常值与污染数据识别测试实战的核心机制,通过概览/流程/对比/趋势四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
异常值与污染数据识别测试实战:异常值与 异常值与污染数据的类型与影响分 统计异常检测方法:Z-scor 核心机制可视化 异常值与污染数据识别测试实战整体架构与关键组件
异常值基础:可疑货物长什么样
在海关眼里,一批正常货物有“标准画像”:重量、尺寸、来源地都落在合理区间。突然来了一个货柜,重量异常、尺寸离谱,这就是“可疑货物”——对应到数据里,我们叫它异常值(Outlier)。它指数据集中与其他样本显著偏离的数据点,可能来自传感器故障、人工录入笔误,也可能来自真实但稀有的极端事件。
异常值并非只有一种形态。点异常是单个样本自身偏离全局,如同一个货柜单独超重;上下文异常是一个样本在特定场景下才异常,比如空调在夏天开暖风,放在冬天就不稀奇;集合异常是一群样本集体偏离,如同一批货柜集体改了产地。认识形态,才能选对检测手段。
异常值的危害不只在“多了一个坏点”。它会拉偏统计量,让均值失真、方差膨胀,如同一个超重货柜把整台地磅的读数带偏;它还会干扰模型训练,让决策边界扭曲,最终模型上线后在小概率样本上疯狂出错。识别难点在于“真假难辨”:真实稀有事件和测量噪声长得一模一样,误删可能丢掉宝贵信号,漏删则埋下隐患。
好在,所有检测手段都始于一个朴素的共识:异常值是少数派、是偏离者。
回到海关视角:我们要做的,就是让“可疑货物”在均值、分布、聚集形态中被逐层识别出来,为后续每道安检关卡打下基础。
- 理解均值把所有样本值加起来再除以样本个数,得到数据中心位置,相当于货物总重量除以件数。
- 求和符号 Σ从第 1 个样本加到第 n 个样本,一件货物都不能漏。
- 样本量 n样本总个数。n 越大,单个异常值对均值的拉扯越小,但再小也会让均值偏离真实值。
统计检测法:常规 X 光与秤台
海关入口的第一道设备是 X 光机和地磅:先测每个货柜的重量和尺寸,跟标准范围比对,超出限度的立刻警报。对应到数据领域,就是统计检测法——用数据自身的分布特征设定“正常区间”,越界的判为异常。
最常用的是 Z-score 法:先算出全体样本的均值 μ 和标准差 σ,再把每个样本换算成“偏离均值多少个标准差”。若一个样本偏离超过 3 个标准差(3σ 原则),就触发警报。另一个经典方法是 IQR 箱线图法:把数据从小到大排队,找到四分之一分位点 Q₁ 和四分之三分位点 Q₃,两者之差就是 IQR,正常区间划在 Q₁−1.5×IQR 到 Q₃+1.5×IQR 之外,两端之外全判异常。Z-score 适合近似正态分布的数据,箱线图法则对偏态分布更稳健。
作为第一道关卡,统计法简单高效,但它偏爱“规则身材”的数据。一旦数据形状怪异、呈月牙形或环形,X 光机就开始误报漏报。这时,海关需要更聪明的行为画像排查——密度聚类,也就是下一节的主角。
- 计算均值 μ全部样本的平均值,即数据重心。
- 计算标准差 σ样本偏离均值的平均幅度,σ 小说明数据抱团,σ 大说明数据松散。
- 标准化转换每个值减去均值再除以标准差,得到该样本偏离均值的“倍数”。
- 判定规则通常 |z| > 3 判为异常,相当于货物重量超出“正常刻度”三格以上。
聚类检测法:谁不合群谁有嫌疑
海关的第二道手段是行为画像排查:不再只看单个货物是否偏离标准,而是观察“谁和谁结伴同行”。正常货物往往在产地、批次上形成聚集,如来自同一港口的货柜成群结队;而可疑货物总是孤零零地落在聚集区之外。DBSCAN 聚类正是这种思路:以每个点为中心画一个半径 ε 的圈,圈内样本数达到阈值就视为“核心点”,彼此连通的核心点形成簇,而那些既不靠近任何簇、也无法扩展的样本,就是噪声点——异常值。
孤立森林则换了一个角度:异常点数量少、特征怪异,天然容易被“随机切几刀”就单独切出来。它用随机超平面反复分割数据空间,异常点往往只需要很少的分割次数就能被孤立,因此“路径短”的点就是异常。相比统计法,聚类与隔离类方法不依赖正态分布假设,能识别月牙形、环形甚至任意形状的聚集结构,这是 X 光机做不到的。
行为画像排查补足了统计法的盲区,但无论是统计法还是聚类法,都只盯着“特征本身”,而忽略了数据身上贴着的那张“报关单”——标签。当标签本身是错的,下一道关卡就要登场了。
- 设定半径 ε决定“多近算邻居”,如同海关定义“多近算同行批次”。
- 找邻域样本距离 p 不超过 ε 的所有样本点构成邻域集合。
- 判断点角色邻域样本数 ≥ min_samples 为核心点;被核心点覆盖但自身不达标为边界点;两者皆非为噪声点。
标签噪声识别:核对报关单与实物
一个货柜明明装的是塑料颗粒,报关单却写着高纯度钯粉——在海关节奏里,这叫“单货不符”;在数据集里,这就是标签噪声:样本特征正确,但标注的类别是错的。标签噪声通常来自人工标注疲劳、众包平台低质标注、或爬虫数据自动打标的粗糙。它的破坏力比特征异常更隐蔽,因为特征分布完全正常,模型却会被错误标签“带偏”。
识别标签噪声的常用手段是交叉验证清洗:把训练数据切成 k 份,轮流用其中 k−1 份训练模型、预测剩下 1 份。若某个样本被多数模型反复预测错误,它的标签就高度可疑。更进一步,可以用模型输出的置信度做过滤:当模型对某样本预测的归属类别概率很低时,说明它处于类别边界或标签冲突区。最终,对这些可疑样本进行人工复核,或者直接修正标签,而不是盲目删除。
报关单核对能防住“粗心填错”,但还防不住一类高段位造假:货物表面严丝合缝、图像完全正常,却在毫厘之间暗藏恶意。那就是对抗样本。
- 模型预测对每个样本,模型输出它属于每个类别的概率。
- 取最大项概率最大的类别作为模型预测标签。
- 对比真值预测标签与原始标签不一致,说明原标签可能被污染。
对抗样本检测:破解精心伪装的违禁品
有经验的走私者不会扛着一箱明显违禁品过关,而是把违禁成分微缩进日用品内部,外观与正品毫无差异。对抗样本就是 AI 世界的“精致伪装”:攻击者在正常样本上叠加一层肉眼几乎看不见的微小扰动,让模型信心满满地分错。比如一张熊猫照片,加上一层细微噪声后,模型竟然高呼“长臂猿”。扰动幅度通常受范数约束,保证人眼无感,却精准打击模型的决策边界。
检测对抗样本的核心思路是“让伪装失效”。一种策略是输入预处理:对输入做压缩、降噪、平滑,破坏攻击者精心设计的扰动结构;另一种是模型鲁棒性防御:在训练时主动注入对抗样本做对抗训练,让模型对微小扰动天然免疫;还可以对输入样本进行二次校验,观察模型中间层特征是否异常,就像海关抽查时用化学试剂擦拭货柜表面,让隐藏物质现形。
对抗样本是来自外部的攻击,而数据投毒则是更阴险的“内部渗透”——它不修改任何现有货物,而是直接在供应链里安插一批表面清白、内藏后门的“新货”。
- 扰动向量 δ叠加到原始样本上的微小变化,如给图片每个像素加一点偏移。
- 范数约束用 Lp 范数限制扰动总幅度,保证改动微小。
- 攻击目标叠加扰动后的样本被模型分类到错误类别。
数据投毒防护:揪出内部安插的眼线
海关最怕的不是明面上的走私,而是有人长期往正常供应链里混入自己的“货”,表面合规,关键时刻集体发作。数据投毒正是如此:攻击者向训练数据中注入精心构造的恶意样本,让模型在正常任务上表现良好,却在特定触发器出现时输出攻击者想要的结果,这被称为后门攻击。比如给一批图片加上一个微小的水印,模型学到的却是“有水印→恶意分类”。
防投毒有几个抓手。净化防御:在训练前用异常检测与聚类方法筛出可疑样本,如同对入库货物进行成分抽检;鲁棒聚合:分布式训练中对各方上传的梯度做剪裁与加权,异常梯度直接降权,如同对每批货做来源资质审查;溯源审计:对每一份训练数据记录来源、版本、标注人,一旦发现污染,能迅速定位并回滚到干净版本,如同海关给每个货柜编号,出了问题能倒查整条供应链。
单点防御各有专长,但真实项目里数据来源杂、质量参差,需要像海关总署那样把多道关卡串成一条流水线,让数据从入关到放行有章可循。
- 统计投毒样本数通过异常检测与人工抽检确认的恶意样本数量。
- 统计总样本数训练集中全量样本数量。
- 计算比例投毒率越高,模型被劫持的风险越大,超过红线必须全量清洗。
清洗流水线:标准化多关卡安检流程
海关不会只靠一台设备打天下,而是把 X 光、地磅、行为画像、单货核对、抽检化验串成一条标准流水线。数据清洗同样需要Pipeline 化:先做格式规范与去重,再依次执行统计检测、聚类检测,接着核对标签噪声、排查投毒样本,最后对通过全部关卡的数据放行,进入训练集。每一步的输出都记录在案,方便追溯。
流水线必须设质量红线:比如污染率超过 5% 的数据批次不得直接入库,标签一致率低于 95% 必须重新标注,置信度低于阈值的样本必须人工复核。同时要有监控告警:每次数据入库自动计算各项质量指标,指标恶化时触发告警,让问题在进入模型之前就被拦截。自动化是这个流水线的灵魂——通过脚本和调度系统,让清洗、质检、打报告一气呵成,而不是靠工程师手工跑 notebook。
流水线建好了,管理者还需要一份“检验报告”来量化战果:到底拦下了多少污染、清洗后数据变得多干净、模型收益有多大。这就是量化与实战的功课。
- 定义三个维度完整率(缺字段比例)、一致率(标签与特征吻合度)、清洁率(无异常样本比例)。
- 分配权重按业务重要性给各维度加权,权重之和为 1。
- 加权求和综合得分低于阈值,则批次进入待清洗队列。
量化与实战:用指标守住数据国门
光有流程还不够,海关总署需要 KPI 来评估各口岸的工作成效。数据质检同样需要量化指标。最直接的是污染率:数据集里异常与污染样本的占比,它决定了一个批次是否需要返工;而评估“检测得准不准”,要用精确率、召回率与 F1——精确率看“抓到的异常里真异常占多少”,召回率看“真异常里被抓住的占多少”,F1 则是两者的调和平均,避免为了抓得多而误伤好数据。
工程落地时可以借助成熟工具链:Python 的 scikit-learn 提供 DBSCAN、孤立森林等开箱即用的检测器;Great Expectations 可以定义数据断言与质量红线;Apache Airflow 则负责把清洗任务编排成定时流水线。一个典型的实战案例是:某推荐系统团队发现 CTR 模型线上效果骤降,通过污染率监控发现训练数据中混入了 8% 的爬虫点击样本,启动流水线清洗后模型 AUC 回升 6 个百分点——这就是量化的力量,让每一次质量问题都有数字可依、有流程可解。
至此,从异常值识别到污染量化,一套完整的“数据海关”体系已经成型。记住:数据质量不是一次性的清理活动,而是像海关一样 7×24 小时运转的长期防线。
- 精确率被判为异常的样本中有多少是真正的异常,防止“宁可错杀一千”。
- 召回率真正的异常中有多少被成功识别,防止漏网之鱼。
- 调和平均两者综合成一个分数,F1 越高检测器越均衡。
AI 应用场景
金融风控:信用卡交易流水欺诈检测
阶段:数据预处理与质量检测
解决的问题:传统风控靠人工规则筛查欺诈交易,面对每天数百万笔交易,耗时且漏判率高;异常检测方法能够自动扫描交易特征,识别出与正常消费模式显著偏离的可疑交易。
具体案例:某银行对信用卡交易数据做质检,先用 Z-score 检测单笔金额异常的极值交易,再用 DBSCAN 聚类发现“短时间内同商户高频交易”的集合异常,最后对命中样本做人工复核。上线后欺诈拦截率提升 35%,误报率下降 20%。
自动驾驶:传感器标定数据污染过滤
阶段:数据清洗与模型鲁棒性验证
解决的问题:自动驾驶训练数据来自激光雷达、摄像头等多源传感器,极易混入标定错误、遮挡碎片等污染数据,直接训练会导致模型在真实道路上误判;系统化的清洗 Pipeline 可在数据入库前自动拦截问题样本。
具体案例:某自动驾驶团队为 LiDAR 点云数据搭建清洗流水线,用孤立森林检测空间分布异常的离群点簇,用标签一致性校验筛出被错误标注的车辆框,再配合质量红线监控,成功将模型在雨雾天气下的检测准确率从 82% 提升至 91%。
大模型训练语料:标签翻转与投毒语料排查
阶段:数据安全防护
解决的问题:大模型训练语料通常从互联网海量爬取,可能混入恶意投毒文本(如诱导模型输出有害内容的后门样本),且人工逐条审核不现实;自动化污染检测可以在语料入库前定位并隔离可疑样本。
具体案例:某 LLM 团队对 200GB 开源语料做投毒筛查,通过 n-gram 异常检测与聚类分析,发现一批“看似正常问答、实含触发词后门”的投毒文本,及时清除后有效避免了模型在特定话题上被劫持。
Python 演示
import numpy as npfrom sklearn.cluster import DBSCAN class DataCleaner: """数据清洗与污染检测流水线,相当于海关多关卡检查。"" def __init__(self, data, labels=None): self._data = np.array(data, dtype=float) self._labels = np.array(labels) if labels is not None else None self._outlier_mask = np.zeros(len(self._data), dtype=bool) self._method_masks = {} def detect_outliers_zscore(self, threshold=3.0): mu = np.mean(self._data, axis=0) sigma = np.std(self._data, axis=0) sigma[sigma == 0] = 1e-9 z = np.abs((self._data - mu) / sigma) mask = np.any(z > threshold, axis=1) self._outlier_mask = self._outlier_mask | mask self._method_masks['zscore'] = mask.astype(int) def detect_outliers_iqr(self, k=1.5): q1 = np.percentile(self._data, 25, axis=0) q3 = np.percentile(self._data, 75, axis=0) iqr = q3 - q1 lower = q1 - k * iqr upper = q3 + k * iqr mask = np.any((self._data < lower) | (self._data > upper), axis=1) self._outlier_mask = self._outlier_mask | mask self._method_masks['iqr'] = mask.astype(int) def detect_outliers_dbscan(self, eps=0.5, min_samples=5): labels = DBSCAN(eps=eps, min_samples=min_samples).fit_predict(self._data) mask = labels == -1 self._outlier_mask = self._outlier_mask | mask self._method_masks['dbscan'] = mask.astype(int) def compute_pollution_rate(self): return float(np.sum(self._outlier_mask)) / len(self._data) def clean(self): kept = self._data[~self._outlier_mask] kept_labels = self._labels[~self._outlier_mask] if self._labels is not None else None return kept, kept_labels def report(self): return { 'total': len(self._data), 'outliers': int(np.sum(self._outlier_mask)), 'pollution_rate': round(self.compute_pollution_rate(), 4), 'by_method': {k: int(v.sum()) for k, v in self._method_masks.items()}, } def build_mixture_data(): rng = np.random.default_rng(42) normal = rng.normal(0, 1, (500, 2)) outliers = rng.uniform(-6, 6, (40, 2)) return np.vstack([normal, outliers]) if __name__ == '__main__': data = build_mixture_data() cleaner = DataCleaner(data) cleaner.detect_outliers_zscore(threshold=3.0) cleaner.detect_outliers_iqr(k=1.5) cleaner.detect_outliers_dbscan(eps=0.8, min_samples=5) print("清洗报告:", cleaner.report()) print("污染率: %.1f%%" % (cleaner.compute_pollution_rate() * 100)) kept, _ = cleaner.clean() print("清洗后剩余样本数:", len(kept))
self._outlier_mask = np.zeros(len(self._data), dtype=bool)初始化解一个“黑名单”数组,所有样本默认放行。mask = np.any(z > threshold, axis=1)只要任意一个特征维度上 Z-score 超限,该样本即被标记为异常。self._outlier_mask = self._outlier_mask | mask各关卡结果取并集,任一关卡命中都进入黑名单。labels = DBSCAN(eps=eps, min_samples=min_samples).fit_predict(self._data)聚类后标签为 -1 的样本即噪声点。return float(np.sum(self._outlier_mask)) / len(self._data)计算污染率:黑名单人数除以总人数。kept = self._data[~self._outlier_mask]用布尔索引取反,一键放行所有干净样本。
常见误区
误区我拿到数据后只要发现异常值,一律删掉,这样模型肯定更干净更准。
正解异常值可能是测量噪声,也可能是真实且宝贵的信号。信用卡欺诈、设备故障、罕见病发作,这些恰恰是业务最关心的“稀有事件”。盲目删除会把关键信息一起丢掉,如同海关不能因为某个货柜尺寸特殊就一律销毁——它可能装着急需的医疗设备。正确做法是:先标记、再分析、结合业务判断,是噪声才清洗,是信号要保留。
为何常见:因为大多数教程都在教“如何检测并删除离群点”,让人误以为异常值天然就是坏数据。
误区我给所有特征都算一遍 Z-score,超过 3 就是异常,简单粗暴又通用。
正解Z-score 隐含的假设是数据近似服从正态分布。当数据严重偏态(如收入分布、用户点击时长),或呈多峰形态时,均值和标准差本身就被扭曲,算出的 Z-score 并不可靠。比如用户在线时长呈现“大量短会话 + 少量超长会话”的双峰分布,用 Z-score 可能把正常的长会话误判成异常。此时应改用 IQR 或基于分位数的方法,它们对分布形状更稳健。
为何常见:因为 Z-score 公式简单、直觉清晰,初学者容易忽略它的分布假设前提。
误区我就用默认参数跑 DBSCAN,反正聚类方法应该比统计法“智能”。
正解DBSCAN 对 ε 非常敏感:ε 太小会把一个簇拆成无数碎片,ε 太大又会把多个簇和噪声黏成一团,就像海关把“相邻批次”的判定标准定得太宽,什么货物都算同行。min_samples 则决定“抱团多紧密才算正常”。调参时可借助 k 距离图:把每个点到第 k 近邻居的距离排序,在曲线拐弯处选 ε,才有依据。
为何常见:因为 sklearn 里 DBSCAN 可以直接 fit 出结果,参数解释不到位时容易让人忽略其敏感性。
误区我做数据质检只看特征有没有离群点,标签是标注人员给的,应该没问题。
正解标签噪声的危害不亚于特征异常。特征完全正常的样本,如果标签标错,模型会学到一组“特征到错误标签”的映射,相当于海关只检查了货物重量,却没核对报关单上的品名。标签噪声需要用交叉验证、置信度过滤、人工抽检等手段单独检测,并且要对可疑样本做修正而非简单删除。
为何常见:因为异常检测的经典教程都聚焦“特征空间的离群点”,标签质量问题容易被习惯性忽略。
误区对抗样本不就是加了点噪声吗?我把图片模糊一下、压缩一下,不就能洗掉了?
正解对抗样本的扰动是攻击者针对模型弱点精心优化的,具有极强的方向性和隐蔽性。普通去噪可能把扰动和真实细节一起抹掉,反而降低模型精度;更糟的是,强对抗扰动经过压缩后仍然有效。正确姿势是主动防御:对抗训练、输入随机化、模型集成、中间层特征校验,而不是简单粗暴的图像平滑。这就像海关对付专业走私者,不能只靠加大 X 光剂量,还得训练嗅探犬、建立情报网络。
为何常见:因为对抗样本在视觉上确实表现为“微小噪声”,人们容易按处理噪声的思维去应对,低估了它的针对性。
面试题
Q1. Z-score 异常检测隐含的数据分布假设是什么?
- A.数据服从均匀分布
- B.数据近似服从正态分布← 正确答案
- C.数据服从泊松分布
- D.数据无任何分布假设
答案:B。Z-score 用均值和标准差衡量偏离程度,这隐含了数据近似正态的假设。均匀分布、泊松分布下均值与标准差的意义会被扭曲。选项 D 是聚类法(如 DBSCAN)的优势,不是 Z-score 的前提。
Q2. 使用 IQR 箱线图法检测异常值时,通常把上界设为多少?
- A.Q3 + 1.5×IQR← 正确答案
- B.Q3 + 2×IQR
- C.Q3 + 3×IQR
- D.Q3 + 0.5×IQR
答案:A。箱线图法约定 Q1−1.5×IQR 到 Q3+1.5×IQR 为正常区间,超出即异常。2 倍、3 倍是更宽松或更严格的其他标准,0.5 倍则过于敏感,都不属于经典 1.5 倍规则。
Q3. DBSCAN 中标签为 -1 的样本代表什么?
- A.核心点
- B.边界点
- C.噪声点← 正确答案
- D.已聚类的正常点
答案:C。DBSCAN 对每个聚类簇分配非负整数标签,标签 -1 表示该点既不是核心点也不属于任何簇的密度可达范围,即噪声点。核心点和边界点都会被分配到某个簇的标签,因此选项 A、B、D 均不对。
Q4. 以下哪些方法可用于识别标签噪声?
- A.K 折交叉验证预测比对← 正确答案
- B.模型输出置信度过滤← 正确答案
- C.对特征做 Z-score 检测
- D.人工抽检可疑样本← 正确答案
答案:ABD。交叉验证可以暴露被反复预测错误的样本,置信度过滤能发现处于类别边界的样本,人工抽检是最终兜底手段。而 Z-score 检查的是特征数值的离群,不涉及标签正确性,无法识别“特征正常但标签错误”的噪声。
Q5. 对抗样本与普通噪声的本质区别是什么?
- A.对抗样本幅值更大
- B.对抗样本是针对性优化的恶意扰动← 正确答案
- C.普通噪声更容易被人类察觉
- D.对抗样本只出现在图像领域
答案:B。对抗样本是攻击者基于模型梯度等信息刻意优化的扰动,目标是让模型误判,且通常幅值很小、人眼无感。普通噪声是随机的,没有攻击意图。选项 A、C 与事实相反,选项 D 错误——对抗样本也出现在文本、语音等领域。
Q6. 3σ 原则下,某样本的 Z-score 达到多少会被判为异常?
- A.大于 1
- B.大于 1.5
- C.大于 2
- D.大于 3← 正确答案
答案:D。3σ 原则规定偏离均值超过 3 个标准差的样本判为异常。1、1.5、2 作为阈值对应更宽松的置信区间,会误伤大量正常样本,不是该原则的定义。
Q7. 数据投毒攻击的典型特征是?
- A.修改模型权重参数
- B.在训练数据中注入带后门的恶意样本← 正确答案
- C.在测试阶段篡改模型输入
- D.增大训练数据的噪声水平
答案:B。数据投毒是在训练阶段向数据集中注入恶意样本,模型在正常任务上表现不变,但遇到特定触发器时输出攻击者预设的结果。选项 A 是直接的权重攻击,选项 C 更像对抗攻击,选项 D 无明确攻击目标,均不符合投毒定义。
Q8. 构建多维度数据清洗 Pipeline 时,合理的做法包括哪些?
- A.先做格式规范与去重,再做异常检测← 正确答案
- B.只保留通过全部检测关卡的数据
- C.对清洗后的数据计算质量分并设定红线← 正确答案
- D.将清洗结果记录并追溯来源← 正确答案
答案:ACD。规范的 Pipeline 应先做基础清洗,再叠加异常检测;质量分和红线用于判断批次是否达标;记录与溯源支持问题定位和回滚。选项 B 过于极端——部分样本可能是“信号型异常”,需要结合业务决定保留而非一律丢弃。
Q9. 以下哪些场景更适合用 DBSCAN 而非 Z-score?
- A.数据呈月牙形弯曲分布← 正确答案
- B.数据近似正态分布
- C.数据形成多个环状簇← 正确答案
- D.需要不依赖分布形状的检测← 正确答案
答案:ACD。DBSCAN 基于密度聚类,能识别月牙、环形、任意形状的簇,且不要求正态分布。Z-score 适合近似正态、单峰分布的数据。选项 B 恰是 Z-score 的主场,所以不选。
Q10. 某数据集共 20000 条样本,检测出 800 条污染数据,污染率是多少?
- A.2%
- B.4%← 正确答案
- C.8%
- D.10%
答案:B。污染率 = 污染样本数 ÷ 总样本数 = 800 ÷ 20000 = 0.04,即 4%。2% 是按 400 条算的,8% 和 10% 分别是按 1600 条和 2000 条算的,均为混淆分母或分子的错误结果。