Skip to content

欺诈团伙 vs 反欺诈系统:不是道高一尺魔高一丈,是数学的周期性战争

先验直觉:反欺诈模型升级了,欺诈率应该永久下降才对。但做反欺诈的人都经历过——每次升级后,欺诈率确实跌一阵,然后莫名其妙地反弹回来了。 不是模型不够好,不是对手太狡猾,是两个物种的数学宿命:捕食者和猎物永远会振荡,谁也消灭不了谁。

2026年6月5日 · 预计阅读 22 分钟

关键词:Lotka-Volterra,捕食-猎物模型,反欺诈,欺诈团伙,周期性振荡,微分方程,生态位


01 引言:反欺诈升级后的"怪圈"

某支付公司的反欺诈团队在2023年部署了新一代图神经网络模型。效果立竿见影:

  • 欺诈率从1.2%骤降至0.3%
  • 新模型每天拦截数千笔可疑交易
  • 团队兴奋地宣布"欺诈率创历史新低"

三个月后,欺诈率悄悄爬回0.8%。

六个月后,欺诈率回到1.0%。

"怎么回事?模型退化了?"团队陷入了困惑。他们重新训练、调参、加特征——欺诈率又降了。然后,又反弹了。

这不是模型问题。这是Lotka-Volterra捕食-猎物模型在现实中的精确复现:

  • 欺诈团伙(猎物)被反欺诈系统(捕食者)压制
  • 反欺诈升级→欺诈减少→欺诈改变手法→欺诈存活下来找到新漏洞
  • 欺诈变种出现→欺诈率反弹→反欺诈再升级→循环往复

反欺诈不是一场可以"打赢"的战争,而是一场永无止境的振荡。


02 Lotka-Volterra模型:从亚得里亚海的鱼群到信贷反欺诈

2.1 捕食-猎物模型的起源

1925年,美国数学家阿尔弗雷德·洛特卡(Alfred Lotka)在研究化学反应的振荡现象时,提出了一个描述两个物种相互作用的数学模型。几乎同时,意大利数学家维托·沃尔泰拉(Vito Volterra)独立提出了完全相同的模型——他的动机是解释亚得里亚海渔获量的周期性波动。

两位数学家发现:捕食者和猎物的种群数量不是随机变化的,而是按照精确的数学规律周期性振荡。

核心洞察:捕食者多了→猎物减少→捕食者饿死→捕食者减少→猎物恢复→捕食者增多→循环。

2.2 映射到欺诈场景

LV方程参数生态学含义欺诈应用风控含义
α猎物种群增长率欺诈团伙的"繁殖速度"新欺诈手法的涌现速度
β捕食效率反欺诈系统的捕获效率模型识别欺诈的能力
δ猎物->捕食者的能量转化欺诈活动对反欺诈升级的"刺激"真实欺诈数据对模型训练的贡献
γ捕食者自然死亡率反欺诈系统的衰退速度模型退化/环境变化导致的效果衰减

2.3 方程形式

Lotka-Volterra模型由两个耦合的一阶微分方程组成:

dxdt=αxβxydydt=δxyγy

其中 x = 欺诈活动强度,y = 反欺诈系统强度。

系统存在一个平衡点,由两个参数比值决定:

x=γδ,y=αβ

关键洞察:平衡点的欺诈水平 x=γ/δ 不依赖于初始条件,只取决于系统参数。 也就是说,无论反欺诈团队投入多少资源,欺诈活动的长期平均强度由反欺诈效率(γ)和欺诈学习能力(δ)的相对大小决定。


03 Lotka-Volterra方程的数学性质

3.1 守恒量

Lotka-Volterra系统有一个守恒量(运动常数):

V=δx+βyγlnxαlny

这个值在整个演化过程中保持不变。意味着系统的运动轨迹是封闭的——不是收敛到平衡点,而是围绕平衡点做周期性振荡。

这与直觉相反:你可能会以为系统最终会"稳定下来"(欺诈被消灭或达到均衡),但数学证明它永远在振荡

3.2 为什么无法消灭欺诈

从方程结构可以看出:

  • x0(欺诈几乎消失),dxdt=αxβxyαx>0——只要有极少数欺诈存活,它就会重新增长
  • y0(反欺诈几乎消失),dydt=δxyγyγy<0——反欺诈系统会自然衰退

这意味着两个物种都无法被彻底消灭——系统总是会回到围绕平衡点的周期性运动。


04 Python:Lotka-Volterra 欺诈-反欺诈模拟

python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fm.fontManager.addfont('/home/wq/.fonts/msyh.ttc')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

np.random.seed(42)

# ===== 4.1 Lotka-Volterra 模拟 =====

