异常根因分析的信息论方法
异常值是指系统偏离常规行为的罕见观测值,常见于医疗、金融等实际应用场景。与普通事件相比,异常事件更需要得到合理解释。在机器学习国际会议(ICML)上,我们提出了一种识别异常根本原因的新方法。
定义量化因果贡献
首先需要形式化定义"根本原因"的概念。我们的定义包含对观测异常各根本原因量化因果贡献的形式化描述,即变量对异常事件的责任程度。该方法基于图因果模型框架——由图灵奖得主Judea Pearl开发的用于建模系统变量间因果关系的形式化框架。
核心组成要素
- 因果图:以可视化方式表示观测变量间的因果关系,箭头从原因节点指向结果节点
- 因果机制集合:描述每个节点值如何从其父节点(直接原因)的值生成
以零售网站分布式web服务为例:当客户遇到异常缓慢的加载时间时,需要确定是后端数据库缓慢还是购买服务故障导致的。
信息论异常评分
我们首先引入信息论(IT)异常评分,通过概率校准将现有异常评分标准化。该评分基于尾概率概念(随机变量超过阈值的概率),事件IT异常评分是经过某种变换后事件尾概率的负对数。其灵感来自克劳德·香农在信息论中对随机事件信息内容的定义。
反事实推理
通过反事实问题"如果该变量的因果机制正常,该事件是否不会成为异常?“来归因异常事件。这需要功能因果模型(FCM)作为变量的因果机制。
在FCM中,每个变量Xj是其观测父节点PAj和未观测噪声变量Nj的函数。通过随机分配正常确定性机制给Xj,我们可以将其解释为对观测变量的干预。
消除排序依赖性
通过计算所有排序的平均贡献(基于博弈论中Shapley值的思想)来消除变量排序的依赖性。Shapley贡献之和等于异常事件的IT异常评分。
实际应用案例
在零售网站示例中,web服务间的依赖关系通常以依赖图形式存在。通过反转依赖图中的箭头,我们获得服务的延迟因果图。从观测延迟的训练样本中学习因果机制,也可直接使用领域专业知识建立。该方法可将特定客户端缓慢加载时间归因于web服务中最可能的根本原因。
实现资源
该方法已在Python DoWhy库的"gcm"包中实现,并提供示例notebook供快速入门。