1. 因果发现概述:什么是因果发现?为什么需要因果发现?因果发现 vs 相关性分析
1.1 从一个真实的故事说起
我记得刚入行做推荐系统那会儿,团队里有个经典案例。我们观察到「用户点击某个商品后,购买转化率明显提升」。老板一拍大腿:「那就让用户多点几次呗!」结果呢?点击率上去了,购买率反而掉了。
为什么会这样?
因为点击和购买之间,存在一个隐藏的「兴趣」变量。感兴趣的用户既会点,也会买。强行让不感兴趣的用户去点,除了增加骚扰,啥也得不到。这就是典型的「相关性不等于因果性」。
嗯,从那天起,我开始认真琢磨因果推断这件事。
1.2 什么是因果发现?
说白了,因果发现就是从数据里找出变量之间的「谁影响了谁」。它回答的是:
- A 变了,B 会不会跟着变?
- 如果我把 A 强行改掉,B 会怎样?
- 有没有一个隐藏的 C,同时导致了 A 和 B?
举个例子:
你看到冰淇淋销量和溺水人数同步上升。相关性分析告诉你:这两件事有关系。但因果发现会告诉你:它们背后有个共同的「夏天温度」在作怪。温度高了,大家既爱吃冰淇淋,又爱下水游泳,溺水风险自然增加。
因果发现的核心任务:从观测数据中,还原出变量之间的因果结构图(DAG,有向无环图)。
1.3 为什么需要因果发现?
我这些年做过的项目,但凡涉及「干预」和「决策」,因果发现几乎都是绕不开的坎。原因有三:
- 做决策需要知道「如果...会怎样」
比如广告投放:你看到「看了广告的人购买率高」,但这些人本来就想买啊。因果发现能帮你区分「广告的效果」和「用户的自选择偏差」。 - 防止「虚假关联」坑人
我在金融风控项目里遇到过:某个特征跟违约率高度相关,但其实是另一个业务规则导致的。如果直接用这个特征建模,规则一改,模型就崩了。 - 可解释性要求越来越高
现在的业务方不好糊弄了。你说「模型预测这个人会流失」,人家问「为什么?」你总不能说「因为特征权重高」吧?因果结构能给出更合理的解释。
我的经验:如果你在做「策略优化」「实验设计」「反事实推理」这类任务,因果发现基本是标配。如果只是做预测(比如图像分类),那相关性分析可能就够了。
1.4 因果发现 vs 相关性分析
这两者的区别,我经常用一个比喻来解释:
- 相关性分析:就像看到两个人总是一起出现,但不知道他们是朋友、同事,还是碰巧同路。
- 因果发现:要搞清楚谁先约的谁,谁影响了谁,有没有第三方在撮合。
具体差异,我整理了一张表:
| 维度 | 相关性分析 | 因果发现 |
|---|---|---|
| 回答的问题 | 它们是否一起变化? | 改变 A 会影响 B 吗? |
| 方向性 | 无方向(对称) | 有方向(非对称) |
| 对干预的预测 | 不能 | 可以 |
| 需要的假设 | 较少 | 较多(如无混淆、因果充分性等) |
| 典型方法 | 皮尔逊系数、互信息 | PC 算法、FCI、LiNGAM |
| 鲁棒性 | 对噪声敏感 | 对假设违背敏感 |
避坑指南:我曾经在一个电商项目里,直接用相关性矩阵做特征选择,结果上线后 A/B 实验效果跟离线完全相反。后来才发现,那些高相关特征大多是「共同原因」导致的,根本不是真正的因果路径。从那以后,我养成了一个习惯:在做特征筛选前,先跑一遍因果发现,哪怕只是画个草图。
1.5 因果发现的知识体系
下面这张图,是我自己总结的因果发现整体框架。每次做项目前,我都会先对照着看一遍,确认自己站在哪个位置。
这张图里,我特别想强调一点:所有因果发现方法都建立在假设之上。你选哪种方法,取决于你愿意接受哪些假设。比如 PC 算法假设「无混淆」,这在很多真实场景下很难满足。我踩过的坑就是:拿着 PC 的结果直接做决策,结果被业务方怼回来,因为遗漏了关键混淆变量。
1.6 什么时候该用因果发现?
我给自己定了个简单的判断标准:
- 用相关性分析就够了:纯预测任务、特征筛选(不关心方向)、探索性数据分析
- 必须上因果发现:策略优化、干预效果评估、反事实推理、可解释性要求高的场景
- 可以两者结合:先用相关性做粗筛,再用因果发现精炼。但要注意,相关性筛掉的变量,可能恰恰是因果路径上的关键节点。
一个小建议:刚开始接触因果发现的同学,别一上来就上复杂算法。先画个「因果图草图」,把你知道的业务逻辑画出来。然后对照数据,看看哪些边是合理的,哪些是反直觉的。这个过程本身,就能帮你发现很多问题。
1.7 本章小结
因果发现,说白了就是帮我们从「看到什么」走向「能改变什么」。它比相关性分析多了一层「干预」的视角,但也多了不少假设和约束。
我个人习惯是:在做任何涉及「决策」的数据项目前,先花 20% 的时间做因果发现。这 20% 的时间,往往能省掉后面 80% 的返工。
下一章,我们会深入因果图的基本概念——节点、边、路径、d-分离。这些东西听起来抽象,但理解了它们,你就能看懂大部分因果发现算法的核心逻辑了。