一、异常检测概述
什么是异常检测
异常检测,说白了就是在一堆数据里找出「不对劲」的那些点。
我做了这么多年风控,最深的感受是:正常的数据千篇一律,异常的样本各有各的奇葩。异常检测要解决的,就是怎么从海量交易、用户行为、设备指纹里,快速揪出那些「不对劲」的家伙。
举个例子。你每天刷卡买咖啡,金额固定在30块左右。突然有一天,你的卡在凌晨三点刷了一笔8万块的奢侈品交易。嗯,这就是典型的异常。
从技术角度看,异常检测是一个无监督或半监督的学习问题。为什么?因为真实的异常样本太少了,而且异常的模式总在变。你想想看,黑产团伙今天用这套手法,明天就换了。你很难提前标注好所有异常类型。
核心定义:异常检测(Anomaly Detection)就是识别那些与大多数数据行为显著不同的样本。这些样本通常被称为「离群点」或「异常点」。
异常检测在金融风控中的价值
聊价值之前,我先说个真实案例。2019年我参与过一个支付公司的项目,他们每天处理几百万笔交易。传统规则引擎能拦截掉80%的欺诈,但剩下的20%全是「漏网之鱼」。后来我们上了异常检测模型,把漏报率从20%降到了3%以下。
为什么会这样?因为规则引擎只能抓「已知的已知」,而异常检测能发现「未知的未知」。
具体来说,异常检测在金融风控里有这几个核心价值:
- 实时拦截欺诈交易:比如盗刷、洗钱、套现。我见过最夸张的一次,一个异常检测模型在交易发生的0.3秒内就发出了警报。
- 识别账户盗用:用户登录地点、设备、行为习惯突然变化。我记得有个案例,用户账号在10分钟内从北京跳到纽约又跳到东京,这明显是团伙作案。
- 发现内部威胁:员工异常操作、数据泄露。我曾经帮一家银行做过内部审计,发现有个员工每天凌晨批量查询客户信息,后来证实是在倒卖数据。
- 辅助信用评估:异常申请行为往往意味着欺诈风险。比如短时间内频繁申请、资料前后矛盾。
我的经验:异常检测在风控里不是「银弹」,但它能补上规则引擎的短板。我建议把异常检测作为第二道防线,和规则引擎形成互补。
常见异常类型
异常不是铁板一块。根据数据结构和业务场景,我习惯把异常分成三类。你想想看,不同类型的异常,检测方法完全不一样。
1. 点异常(Point Anomalies)
这是最基础、最常见的异常类型。单个数据点本身就和整体分布差异巨大。
举个例子:某用户的月均消费是5000元,突然某天消费了50万元。这个50万就是点异常。
我在项目中遇到过最典型的点异常是「试探性交易」。黑产先用小额测试卡是否有效,然后突然来一笔大额。这种模式在信用卡盗刷里特别常见。
检测思路:统计分布、Z-Score、箱线图、孤立森林。说白了就是看这个点离「正常群体」有多远。
2. 上下文异常(Contextual Anomalies)
这种异常更有意思。单看数值可能完全正常,但放在特定上下文里就不对劲了。
比如:凌晨3点在ATM取款100元。100元本身没问题,凌晨3点这个时间点就有问题了。再比如,工作日白天在单位附近消费正常,但凌晨在夜店消费也正常。可如果反过来——工作日白天在夜店消费,凌晨在单位附近消费——这就异常了。
我记得有个电商平台的案例:一个用户平时只买日用品,突然买了一台服务器。单看金额不算大,但结合用户画像和购买历史,这就是典型的「账户被盗用」信号。
避坑指南:我曾经犯过一个错误——只关注数值本身,忽略了时间、地点、设备等上下文信息。后来发现,很多欺诈行为恰恰是利用了「正常数值+异常上下文」的组合。所以,上下文特征一定要做足。
3. 集合异常(Collective Anomalies)
这是最难检测的一类。单个点看起来完全正常,但一组数据组合起来就异常了。
举个例子:某个用户连续10天,每天消费金额都在100-200元之间,消费时间都在晚上8-10点,消费地点都在家附近。单看每一天都正常,但连续10天如此规律,反而可疑——这可能是机器人在刷单。
再比如洗钱场景:A给B转1000,B给C转1000,C给A转1000。单笔交易都正常,但形成闭环就是典型的「洗钱三角」。
我的建议:检测集合异常,不能只看单点特征。我习惯用序列模式挖掘、图算法、或者时序上的滑动窗口统计。说白了,你要看「群体行为」而不是「个体行为」。
知识体系总览
下面这张图是我自己梳理的异常检测知识框架。你可以把它当作本章的「地图」:
小结
异常检测不是一门「看完就能上手」的技术。它需要你理解业务、熟悉数据、选对方法。我个人觉得,最重要的不是算法有多炫酷,而是你能不能把「异常」这件事定义清楚。
你想想看,如果连「什么是正常」都没搞明白,你怎么可能找到「异常」?
下一章,我会带你深入异常检测的数学基础。到时候咱们聊聊距离度量、密度估计这些硬核内容。
公众号:蓝海资料掘金营,微信deep3321