Skip to content
RATH
发现因果关系
因果分析

因果发现与解释验证

什么是因果分析?

因果分析(Causal Analysis)是分析彼此之间的因果关系 因果分析是数据分析、数据科学中重要的方法。

RATH 的因果分析模块

  • 扩展了更多效果较好的因果发现算法。
  • 增加了因果推断和因果假设验证相关的算法和功能。
  • 增强了可解释性,并能够分析个别具体数据背后的原因与影响权重。
  • 因果模块内新增嵌套的机器学习模块。可以结合因果模型测试机器学习模型的特征选择策略。

案例分析:Kaggle糖尿病研究数据集

这里我们以kaggle上的一个研究糖尿病的数据集 (opens in a new tab)为例,该数据集收集了一些志愿者各项生理指标数据,以及是否有患糖尿病的信息。导入数据集后,可以看到数据的大致分布。这里由于我们发现了数据中可能存在一些脏数据:BMI、血压、皮肤厚度等指标存在0的情况,所以使用RATH的清洗和筛选功能,把他们快速剔除掉。

完成数据准备后,点击开始分析中的“因果分析”选项,进入因果分析界面。

第一步:因果数据集配置

进入因果分析模块后,第一步是进行因果分析的相关配置,可以选择自己关心的变量或数据子集进行更加针对性的分析。完成配置后,点击继续进入下一步。(RATH通常会帮助你进行默认的配置,多数情况下你可以直接点击继续) Causal analysis data configuration

第二步:编辑函数依赖(可跳过)

编辑函数依赖是指,提前定义已知的变量之间的计算关系。通常,这一步RATH会帮助你自动配置后跳过。但你也可以进入这里根据自己的需求进行进一步的修改。 比如,我们根据时间变量Date提取了Year这个信息,那么这两个变量之间的计算关系是人为定义的且确定的。提前将这些信息告知RATH会极大提升后续因果分析的准确性。 通常,如果你实在RATH中使用自动括展/转化生成的新变量、或使用自定义表达式定义的新变量。RATH会默认帮你声明这些关系,如下图。同时,RATH也会根据变量之间的数值表现,进行一些快速的推断,发现一些没有被显示的定义的关系。 如果你拥有自己的指标库或指标平台,你可以将你维护的计算关系导入RATH来使得RATH的分析效果更进一步。 Causal analysis functional dependencies

需要注意的是:你并不需要清楚所有的变量间的关系,因果计算本身也会帮你去发现。通常我们建议对于那些系统中人为生成的计算依赖(比如由表达式、SQL等从某些字段计算出的新字段),提前给依赖的声明。如果你是在RATH中使用表达式等功能生成的新字段,RATH会默认帮你自动声明这些依赖关系。

第三步:因果分析

这一步是整个模块的核心,在这里我们也开始进入真正的因果分析。进入这个页面,点击“因果发现”按钮。RATH会根据对数据的观察,计算推荐一个包含了各变量间影响关系的因果图。

如下图所示,是RATH针对糖尿病数据集,自动发现的因果关系图。 Causal Analysis diabetes

可以看到里面的一些重要的影响关系:

  • 体内的胰岛素含量会先影响血糖,血糖再影响最终是否会患糖尿病。
  • 胰岛素也会影响身体的BMI,从而进一步影响血压、皮肤厚度等指标。

你可以和这张图进行互动,点击一个具体的节点,如“是否患糖尿病”。可以看到和当前节点相直接关联的节点被高亮了,同时二者之间的边上,会展示这条边,也就是变量间关系的强度。如下图所示 Interaction with Causal Analysis Graphic Interaction with Causal Analysis Graphic

点击节点后,右侧还提供了多种进一步对数据进行深度挖掘的一些功能模块,和左侧因果图的互动会将所互动的变量间信息带入到右侧的分析栏目中。

可解释探索(对照分析)

这个模块主要是帮助你研究理解,因果关系的具体情况,或是进行一些因果假设的验证与探索。 这里我们在左图中点击是否患糖尿病,右侧会展示人群中,患糖尿病与没有患糖尿病的人数分布。你可以点击或全选其中的一个群体,如患糖尿病的群体。就可以开启一个对照分析。 对照分析,是指比对两个群体之间的差异,根据因果模型,解释二者产生差异的原因。这里的两个群体可以在对照选择中切换,目前提供:

  • 选择的部分和整体全集做比较。(比如一月份和全年比较)
  • 选择的部分和它的补集做比较。(比如一月份和除了一月份以外的其他时间比较)
  • 选择的部分和另外一个指定集合作比较。(比如一月份和六月份比较) 在实际的场景中,对照分析可以帮我们实现很多深层的洞察分析,比如比对异常组和整体的差异,来分析造成异常的原因等。