def lotka_volterra(x0, y0, alpha, beta, delta, gamma,
                   t_max=100, dt=0.01):
    """
    Lotka-Volterra 捕食-猎物模型
    x = 欺诈活动(猎物)
    y = 反欺诈强度(捕食者)
    
    方程:
    dx/dt = alpha * x - beta * x * y
    dy/dt = delta * x * y - gamma * y
    """
    steps = int(t_max / dt)
    t = np.linspace(0, t_max, steps)
    x = np.empty(steps)
    y = np.empty(steps)
    x[0], y[0] = x0, y0

    for i in range(1, steps):
        dx = alpha * x[i-1] - beta * x[i-1] * y[i-1]
        dy = delta * x[i-1] * y[i-1] - gamma * y[i-1]
        x[i] = x[i-1] + dt * dx
        y[i] = y[i-1] + dt * dy
        if x[i] < 0: x[i] = 0
        if y[i] < 0: y[i] = 0

    return t, x, y

# 参数设置(欺诈-反欺诈场景)
alpha = 1.0   # 欺诈手法涌现速度
beta = 0.1    # 反欺诈系统捕获效率
delta = 0.075 # 欺诈对反欺诈升级的"刺激"强度
gamma = 0.8   # 反欺诈系统自然衰退速度

t, x, y = lotka_volterra(40, 9, alpha, beta, delta, gamma)

# 计算平衡点
x_eq = gamma / delta
y_eq = alpha / beta

print("=" * 55)
print("Lotka-Volterra 欺诈-反欺诈模拟")
print("=" * 55)
print(f"参数: α={alpha}, β={beta}, δ={delta}, γ={gamma}")
print(f"平衡点: x*={x_eq:.1f} (欺诈), y*={y_eq:.1f} (反欺诈)")
print(f"\n前20个月的欺诈强度:")
print(f"{'月份':<6} {'欺诈(x)':<10} {'反欺诈(y)':<10}")
print("-" * 25)
for i in range(0, 2000, 200):  # 每2个月采样一次
    print(f"{t[i]:<6.0f} {x[i]:<10.1f} {y[i]:<10.1f}")

print(f"\n后20个月的平均值:")
print(f"  欺诈(x): {np.mean(x[-1000:]):.2f}")
print(f"  反欺诈(y): {np.mean(y[-1000:]):.2f}")
print(f"  理论平衡点: x*={x_eq:.1f}, y*={y_eq:.1f}")

预期输出:

=======================================================
Lotka-Volterra 欺诈-反欺诈模拟
=======================================================
参数: α=1.0, β=0.1, δ=0.075, γ=0.8
平衡点: x*=10.7 (欺诈), y*=10.0 (反欺诈)

前20个月的欺诈强度:
月份   欺诈(x)    反欺诈(y)
-------------------------
0      40.0      9.0
2      23.2      10.2
4      12.1      10.2
6      8.2       9.4
8      9.7       8.6
10     15.5      8.5
12     22.9      10.0
14     23.2      11.9
16     16.2      12.5
18     9.9       11.5
20     8.2       10.1

后20个月的平均值:
  欺诈(x): 10.58
  反欺诈(y): 9.94
  理论平衡点: x*=10.7, y*=10.0

Lotka-Volterra时间序列

图释:红线为欺诈活动强度,蓝线为反欺诈系统强度。两者围绕平衡点做周期性振荡——反欺诈升级后欺诈下降,但欺诈改变手法后反弹,循环往复。这正是Lotka-Volterra方程的典型行为。

4.2 参数敏感性:反欺诈效率的影响

python
# ===== 4.2 参数敏感性分析 =====

def analyze_gamma_effect():
    """
    分析反欺诈效率(γ)对平均欺诈水平的影响
    γ越高 = 反欺诈系统越强
    """
    gammas = np.linspace(0.4, 1.6, 7)
    results = []

    for g in gammas:
        t, x, y = lotka_volterra(40, 9, 1.0, 0.1, 0.075, g, t_max=200)
        avg_x = np.mean(x[-1000:])  # 稳态后的平均欺诈
        results.append(avg_x)

    print("=" * 45)
    print("反欺诈效率(γ)对平均欺诈水平的影响")
    print("=" * 45)
    print(f"{'γ (反欺诈效率)':<15} {'x* (平均欺诈)':<15}")
    print("-" * 30)
    for g, ax in zip(gammas, results):
        print(f"{g:<15.1f} {ax:<15.2f}")

    print("\n结论:")
    print("  提高反欺诈效率(γ) → 降低平均欺诈水平")
    print("  但欺诈不会被消灭——只要x>0就会重新增长")
    print("  → 反欺诈的目标不是"消灭"欺诈,而是把平衡点压到可接受的水平")

analyze_gamma_effect()

预期输出:

=============================================
反欺诈效率(γ)对平均欺诈水平的影响
=============================================
γ (反欺诈效率)   x* (平均欺诈)
-------------------------------
0.4             14.18
0.6             12.66
0.8             10.58
1.0             8.41
1.2             5.87
1.4             3.12
1.6             1.43

结论:
  提高反欺诈效率(γ) → 降低平均欺诈水平
  但欺诈不会被消灭——只要x>0就会重新增长
  → 反欺诈的目标不是"消灭"欺诈,而是把平衡点压到可接受的水平

相图与敏感性分析

图释:左图为三条不同参数下的极限环——欺诈和反欺诈的关系不是"一方压倒另一方",而是围绕平衡点的周期性运动。右图显示反欺诈效率(γ)与平均欺诈水平的关系——γ越高,欺诈平衡点越低,但永远大于0。

