QIAN
数据
6
月
9
日
2026年
先验直觉:反欺诈模型升级了,欺诈率应该永久下降才对。但做反欺诈的人都经历过——每次升级后,欺诈率确实跌一阵,然后莫名其妙地反弹回来了。 不是模型不够好,不是对手太狡猾,是两个物种的数学宿命:捕食者和猎物永远会振荡,谁也消灭不了谁。
一、引言:反欺诈升级后的"怪圈"
某支付公司的反欺诈团队在2023年部署了新一代图神经网络模型。效果立竿见影:
"怎么回事?模型退化了?"团队陷入了困惑。他们重新训练、调参、加特征——欺诈率又降了。然后,又反弹了。
这不是模型问题。这是Lotka-Volterra捕食-猎物模型在现实中的精确复现:
二、Lotka-Volterra模型:从亚得里亚海的鱼群到信贷反欺诈
2.1 捕食-猎物模型的起源
1925年,美国数学家阿尔弗雷德·洛特卡(Alfred Lotka)在研究化学反应的振荡现象时,提出了一个描述两个物种相互作用的数学模型。几乎同时,意大利数学家维托·沃尔泰拉(Vito Volterra)独立提出了完全相同的模型——他的动机是解释亚得里亚海渔获量的周期性波动。
两位数学家发现:捕食者和猎物的种群数量不是随机变化的,而是按照精确的数学规律周期性振荡。
核心洞察:捕食者多了→猎物减少→捕食者饿死→捕食者减少→猎物恢复→捕食者增多→循环。
2.2 映射到欺诈场景
2.3 方程形式
Lotka-Volterra模型由两个耦合的一阶微分方程组成:
其中 = 欺诈活动强度, = 反欺诈系统强度。
关键洞察:平衡点的欺诈水平 不依赖于初始条件,只取决于系统参数。 也就是说,无论反欺诈团队投入多少资源,欺诈活动的长期平均强度由反欺诈效率()和欺诈学习能力()的相对大小决定。
三、Lotka-Volterra方程的数学性质
3.1 守恒量
Lotka-Volterra系统有一个守恒量(运动常数):
这个值在整个演化过程中保持不变。意味着系统的运动轨迹是封闭的——不是收敛到平衡点,而是围绕平衡点做周期性振荡。
这与直觉相反:你可能会以为系统最终会"稳定下来"(欺诈被消灭或达到均衡),但数学证明它永远在振荡。
3.2 为什么无法消灭欺诈
从方程结构可以看出:
四、Python:Lotka-Volterra 欺诈-反欺诈模拟
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.font_manager as fmplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus'] = Falsenp.random.seed(42)# ===== 4.1 Lotka-Volterra 模拟 =====deflotka_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, y0for i inrange(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 * dyif x[i] < 0: x[i] = 0if y[i] < 0: y[i] = 0return 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 / deltay_eq = alpha / betaprint("=" * 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 inrange(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.02 23.2 10.24 12.1 10.26 8.2 9.48 9.7 8.610 15.5 8.512 22.9 10.014 23.2 11.916 16.2 12.518 9.9 11.520 8.2 10.1后20个月的平均值: 欺诈(x): 10.58 反欺诈(y): 9.94 理论平衡点: x*=10.7, y*=10.0
图释:红线为欺诈活动强度,蓝线为反欺诈系统强度。两者围绕平衡点做周期性振荡——反欺诈升级后欺诈下降,但欺诈改变手法后反弹,循环往复。这正是Lotka-Volterra方程的典型行为。
# ===== 4.2 参数敏感性分析 =====defanalyze_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 inzip(gammas, results):print(f"{g:<15.1f}{ax:<15.2f}")print("\n结论:")print(" 提高反欺诈效率(γ) → 降低平均欺诈水平")print(" 但欺诈不会被消灭——只要x>0就会重新增长")print(" → 反欺诈的目标不是"消灭"欺诈,而是把平衡点压到可接受的水平")analyze_gamma_effect()预期输出:
=============================================反欺诈效率(γ)对平均欺诈水平的影响=============================================γ (反欺诈效率) x* (平均欺诈)-------------------------------0.4 14.180.6 12.660.8 10.581.0 8.411.2 5.871.4 3.121.6 1.43结论: 提高反欺诈效率(γ) → 降低平均欺诈水平 但欺诈不会被消灭——只要x>0就会重新增长 → 反欺诈的目标不是"消灭"欺诈,而是把平衡点压到可接受的水平
图释:左图为三条不同参数下的极限环——欺诈和反欺诈的关系不是"一方压倒另一方",而是围绕平衡点的周期性运动。右图显示反欺诈效率(γ)与平均欺诈水平的关系——γ越高,欺诈平衡点越低,但永远大于0。
五、风控场景还原:某支付公司的"反欺诈升级→反弹"循环
某第三方支付公司的反欺诈团队经历了一个典型的Lotka-Volterra周期:
这个循环不是"反欺诈不给力",而是Lotka-Volterra方程在现实中的精确复现。
关键参数在每一轮中的变化:
美国支付平台Zelle经历了一个典型的LV周期:
六、数学文化:洛特卡与沃尔泰拉——两位互不相识的伟大发现
维托·沃尔泰拉(Vito Volterra,1860-1940)是意大利数学家、物理学家。第一次世界大战后,亚得里亚海的渔获量出现了一个奇怪现象:鲨鱼等捕食性鱼类的比例增加了,而食用鱼(猎物)的比例减少了。
沃尔泰拉的数学家女婿(Umberto D'Ancona)向他请教这个现象。沃尔泰拉建立了第一个生物数学模型——这就是后来被称为Lotka-Volterra方程的捕食-猎物模型。
他甚至预测:如果减少捕鱼量,捕食性鱼类的比例反而会下降(这违反直觉)。后续统计证实了这个预测。
阿尔弗雷德·洛特卡(Alfred Lotka,1880-1949)是一位美国生物物理学家。他一直在研究化学反应的自振荡现象,并发现相同的数学结构可以描述捕食者-猎物的相互作用。
两人独立发现了同一组方程——这是科学史上最著名的"同时发现"案例之一。
Lotka-Volterra方程的应用已远远超出生态学:
七、关键要点
Lotka, A. J. (1925). Elements of Physical Biology. Williams & Wilkins.
Volterra, V. (1926). Variazioni e fluttuazioni del numero d'individui in specie animali conviventi. Mem. R. Accad. Naz. dei Lincei, 2, 31-113.
Kingsland, S. (1995). Modeling Nature: Episodes in the History of Population Ecology. University of Chicago Press.
Berryman, A. A. (1992). The origins and evolution of predator-prey theory. Ecology, 73(5), 1530-1535.
© QianStat_data