基于机器学习的异常检测模型调优课 - 第1节
1.1 异常到底是个啥?
聊异常检测,第一个问题就是:啥叫异常?
说白了,异常就是“不一样”。跟大多数数据长得不一样,行为模式不一样。我习惯把异常理解成“稀有事件”——它出现的概率低,但一旦出现,往往意味着大问题。
举个例子。你正常刷卡买咖啡,每天几十块。突然有一天,卡在海外买了个奢侈品包。银行系统立刻判定:这笔交易异常。因为你平时不是这么花钱的。
这里面有个关键点:异常是相对的。同样是买包,对富豪来说可能很正常。所以判断异常得看上下文。
异常的几种类型
我之前在项目里踩过坑,就是因为没分清异常类型。后来我总结了一张表,帮你快速建立概念:
| 类型 | 特点 | 举个栗子 |
|---|---|---|
| 点异常 | 单个数据点跟全局差异巨大 | 信用卡单笔刷了100万 |
| 上下文异常 | 放在某个上下文里才异常 | 夏天室温40°C正常,冬天40°C就异常 |
| 集体异常 | 一群点合起来不正常 | 连续5笔小额试探交易,看起来像撞库 |
1.2 异常检测都用在哪?
异常检测这个技术,其实你每天都在用。你打开手机、刷个脸、点个外卖,背后可能都有模型在盯着。
我个人觉得,异常检测最牛的地方就是“通用性”。不管你是搞金融的、搞工业的,还是搞安全的,都能用到它。我罗列几个最常见的场景:
- 金融风控:信用卡欺诈、洗钱监测、账户盗用。这是最成熟的领域,养活了大量模型。
- 工业运维:传感器坏了、机器温度异常、振动频谱偏离。我记得有次去工厂,发现轴承磨损的早期信号,就是通过异常检测抓出来的。
- 网络安全:入侵检测、网络流量异常、DDoS攻击识别。异常流量往往跟正常流量就一点细微差别。
- 医疗健康:心电图波形异常、病毒爆发早期监测。你想想看,疫情监测本质上就是集体异常检测。
- 社交媒体:水军检测、虚假账号识别。账号行为跟正常人不一样,这就是异常。
这些场景都有一个共性:异常样本极少,正常样本极多。正负样本极度不均衡,恰好是监督学习的死穴。所以异常检测必须走另一条路。
1.3 常见的坑和难点
说完了美好的应用,我得给你泼盆冷水。异常检测看着简单,实际做起来全是坑。我曾经在一个金融项目里,模型上线后连续误报,差点被业务部门投诉到离职。
总结一下,最常见的难点有三个:
难点一:异常样本极度稀缺
这是最致命的。你收集到一万条数据,可能只有三五条是异常的。机器根本学不到“异常长啥样”。
为什么会这样?
因为异常本身就是小概率事件。而且很多异常发生后,数据就被修正了,没人给你打标签。
我建议,别指望靠有监督学习搞定。放弃幻想,拥抱无监督或半监督。
难点二:概念漂移
今天你的模型表现很好。明天业务变了,用户行为变了,模型就废了。这就是概念漂移。
我记得之前在电商做促销活动,用户行为突然暴涨。模型把这当成异常全部报警了。其实那是正常的促销流量。
难点三:标签噪声
就算你搞到了少量异常标签,你敢信吗?
人为标注的异常,经常是错的。标注员把正常当异常,把异常放过了。这种噪声对模型的伤害远超你的想象。
所以我在项目里遇到这种情况,通常会先做标签清洗。哪怕牺牲一些样本量,也要保证标签的纯度。
1.4 异常检测的核心逻辑
学完前面这些,你应该有了一个基本框架。我把它画成了一张图,帮你捋清楚:
- 异常是“稀有事件”,具体分点异常、上下文异常和集体异常
- 异常检测广泛应用于金融、工业、安全、医疗等领域
- 最大难点是样本稀缺、概念漂移和标签噪声
- 不要试图用监督学习硬解,这条路走不通