4. 阈值设定方法论:经验法则、统计控制图法、极值理论(EVT)入门、机器学习方法简介
告警阈值的设定是精算模型监控的核心环节。阈值设定过低会导致大量误报,增加运营成本;阈值设定过高则可能漏报真实风险,造成重大损失。本章系统介绍四种主流方法论,从简单到复杂,帮助精算师根据数据特征和业务场景选择最合适的方案。
核心观点:没有一种方法适用于所有场景。经验法则适合快速部署,统计控制图法适合稳态过程,极值理论适合罕见极端事件,机器学习方法适合高维复杂模式。实际应用中常采用组合策略。
4.1 经验法则
经验法则基于数据分布的基本统计量,计算简单、易于解释,是阈值设定的起点。最常用的方法包括均值-标准差法和百分位数法。
| 方法 | 公式 | 适用场景 | 局限性 |
|---|---|---|---|
| 均值±kσ | μ ± k × σ | 近似正态分布数据 | 对异常值敏感,非正态分布效果差 |
| 百分位数法 | P99、P99.5、P99.9 | 偏态分布、厚尾分布 | 需要足够历史数据,极端分位数不稳定 |
| MAD法 | 中位数 ± k × MAD | 含异常值的稳健估计 | 对对称分布效率较低 |
| IQR法 | Q1 - 1.5×IQR, Q3 + 1.5×IQR | 箱线图异常检测 | 仅适用于单变量,阈值较宽松 |
精算实践提示:在损失准备金监控中,建议先使用均值±3σ作为初始阈值,运行一个月后根据误报率调整k值。对于赔付率等偏态指标,优先使用P99百分位数。
# Python 经验法则阈值计算示例
import numpy as np
def empirical_thresholds(data, method='zscore', k=3):
if method == 'zscore':
mu, sigma = np.mean(data), np.std(data)
return mu - k*sigma, mu + k*sigma
elif method == 'percentile':
return np.percentile(data, [0.5, 99.5])
elif method == 'mad':
median = np.median(data)
mad = np.median(np.abs(data - median))
return median - k*mad, median + k*mad
4.2 统计控制图法
统计过程控制(SPC)图将阈值设定与时间序列动态结合,能够区分普通原因变异和特殊原因变异。精算监控中最常用的控制图包括Shewhart图、CUSUM图和EWMA图。
| 控制图类型 | 检测能力 | 参数设置 | 精算应用场景 |
|---|---|---|---|
| Shewhart | 大偏移(≥1.5σ) | 中心线μ,控制限μ±3σ | 月度赔付率突变检测 |
| CUSUM | 持续小偏移(0.5-1.5σ) | 参考值k=0.5σ,决策限h=4σ | 准备金充足率趋势监控 |
| EWMA | 渐进式变化 | 平滑系数λ=0.2,控制限L=3 | 费用率缓慢上升检测 |
注意事项:控制图假设数据独立同分布。精算指标常存在自相关(如相邻月份的赔付额),使用前需进行差分或ARIMA建模去除自相关,否则会导致控制限过窄、误报率飙升。
4.3 极值理论(EVT)入门
极值理论专注于建模分布的尾部行为,是设定极端事件告警阈值的理论基石。精算中常见的极端损失、巨灾赔付等场景,EVT比经验法则更准确地估计高分位数阈值。
两种主流建模方法:
- BMM(Block Maxima Method):将数据分块,取每块最大值,拟合广义极值分布(GEV)。适合年度最大损失等场景。
- POT(Peaks Over Threshold):选取超过某个高阈值的所有观测值,拟合广义帕累托分布(GPD)。更高效利用数据,是精算实务首选。
# Python EVT-POT 阈值设定示例
import numpy as np
from scipy.stats import genpareto
def evt_threshold(data, exceedance_prob=0.001):
# 步骤1:选择初始阈值(通常为90%-95%分位数)
u = np.percentile(data, 95)
# 步骤2:提取超阈值数据
exceedances = data[data > u] - u
# 步骤3:拟合GPD分布
params = genpareto.fit(exceedances)
# 步骤4:计算高分位数阈值
n = len(data)
nu = len(exceedances)
VaR = u + (params[1]/params[0]) * ((n/nu * exceedance_prob)**(-params[0]) - 1)
return VaR
精算实践提示:POT方法中初始阈值u的选择是关键。使用平均超额函数图(MEF)辅助选择:在MEF图趋于线性处选取u。阈值过高导致方差大,阈值过低导致偏差大。
4.4 机器学习方法简介
当精算指标维度高、关系复杂、存在非线性模式时,机器学习方法能够自动学习正常模式并动态调整阈值。主要方法包括孤立森林、自编码器和One-Class SVM。
| 方法 | 核心思想 | 优势 | 精算适用场景 |
|---|---|---|---|
| 孤立森林 | 异常点更容易被孤立 | 线性时间复杂度,适合高维数据 | 多险种赔付异常检测 |
| 自编码器 | 重构误差作为异常分数 | 捕捉复杂非线性模式 | 欺诈检测、费用异常模式 |
| One-Class SVM | 在高维空间寻找决策边界 | 适合小样本、高维数据 | 新产品线初期监控 |
| XGBoost+SHAP | 监督学习+可解释性 | 可解释性强,特征重要性明确 | 需要解释告警原因的场景 |
实践建议:机器学习方法需要更多数据和调参经验。建议从孤立森林入手,设置异常比例参数contamination=0.01(即1%的异常率),然后根据业务反馈调整阈值。对于精算合规场景,务必保留SHAP等可解释性输出,便于向监管说明阈值设定依据。
4.5 方法选择决策框架
面对实际业务场景,精算师需要根据数据特征、业务需求和资源约束选择合适的方法。以下决策树提供系统化的选择路径:
- 数据量是否充足?(<100个样本 → 经验法则;≥100 → 继续)
- 是否关注极端事件?(是 → EVT;否 → 继续)
- 数据是否独立?(否 → 控制图法;是 → 继续)
- 是否需要解释性?(是 → XGBoost+SHAP;否 → 孤立森林/自编码器)
最终提醒:无论选择哪种方法,阈值设定后必须经过回测验证。建议使用滚动窗口回测,计算实际告警率与理论预期告警率的偏差。若偏差超过20%,需重新调整参数或更换方法。阈值不是一成不变的,应建立季度/年度回顾机制。