因果发现 针对时序数据的因果图学习
Posted 叶庭云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了因果发现 针对时序数据的因果图学习相关的知识,希望对你有一定的参考价值。
文章目录
CSDN 叶庭云:https://yetingyun.blog.csdn.net/
一、任务
This track focuses on solving a causal structure learning problem in AIOps.
AIOps 相关:主要目标是从事件序列数据中挖掘因果图关系,并辅助定位根因。
- 主要需要解决的是智能运维 AIOps 领域中的因果结构学习问题。目标是挖掘连续时间事件序列中的因果图关系。获取因果图信息可以更好地理解实体之间的关系,能够辅助管理员快速定位实际系统故障的根本原因。
- 在电信网络中,异常现象通常是通过告警来识别的,由于网络的规模和系统内部相互关联的结构,运营商每天可能面临数以百万计的警报。网络中的单个故障可能会在多个相连的设备上触发大量的各种类型的告警,运营商期望能从告警风暴中快速定位到故障根源,然而实现这样的目标是非常困难的,需要学习到告警间的因果图关系提供给管理员进行快速排障。
- 在这个赛道中需要学习到告警事件间的因果图关系,其中每个节点是从一些可观测的历史告警数据集得出的告警类型,因果图可用于对最重要和最相关的告警进行优先排序,然后提供给管理员参考以此来更加高效地定位到告警的故障根源。
二、数据集说明
所有数据集都是来自现实世界的工业数据或基于专业知识的实际因果假设生成的。告警类型的因果图在竞赛中被限定为:有向、无环,但是因果识别和潜在变量的问题可能仍然存在。
- 数据集地址及基线:https://github.com/gcastle-hub/dataset
- 数据集说明:https://competition.huaweicloud.com/information/1000041487/circumstance
竞赛提供了 24 个数据集,其中 12 个包含了网络拓扑信息其它 12 个不包含网络拓扑信息。每个数据集文件夹中包含以下文件:
Alarm.csv 历史告警数据集
- 格式:[alarm_id, device_id, start_timestamp, end_timestamp]
- alarm_id 表示告警类型,device_id 表示告警所在设备,分别将其编码所得值为 [ 0 , N − 1 ] [0,\\ N-1] [0, N−1] 和 [ 0 , M − 1 ] [0,\\ M-1] [0, M−1],其中 N N N 表示告警类型总数, M M M 表示设备总数。
- 数据示例:
Topology.npy 设备间拓扑关系图(有的数据中并不包含)
- 格式: M ∗ M M * M M∗M 大小的的 Numpy 数组
- 设备连接关系对应的无向图,二进制对称邻接矩阵,元素值为 1 表示存在连接关系,0 表示不存在连接关系。
- 数据示例:
DAG.npy 真实因果图
- 格式: N ∗ N N * N N∗N 大小的 NumPy 数组
- 告警事件因果关系的有向图
- 数据示例:
目标任务:给定以上数据集,使用历史告警数据和设备拓扑图(可能没有)来学习到告警类型间的因果图。
比赛使用 g − s c o r e g-score g−score 作为评价指标,计算公式如下图所示:
g-score = max ( 0 , ( T P − F P ) ) T P + F N \\text g-score =\\frac\\max (0,\\ (T P-F P))T P+F N g-score =TP+FNmax(0, (TP−FP))
最后排名分数是 K K K 个数据集中 g − s c o r e g-score g−score 的平均值:
- TP(True Positive):正确预测的边;
- FP(False Positive):预测存在但真实因果图中不存在的边;
- FN(False Negative):预测不存在但真实因果图存在的边;
三、专业名词
因果发现(Causal Discovery):发现因果关系的传统方法是使用干预措施或随机实验,这在很多情况下过于昂贵,过于耗时,甚至不可能。通过分析纯粹的观察性数据来揭示因果信息,即所谓的因果发现。
- 基于约束的因果发现方法。基于约束的因果发现方法主要基于独立性和条件独立性检测判断变量之间的统计关系,并在一定的假设下先获得无向因果图。之后利用 V-structure 和一系列方向传播规则对因果图中的无向边进行方向传播。其经典方法包括 PC 算法,能够处理隐变量(混淆变量)的 FCI 算法 ,以及能够处理异构数据的 CD-NOD 算法。
- 基于评分的因果发现方法。基于评分的方法通过对候选模型(即候选因果图)进行评分的方式,来选取评分最高的因果图作为结果。经典方法包括 GES 以及一系列通过改变评分函数来适应不同任务的扩展方法,例如基于通用评分函数的因果发现方法。此外,对于实际情况中 Faithfulness 假设不满足的情景,Exact Search 可提供可靠的马尔科夫等价类。
- 基于约束性函数因果模型的因果发现方法。基于约束性函数因果模型的因果方法通过假设结果和原因之间的函数关系类别,从而判断其间的方向。经典方法包括线性非高斯无环模型,加性噪声模型和后非线性模型。近期通过对混合函数进行限制从而得到非线性独立成分分析的可识别性的理论也为通用的非线性的因果发现提供了新的方法。
- 因果隐表征学习。因果隐表征学习专注于隐变量与观测变量间的关系以及隐变量间的关系,经典工作包括 GIN 以及层级化隐变量学习。
因果发现 / / /因果推断工具:DoWhy、Causal-Learn、YLearn、CausalNex、Causal ML
因果结构学习工具链:华为诺亚方舟实验室 gCastle
多元异构时序数据:即包含多种数据类型(数值、类别、布尔型等),多种因果产生机制等
因果图学习:图形化模型作为一种描述因果关系的语言,便于彼此更好地理解和表达对因果关系的想法。因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,适合于检查程序输入条件涉及的各种组合情况。
因果隐变量检测:现实场景中,经常有许多存在隐变量的情况,隐变量是影响因果发现算法精度的一大核心要素。如果数据是线性非高斯的,可将独立噪声条件(IN)扩展到广义独立噪声条件(GIN),通过找到隐变量的代理变量做回归,恢复数据的因果结构。但这种方法的局限性在于其认为观测变量之间没有边,无法推断变量之间完整的因果关系,在此基础上可以利用面向不完全观察数据的因果结构学习算法(FRITL 算法)做进一步的优化。当前因果隐变量检测技术对数据的产生机制有较强假设,且大都只能应对线性因果场景,针对工业界的复杂因果场景很难落地实施。
因果推断是统计学领域非常经典的一个问题,旨在利用指标间的因果关系和拓扑图,找到统计学上的根因,结论通常是因果图上的某个节点(KPI 指标)而且事先定义的明确的根因类型 or 某条根因路径(Path)。因果推断领域存在着两大基本框架:PotentialOutcomeFramework(POF)潜在结果框架和 StructuralCausalModel(SCM)结构因果模型,两者的利器分别是控制变量和因果图。典型算法包括 IBM 的 CloudRanger,OM Graph 以及 FluxInfer 等,这些算法在构建因果图阶段主要都使用了经典的 PC Algorithm,而在推断阶段则使用了各不相同的搜索方式例如 Random Walk 随机游走、BFS 或是 PageRank,得到的根因形式也不尽相同。
参考链接:
- PCIC 2021 | 华为 & 北京大学因果推理挑战赛
- 知乎 VoidOc | 时间序列异常检测(四)—— 根因定位落地实践
- bilibili 视频 | 蔡瑞初老师:基于观测数据的因果发现及因果性学习
- 蔡瑞初老师 | 基于观测数据的因果发现及因果性学习
- 集智百科 | 面向因果规律的表示学习新方法—因果表征学习最新攻略
- 集智百科 | 因果发现
以上是关于因果发现 针对时序数据的因果图学习的主要内容,如果未能解决你的问题,请参考以下文章