2. 评测指标体系构建
好,咱们进入第二个环节。说实话,评测指标体系这块,是我在项目中踩坑最多的地方。很多人一上来就盯着准确率看,结果模型跑得挺准,但系统扛不住并发,延时高得离谱。嗯,评测不是单点游戏,得搭一个完整的指标体系。
2.1 核心指标概览
我个人习惯把指标分成三类:效果指标、性能指标、资源指标。这三类缺一不可。你想想看,光效果好但跑不动,等于白搭;跑得快但结果全是错的,那更没用。
核心原则:评测指标的选择,取决于你的业务场景。自动驾驶场景更看重延时,推荐系统更看重召回率,没有万能指标。
下面这张图是我自己总结的指标体系结构,你一看就明白了:
2.2 效果指标详解
准确率(Accuracy)
准确率是最直观的指标。说白了就是:所有预测中,猜对了多少。公式很简单:
Accuracy = (TP + TN) / (TP + TN + FP + FN)
但这里有个坑。我在项目中遇到过样本严重不平衡的情况——正样本只占1%,负样本占99%。这时候你就算全部预测为负样本,准确率也有99%。看起来很美,实际上模型就是个废物。
注意:样本不平衡时,准确率会骗人。这时候别只看准确率,得结合召回率和F1一起看。
召回率(Recall)
召回率关注的是:所有真正的正样本中,你找出来了多少。
Recall = TP / (TP + FN)
举个例子。假设有100个异常交易,你的模型只抓到了80个,那召回率就是80%。剩下的20个漏掉了,那就是风险。
我曾经做过一个反欺诈项目,客户要求召回率必须达到99%以上。为什么?因为漏掉一笔欺诈交易,可能损失几十万。这时候宁可误报多一些,也不能放过。
F1-Score
F1-Score是准确率和召回率的调和平均。公式:
F1 = 2 * (Precision * Recall) / (Precision + Recall)
为什么要用调和平均?因为算术平均会被大数带偏。举个例子:
- 模型A:准确率90%,召回率10% → 算术平均50%,F1只有18%
- 模型B:准确率50%,召回率50% → 算术平均50%,F1是50%
你看,算术平均一样,但F1能真实反映模型B更好。我个人习惯把F1作为效果指标的最终裁决者。
小技巧:如果你不确定该优化准确率还是召回率,先看F1。F1上去了,说明整体效果在变好。
2.3 性能指标详解
延时(Latency)
延时就是从请求发出到收到响应的时间。通常关注三个分位值:
| 分位值 | 含义 | 典型要求 |
|---|---|---|
| P50 | 50%的请求在这个时间内完成 | < 100ms |
| P95 | 95%的请求在这个时间内完成 | < 200ms |
| P99 | 99%的请求在这个时间内完成 | < 500ms |
嗯,这里要注意。平均延时是个陷阱。我记得有一次,系统平均延时只有50ms,但P99延时高达2秒。这意味着每100个用户里,就有1个要等2秒。用户体验极差。
吞吐量(Throughput)
吞吐量是单位时间内能处理的请求数。常用单位:QPS(每秒查询数)、TPS(每秒事务数)。
吞吐量 = 总请求数 / 总时间
吞吐量和延时是跷跷板关系。你想想看,系统资源是有限的,请求越多,单个请求的等待时间就越长。所以评测时,我一般会固定一个指标,看另一个。
实战经验:我习惯用「吞吐量-延时曲线」来评估系统性能。找到拐点——那个吞吐量再增加、延时就会急剧上升的点。这个点就是系统的极限承载能力。
2.4 资源指标详解
资源指标说白了就是系统跑起来要花多少本钱。主要看三个:
- CPU占用率:别超过80%,超过就报警。我见过CPU飙到95%还在跑的,结果系统直接卡死。
- 内存占用:注意内存泄漏。我曾经排查过一个项目,内存占用每小时涨2%,跑两天就OOM了。
- 磁盘I/O:读写速度。如果磁盘I/O成为瓶颈,加内存或换SSD是常见解法。
2.5 指标选择策略
说了这么多,到底怎么选?我总结了一个简单的决策树:
- 先看业务场景:是离线评测还是在线评测?
- 离线场景:重点看效果指标(准确率、召回率、F1)
- 在线场景:重点看性能指标(延时、吞吐量)
- 资源受限场景:加上资源指标(CPU、内存)
- 最终:至少选3个指标,覆盖效果、性能、资源三个维度
我的习惯:每次评测至少选4个指标。比如「F1 + P99延时 + QPS + CPU占用」,这样效果和性能都能覆盖到。
2.6 避坑指南
最后分享几个我踩过的坑:
- 只看平均值:平均值会掩盖极端情况。一定要看分位值。
- 忽略冷启动:系统刚启动时性能往往较差。我一般会预热5分钟再开始采集数据。
- 指标之间互相矛盾:比如准确率和召回率往往此消彼长。这时候F1就是你的裁判。
- 测试环境与生产环境不一致:尽量用和生产环境一样的配置,否则评测结果没有参考价值。