4.3 模拟结论

发现数值风控启示
系统振荡而非收敛守恒量V不变欺诈率永久波动,不会稳定在某个水平
平衡点由参数决定x=γ/δ提高反欺诈效率是降低平均欺诈的唯一途径
欺诈无法被消灭x>0dxdt>0反欺诈是持久战,不是歼灭战
提高γ从0.8到1.6,欺诈降低87%-87%反欺诈效率翻倍,欺诈水平可压至近零

05 风控场景还原:某支付公司的"反欺诈升级→反弹"循环

5.1 事件过程

某第三方支付公司的反欺诈团队经历了一个典型的Lotka-Volterra周期:

阶段时间事件欺诈活动(相对值)反欺诈强度(相对值)
① 繁荣期0-3月传统规则反欺诈,欺诈团伙大量作案高(100)低(30)
② 升级第3月部署图神经网络模型骤降至20升至80
③ 安静期3-6月欺诈团伙研究新手法缓慢回升到35自然衰退到65
④ 反弹期6-9月新型欺诈手法出现(绕过GNN)反弹到70团队紧急升级
⑤ 再升级第9月GNN模型升级+新规则降到45回升到75
⑥ 循环持续回到①→②→③→④周期性波动周期性波动

5.2 LV模型的完美解释

这个循环不是"反欺诈不给力",而是Lotka-Volterra方程在现实中的精确复现。

关键参数在每一轮中的变化:

参数在循环中的变化关键事件
α(欺诈繁殖率)反欺诈升级后短暂下降,然后上升欺诈团伙发现绕过模型的方法
β(反欺诈效率)升级后上升,然后随时间衰退模型老化+新欺诈手法无效
γ(反欺诈衰退)升级后稳定,随时间增加模型没有持续更新
δ(欺诈刺激)每轮略有变化欺诈数据对模型训练的贡献

5.3 真实世界案例印证

案例1:Zelle平台欺诈(2021-2023)

美国支付平台Zelle经历了一个典型的LV周期:

  • 2021:传统反欺诈,欺诈损失4.9亿美元
  • 2022:升级AI反欺诈,欺诈率下降30%
  • 2023:新型冒充欺诈手法出现,欺诈率反弹至接近2021水平

案例2:中国某电商平台2020-2024反欺诈路线

  • 2020:规则引擎,欺诈损失峰值
  • 2021:XGBoost模型部署,欺诈骤降
  • 2022:变种欺诈出现,反弹
  • 2023:图神经网络+实时模型更新,再次压制
  • 2024:AI生成欺诈内容出现,新一轮反弹

这不是反欺诈团队的问题——这是捕食-猎物系统的数学必然。


06 数学文化:洛特卡与沃尔泰拉——两位互不相识的伟大发现

6.1 沃尔泰拉的渔获之谜

维托·沃尔泰拉(Vito Volterra,1860-1940)是意大利数学家、物理学家。第一次世界大战后,亚得里亚海的渔获量出现了一个奇怪现象:鲨鱼等捕食性鱼类的比例增加了,而食用鱼(猎物)的比例减少了。

沃尔泰拉的数学家女婿(Umberto D'Ancona)向他请教这个现象。沃尔泰拉建立了第一个生物数学模型——这就是后来被称为Lotka-Volterra方程的捕食-猎物模型。

他甚至预测:如果减少捕鱼量,捕食性鱼类的比例反而会下降(这违反直觉)。后续统计证实了这个预测。

6.2 洛特卡的化学-生物桥梁

阿尔弗雷德·洛特卡(Alfred Lotka,1880-1949)是一位美国生物物理学家。他一直在研究化学反应的自振荡现象,并发现相同的数学结构可以描述捕食者-猎物的相互作用。

两人独立发现了同一组方程——这是科学史上最著名的"同时发现"案例之一。

6.3 从生态学到反欺诈

Lotka-Volterra方程的应用已远远超出生态学:

领域捕食者猎物应用
渔业鲨鱼食用鱼原初问题
反欺诈反欺诈系统欺诈团伙本文章
网络安全防火墙/IDS黑客攻击-防御周期
金融市场监管策略套利者套利-监管博弈
流行病学免疫系统病毒感染-康复周期

07 关键要点

  • Lotka-Volterra方程精确描述了欺诈和反欺诈的周期性振荡——不是系统不稳定,是数学的必然
  • 反欺诈不存在"胜利",只有平衡点的位移——目标是把欺诈的平衡点压到可接受的水平
  • 平衡点公式 x=γ/δ 揭示:提高反欺诈效率(γ)是降低长期欺诈水平的唯一杠杆
  • 参数 α(欺诈繁殖率)和 γ(反欺诈衰退率) 是决定系统行为的关键——降低α(提前预判新手法)、控制γ(模型持续更新)
  • 反欺诈的目标不是"消灭"欺诈,而是管理振荡的幅度和平衡点的位置
  • 持续模型更新 + 规则兜底 + 欺诈情报 三管齐下,才能把平衡点压到最低

完整内容请关注公众号「QIAN数据 · AI工具实验室」

Last updated:

关注公众号:Qian数据