第14行: |
第14行: |
| | | |
| == '''因果引擎的十要素''' == | | == '''因果引擎的十要素''' == |
− | ''''''1. 知识''''''
| + | '''1. 知识''' |
| | | |
| 知识指的是推理主体(Reasoning Agent)过去的经验,包括过去的观察、以往的行为、接受过的教育和文化习俗等所有被认为与目标问题有关的内容。“知识”周围的虚线框表示它仍隐藏在推理主体的思想中,尚未在模型中得到正式表达。 | | 知识指的是推理主体(Reasoning Agent)过去的经验,包括过去的观察、以往的行为、接受过的教育和文化习俗等所有被认为与目标问题有关的内容。“知识”周围的虚线框表示它仍隐藏在推理主体的思想中,尚未在模型中得到正式表达。 |
第20行: |
第20行: |
| 例如,我们如何去判断和界定一个病人的存活期、药物对于病人生理机能的可能的影响、其他的何种因素极有可能影响到药物疗效等等信息,都属于这个部分。 | | 例如,我们如何去判断和界定一个病人的存活期、药物对于病人生理机能的可能的影响、其他的何种因素极有可能影响到药物疗效等等信息,都属于这个部分。 |
| | | |
− | ''''''2. 假设'''''' | + | '''2. 假设''' |
| | | |
| 科学研究总是要求我们给出简化的假设,这些假设也就是研究者在现有知识的基础上认为有必要明确表述出来的陈述。研究者所拥有的大部分知识都隐藏于他的大脑,只有假设能将其公之于世,也只有假设才能被嵌入模型。 | | 科学研究总是要求我们给出简化的假设,这些假设也就是研究者在现有知识的基础上认为有必要明确表述出来的陈述。研究者所拥有的大部分知识都隐藏于他的大脑,只有假设能将其公之于世,也只有假设才能被嵌入模型。 |
第26行: |
第26行: |
| 例如,我们可以根据已有知识判断出药物的作用机制与病人的性别是无关的,与病人的年龄是有关的,与病人的视力水平是无关的,与病人的身高是无关的,但与病人的体重是有关的等等。 | | 例如,我们可以根据已有知识判断出药物的作用机制与病人的性别是无关的,与病人的年龄是有关的,与病人的视力水平是无关的,与病人的身高是无关的,但与病人的体重是有关的等等。 |
| | | |
− | ''''''3. 因果模型''''''
| + | '''3. 因果模型''' |
| | | |
| 因果模型有多种表现形式,包括因果图、结构方程、逻辑语句等。从构建因果图的角度来看,“因果关系”的定义就非常简单了:如果变量Y“听从于”变量X,并根据所“听到”的内容决定自己的值,那么变量X就是变量Y的一个因。这里的因果模型可以直接从假设进行构建,也可以从因果发现引擎中获得。 | | 因果模型有多种表现形式,包括因果图、结构方程、逻辑语句等。从构建因果图的角度来看,“因果关系”的定义就非常简单了:如果变量Y“听从于”变量X,并根据所“听到”的内容决定自己的值,那么变量X就是变量Y的一个因。这里的因果模型可以直接从假设进行构建,也可以从因果发现引擎中获得。 |
第32行: |
第32行: |
| 例如,如果我们怀疑一位病人的存活期L“听从于”该病人是否服用了药物D,那么我们便可以称D为L的因,并在因果图里绘制一个从D到L的箭头。当然,关于D和L之间的关系问题的答案很可能还取决于其他变量,因而我们也必须将这些变量及其因果关系在因果图中表示出来。在这里,我们统一用Z来表示其他变量。 | | 例如,如果我们怀疑一位病人的存活期L“听从于”该病人是否服用了药物D,那么我们便可以称D为L的因,并在因果图里绘制一个从D到L的箭头。当然,关于D和L之间的关系问题的答案很可能还取决于其他变量,因而我们也必须将这些变量及其因果关系在因果图中表示出来。在这里,我们统一用Z来表示其他变量。 |
| | | |
− | ''''''4. 可验证的蕴涵''''''
| + | '''4. 可验证的蕴涵''' |
| | | |
| 以因果模型的路径来表示的变量之间的听从模式通常会导向数据中某种显而易见的模式或相关关系。这些模式可被用于测试模型,因此也被称为“可验证的蕴涵”(Testable Implications)。 | | 以因果模型的路径来表示的变量之间的听从模式通常会导向数据中某种显而易见的模式或相关关系。这些模式可被用于测试模型,因此也被称为“可验证的蕴涵”(Testable Implications)。 |
第40行: |
第40行: |
| 对于因果发现引擎输出的模型,绝大多数情况下并不会发生这种抵触;但对于直接从假设构建的模型,这种抵触是可能发生的,这就需要另一个图中没有画出模块,输入可验证的蕴涵和数据后,计算数据与模型假设的匹配程度。 | | 对于因果发现引擎输出的模型,绝大多数情况下并不会发生这种抵触;但对于直接从假设构建的模型,这种抵触是可能发生的,这就需要另一个图中没有画出模块,输入可验证的蕴涵和数据后,计算数据与模型假设的匹配程度。 |
| | | |
− | ''''''5. 问题''''''
| + | '''5. 问题''' |
| | | |
| 向推理引擎提交的问题就是我们希望获得解答的科学问题,这一问题必须用因果词汇来表述。因果革命的主要成就之一就是确保了这一语言在科学上容易理解,同时在数学上精确严谨。 | | 向推理引擎提交的问题就是我们希望获得解答的科学问题,这一问题必须用因果词汇来表述。因果革命的主要成就之一就是确保了这一语言在科学上容易理解,同时在数学上精确严谨。 |
第46行: |
第46行: |
| 例如,我们现在感兴趣的问题是“药物D对病人生存期L的影响是什么”,可以表述为“P(L|do(D))是什么”。 | | 例如,我们现在感兴趣的问题是“药物D对病人生存期L的影响是什么”,可以表述为“P(L|do(D))是什么”。 |
| | | |
− | ''''''6. 被估量'''''' | + | '''6. 被估量''' |
| | | |
| 被估量“Estimand”来自拉丁语,意思是“需要估计的东西”。它是我们从数据中估算出来的统计量。一旦这个量被估算出来,我们便可以用它来合理地表示问题的答案。虽然被估量的表现形式是一个概率公式,如P(L|D,Z)×P(Z),但实际上它是一种方法,可以让我们根据我们所掌握的数据类型回答因果问题(前提是推断引擎证实了这种数据类型就是我们需要的)。 | | 被估量“Estimand”来自拉丁语,意思是“需要估计的东西”。它是我们从数据中估算出来的统计量。一旦这个量被估算出来,我们便可以用它来合理地表示问题的答案。虽然被估量的表现形式是一个概率公式,如P(L|D,Z)×P(Z),但实际上它是一种方法,可以让我们根据我们所掌握的数据类型回答因果问题(前提是推断引擎证实了这种数据类型就是我们需要的)。 |
第52行: |
第52行: |
| 重要的是要认识到,与传统的统计学所提供的估计方法不同,在当前的因果模型下,无论我们收集到多少数据,有些问题可能仍然无法得到解答。这个被称作“可识别性”问题。例如,如果我们的模型显示D和L都依赖于第三变量Z(比如疾病的发展阶段),并且,如果我们没有任何方法可以测量Z的值,那么问题P(L|do(D))就无法得到解答。在这种情况下,收集数据完全就是浪费时间。相反,我们需要做的是回过头完善模型,具体方式则是输入新的科学知识,使我们可以估计Z的值,或者简化假设(注意,此处存在犯错的风险),例如假设Z对D的影响是可以忽略不计的。 | | 重要的是要认识到,与传统的统计学所提供的估计方法不同,在当前的因果模型下,无论我们收集到多少数据,有些问题可能仍然无法得到解答。这个被称作“可识别性”问题。例如,如果我们的模型显示D和L都依赖于第三变量Z(比如疾病的发展阶段),并且,如果我们没有任何方法可以测量Z的值,那么问题P(L|do(D))就无法得到解答。在这种情况下,收集数据完全就是浪费时间。相反,我们需要做的是回过头完善模型,具体方式则是输入新的科学知识,使我们可以估计Z的值,或者简化假设(注意,此处存在犯错的风险),例如假设Z对D的影响是可以忽略不计的。 |
| | | |
− | ''''''7. 数据'''''' | + | '''7. 数据''' |
| | | |
| 数据可以被视作填充被估量的原料。这里我们一定要认识到,数据本身不具备表述因果关系的能力。数据告诉我们的只是数量信息,如P(L|D)或P(L|D,Z)的值。而被估量则能够告诉我们如何将这些统计量转化为一个表达式。基于模型假设,该表达式在逻辑上等价于我们所要回答的因果问题,比说P(L|do(D))。 | | 数据可以被视作填充被估量的原料。这里我们一定要认识到,数据本身不具备表述因果关系的能力。数据告诉我们的只是数量信息,如P(L|D)或P(L|D,Z)的值。而被估量则能够告诉我们如何将这些统计量转化为一个表达式。基于模型假设,该表达式在逻辑上等价于我们所要回答的因果问题,比说P(L|do(D))。 |
第58行: |
第58行: |
| 在传统的统计方法中,被估量就等同于有待解决的问题。例如,如果我们对存活期为L的人群中服用过药物D的病人的比例感兴趣,那么我们可以将这个问题简记为P(D|L)。该表达式的值也就是我们的被估量。这一表达式已经确切地说明了数据中的哪个概率有待被估计,而并不涉及任何因果知识。 | | 在传统的统计方法中,被估量就等同于有待解决的问题。例如,如果我们对存活期为L的人群中服用过药物D的病人的比例感兴趣,那么我们可以将这个问题简记为P(D|L)。该表达式的值也就是我们的被估量。这一表达式已经确切地说明了数据中的哪个概率有待被估计,而并不涉及任何因果知识。 |
| | | |
− | ''''''8. 统计估计''''''
| + | '''8. 统计估计''' |
| | | |
| 直接将现有数据代入被估量就可以得到粗糙的估计值了。但需要注意的是,数据永远是从理论上无限的总体中抽取的有限样本。比如在我们所讨论的这个例子中,数据样本由我们筛选出来进行研究的病人组成,即使这种筛选是随机的,我们也无法避免根据样本测量的概率无法代表整个总体的相应概率的可能性。幸运的是,依靠机器学习领域所提供的先进技术,统计学科为我们提供了很多方法来应对这种不确定性,这些方法包括最大似然估计、倾向评分、置信区间、显著性检验等,使我们从已有数据可以得到更为“精准”的估计值。 | | 直接将现有数据代入被估量就可以得到粗糙的估计值了。但需要注意的是,数据永远是从理论上无限的总体中抽取的有限样本。比如在我们所讨论的这个例子中,数据样本由我们筛选出来进行研究的病人组成,即使这种筛选是随机的,我们也无法避免根据样本测量的概率无法代表整个总体的相应概率的可能性。幸运的是,依靠机器学习领域所提供的先进技术,统计学科为我们提供了很多方法来应对这种不确定性,这些方法包括最大似然估计、倾向评分、置信区间、显著性检验等,使我们从已有数据可以得到更为“精准”的估计值。 |
| | | |
− | ''''''9. 估计值'''''' | + | '''9. 估计值''' |
| | | |
| 如果我们的模型是正确的且数据是充分的,那么我们就获得了这个待解决的因果问题的答案,比如“药物D使糖尿病患者Z的生存期L增加了30%,误差±20%"。这一答案可以被添加到我们的【知识】中。而如果这一答案与我们的预期不符,则很可能说明我们需要对因果模型做一些改进。 | | 如果我们的模型是正确的且数据是充分的,那么我们就获得了这个待解决的因果问题的答案,比如“药物D使糖尿病患者Z的生存期L增加了30%,误差±20%"。这一答案可以被添加到我们的【知识】中。而如果这一答案与我们的预期不符,则很可能说明我们需要对因果模型做一些改进。 |
| | | |
− | ''''''10. 因果发现引擎'''''' | + | '''10. 因果发现引擎''' |
| | | |
| 因果发现引擎是促进整体因果引擎自动化执行的重要推手。因果发现引擎可以根据现有的大量数据得到一个因果图,以辅助因果推断引擎的执行。除此之外,对于部分因果发现的算法,可以输入已有的知识来改进解决。 | | 因果发现引擎是促进整体因果引擎自动化执行的重要推手。因果发现引擎可以根据现有的大量数据得到一个因果图,以辅助因果推断引擎的执行。除此之外,对于部分因果发现的算法,可以输入已有的知识来改进解决。 |
第83行: |
第83行: |
| | | |
| == 编者推荐 == | | == 编者推荐 == |
− | 集智俱乐部文章
| |
| | | |
| + | === 集智俱乐部文章 === |
| [https://mp.weixin.qq.com/s/sfu_UneK8buxy2XO8Q3_sg 构建因果引擎,创新科研范式——因果科学的学习路线图] | | [https://mp.weixin.qq.com/s/sfu_UneK8buxy2XO8Q3_sg 构建因果引擎,创新科研范式——因果科学的学习路线图] |
| + | ===集智课程=== |
| + | ====[https://campus.swarma.org/course/3527 因果科学读书会第三季:因果+X]==== |
| + | “因果”并不是一个新概念,而是一个已经在多个学科中使用了数十年的分析技术。通过前两季的分享,我们主要梳理了因果科学在计算机领域的前沿进展。如要融会贯通,我们需要回顾数十年来在社会学、经济学、医学、生物学等多个领域中,都是使用了什么样的因果模型、以什么样的范式、解决了什么样的问题。我们还要尝试进行对比和创新,看能否以现在的眼光,用其他的模型,为这些研究提供新的解决思路。 |
| + | |
| + | |
| + | “因果+X”就是要让因果真正地应用于我们的科学研究中,不管你是来自计算机、数理统计领域,还是社会学、经济学、管理学领域,还是医学、生物学领域,我们希望共同探究出因果研究的范式,真正解决因果的多学科应用问题,乃至解决工业界的问题。 |