Causal Analysis Comparative Analysis

确认感兴趣的数据子集和对照组后,点击“发现”按钮,来获得背后的深层原因的分析。RATH会结合因果图,给出一些可能的潜在原因。

如下图,这里我们比对了糖尿病患者和非糖尿病患者。RATH发现,二者群体的差异,可能是由血糖、年龄、胰岛素等原因导致的。点击潜在因素“血糖”,可以看到,两个群体之间,血糖的分布差异非常的明显。橘黄色表示糖尿病患者群体的情况,其血糖分布明显高于非糖尿病患者。 Causal Analysis Comparative Analysis

自助分析模块

在探索因果关系的过程中,你还可以使用灵活的可视化自助分析工具,来验证一些因果关系的假设。在糖尿病患者数据集中,RATH告诉我们体内胰岛素含量并不是糖尿病的直接原因。借助自主分析工具,我们可以在右侧展示出“是否患糖尿病”和“胰岛素”之间的关系。可以看到,直观上,患病群体的胰岛素含量是高于健康群体的。 Causal Analysis Manual Exploration

到这里,基于传统的变量相关性分析或是一些特征重要度分析,你可能会直接得出二者之间存在明显的影响关系的结论。但结合RATH给出的因果分析结果,我们可以对具体的影响机制进行深入的了解。 我们引入RATH告诉我们的二者之间的中间变量血糖,可以看出,在不同的血糖区间下(或理解为控制血糖不变),患病群体与健康群体之间并没有绝对的在胰岛素上的差异。也就是说,当控制血糖不变时,原本相关的变量是否患病与体内胰岛素之间的关系变弱了,甚至接近度量变量之间的关系。 Causal Analysis Manual Exploration

患病群体和健康群体,整体的胰岛素分布有明显的差异 Causal Analysis Manual Exploration Causal Analysis Manual Exploration

当控制变量血糖不变时,患病群体和健康群体,整体的胰岛素分布的差异非常微弱

因果验证

因果验证模块和自助分析模块都可以实现帮你加深理解因果关系或验证因果假设的需求。在因果验证模块,你可以通过交互联动的方式,更加动态的理解变量之间是如何相互影响的。

点击因果图上的节点(变量),就可以把相应的变量的分布图添加在右侧的验证模块当中来。如我们相应研究尿糖含量和血糖含量之间没有影响关系 Causal Analysis Mutual Inspection

如下面的动图所演示的,我们选中一个血糖上的区间,当这个区间从大到小变化时,尿糖含量的分布并没有发生显著的变化。这与部分人直觉上觉得二者之间应该存在正相关关系所矛盾。 Causal Analysis Mutual Inspection

也可以点击“线索发现”按钮,来使用RATH的半自动化探索能力,进一步研究变量之间的影响关系。在半自动中推荐的散点图,也可以看出,二者之间并没有明显的影响关系。 除此之外,半自动还提供了便捷的数据探索能力,可以使你更加自由的探索变量之间的关系。 Causal Analysis Mutual Inspection

模型预测

RATH还提供了一个快速调试部署机器学习模型的工具,可以让你结合因果推断,进一步调优机器学习算法和特征的选择构建。 如下,我们点击目标变量“是否患糖尿病”,RATH会自动帮你基于因果关系建立一个简单的机器学习模型用于分类或回归任务。 Causal Analysis Prediction Test

点击“分类预测按钮”,RATH会立刻进行训练并给出模型的准确率。 Causal Analysis Prediction Test

我们可以结合因果图来调整特征选择的策略,根据因果关系,选择更加高效的影响因子,从而实现模型的调优。这里我们可以做一个简单的验证,由于我们上面已经使用RATH推荐的影响特征进行建模,这里我们故意避开RATH基于因果关系为我们选择的特征,再去训练一个模型进行比对。 Causal Analysis Prediction Test

如下图,可以看到,我们的模型在准确率上发生了明显的下降。 Causal Analysis Prediction Test

在对于庞大多变量的数据集进行建模调优时,RATH可以更加高效的帮你寻找更好的特征,来获得更好的模型准确度。

因果关系编辑

在因果发现与推断中,由于数据中的噪音、样本量不足、影响因素没有被采集等原因,可能会导致RATH自动给出的因果关系与实际关系存在偏差。RATH允许你通过简单的图编辑的方式,来干预因果模型的构建。如下图,在左侧的工具栏中,打开编辑关系,即可在现有的关系上进行加工编辑。 Causal Analysis editing

这里假设我们要强行添加一个从血糖到尿糖含量的影响关系,可以如下图所示进行操作: Causal Analysis editing

编辑后,RATH会根据你提供的信息,重新调整推断逻辑和因果模型。如下图便是我们干预后的模型。 Causal Analysis editing

下一步

参考以下章节: