欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

因果推断 - 反事实

发布时间:2025/3/15 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 因果推断 - 反事实 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

  • 基础知识
  • 案例实战

版权:转载前请联系作者获得授权。
声明:部分内容出自因果关系之梯,已获得原作者授权。
参考书籍:《The Book of Why》——Judea Pearl

基础知识

定义:对于包含外生变量UUU和内生变量XXXYYY的SCM,形如YX=x(U=u)=yY_{X=x}(U=u)=yYX=x(U=u)=y表示“在U=uU=uU=u的情况下,如果X=xX=xX=x,则Y=yY=yY=y”。其中,YX=x(U=u)=yY_{X=x}(U=u)=yYX=x(U=u)=y可以简写为Yx(u)=yY_x(u)=yYx(u)=y

反事实分析的一般步骤

  • 外展。基于数据对外生变量UUU进行估算。
  • 干预。利用dododo算子改变模型(删除指向XXX的箭头),得到新模型MxM_xMx,反映我们提出的反事实假设。
  • 预测。基于UUUMxM_xMx来计算结果。
  • 以上三个步骤可以总结为:

    因果推断第一定律Yx(u)=YMx(u)Y_x(u)=Y_{M_x}(u)Yx(u)=YMx(u)

    反事实和干预的区别

  • 表现形式:do(x)do(x)dox vs YxY_xYx
  • XXX进行干预,不会对XXX的子孙节点造成影响,而反事实会。
  • 如何理解第2条?可以考虑如下因果图,P(Y∣do(x))P(Y|do(x))P(Ydo(x))P(Yx)P(Y_x)P(Yx)的含义显然不同。

    • 计算P(Y∣do(x))P(Y|do(x))P(Ydo(x))时,YYY的结果实际上和XXX的取值毫无关系,因为路径被ZZZ阻断了!
    • 计算P(Yx)P(Y_x)P(Yx)时,会根据X=xX=xX=x对对应的ZZZ进行改动,进而得到YxY_xYx


    案例实战

    下面基于一个案例,加深对反事实分析的理解。
    在下表中,学历共分为0,1,20,1,20,1,2三种,分别代表高中,本科,研究生。S0(u)S_0(u)S0(u)表示雇员uuu在学历是高中时,现有的工资水平,S1(u)S_1(u)S1(u)S2(u)S_2(u)S2(u)则是在本科和研究生学历下的工资水平。由于在工作时,每个人的学历已经固定,只会是高中、本科和研究生中的一种。故,对于每一个雇员,有两个工资的值为???,表示无法获得。

    雇员 (u)工龄 EX(u)学历 ED(u)工资 S0(u)工资 S1(u)工资 S2(u)
    Alice6081000??
    Bob91?92500?
    Lucy92??97000
    Daivd81?91000?
    Est121?100000?
    Flxs13097000??

    现在,我们想要研究一个反事实问题——如果Alice的学历是本科,那么她的工资应为多少?即:通过上表中的数据,估算S1(Alice)S_1(Alice)S1(Alice)

    在不使用反事实分析的情况下,我们或许可以采用线性回归,通过统计得到你和数据的最佳直线:

    S=2500×EX+5000×ED+65000S=2500 \times EX + 5000 \times ED + 65000S=2500×EX+5000×ED+65000

    并依此得出S1(Alice)=2500×6+5000×1+65000=85000S_1(Alice)=2500 \times 6 + 5000 \times 1 + 65000 = 85000S1(Alice)=2500×6+5000×1+65000=85000

    但是,上述方法有一个明显的弊端,即:对于任何雇员,如果他们的工龄和学历一致,则预测出的工资也是一致的!通过观察Bob和Lucy的工资,我们可以发现,这显然是不对的!

    从表中可以看出,Bob和Lucy具有相同的工龄,但Bob的学历更低。那么,假如Lucy的学历和Bob一致,二人的工资应该一致吗?答案显然是否定的。因为,如果Lucy降低了学历,那么理论上她的工龄会比Bob更长,这会导致S1(Lucy)>S1(Bob)S_1(Lucy)>S_1(Bob)S1(Lucy)>S1(Bob)

    如何在模型中体现这一点呢?

    从因果的角度出发,我们首先可以构建如下的因果图:

    我们还是通过线性回归拟合最佳直线,但是和上文中稍有不同:

    S=2500×EX+5000×ED+65000+USS=2500 \times EX + 5000 \times ED + 65000 + U_SS=2500×EX+5000×ED+65000+US

    同时,我们还需要一个(可能是)下式的方程:

    EX=10−4×ED+UEXEX=10-4 \times ED + U_{EX}EX=104×ED+UEX

    有了这两个方程后,我们就可以根据反事实分析的三个步骤,计算S1(Alice)S_1(Alice)S1(Alice)

  • 根据数据估算出US=1000,UEX=−1U_S=1000, U_{EX} = -1US=1000,UEX=1;
  • 使用dododo算子修改Alice的学历;
  • 根据US=1000,UEX=−1U_S=1000, U_{EX} = -1US=1000,UEX=1计算出ED=2ED=2ED=2,再结合ED=1ED=1ED=1计算出S1(Alice)=76000S_1(Alice)=76000S1(Alice)=76000
  • 总结

    以上是生活随笔为你收集整理的因果推断 - 反事实的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。