PD(A)从因果分析的角度,尝试缓解流行度偏差问题。在应用因果分析解决实际问题的过程中,需要对数据的产生机制提出因果假设,或则从数据出发识别因果图结构。PD(A)首先对推荐系统中 user-item 的交互数据的产生过程提出了关键假设,PD(A)认为产生交互数据对应的因果图结构为图b:
- 总体共包含 U , I , C , Z U,I,C,Z U,I,C,Z四个随机变量:
- U U U表示用户, u u u表示某个具体的用户, U \mathscr{U} U表示全体用户组成的集合
- 因为有曝光的物品才能被用户看到, I I I表示有曝光的物品, i i i表示某个具体的曝光物品, I \mathscr{I} I表示全体曝光物品组成的集合
- C C C表示用户和商品交互结果, c c c表示某一次曝光的后具体取值, C \mathscr{C} C表示全体曝光结果组成的集合,可以看出C的取值空间为 Θ ( C ) = { 0 , 1 } \Theta(\mathscr{C})=\{0, 1\} Θ(C)={0,1}
- Z表示商品热度
- PDA认为C除了受到
U
,
I
U,I
U,I影响,还会受到物品热度的影响,表现在两个方面
- Z → I Z \rightarrow I Z→I: 热度高的物品会获得更多的曝光机会
- Z → C Z\rightarrow C Z→C:用户一般都有从众心理(herd mentality),对于热门内容有消费需求
以上是PD(A)对交互数据产生机制提出的关键假设。可以看到这里并没有做因果图识别和发现,而是基于作者对推荐过程的理解,提出的一个假设,效果很大程度取决于这个假设与实际情况的匹配程度,这里不展开。
在此因果图假设基础上,PDA提出:
- Z Z Z 是 I I I 和 C C C 的混淆变量
- 普通的推荐模型直接利用观察样本拟合的 P ( C ∣ U , I ) P(C|U,I) P(C∣U,I),其中混杂了由于混淆变量 Z Z Z带来的伪相关关系,需要去除(deconfounding)
那么如果不去除confounding的影响,会有什么问题呢?
为了说明这点,我们构造这样一个模拟实验:
-
三个随机变量 W , T , Y W,T,Y W,T,Y
-
数据产生的因果图为
- ![请添加图片描述](
-
W W W为 T T T和 Y Y Y的混淆变量,并假设变量间的因果关系为线性关系
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
def generate_data(mu, sigma, num):
W = np.random.normal(mu, sigma, num)
T = 2 * W + np.random.normal(0, 1, num)
Y = 10 * T + 50 * W + np.random.normal(0, 1, num)
T_parameters = [[t] for t in T]
Y_parameters = [[y] for y in Y]
return T_parameters, Y_parameters
def assocaiton_inference(mu, sigma, dot_color, fit_color, ):
T, Y = generate_data(mu, sigma, 1000)
model = linear_model.LinearRegression()
model.fit(T, Y)
plt.scatter(T, Y,color=dot_color)
plt.plot(T, model.predict(T),color=fit_color,linewidth=4)
print(('%f, %f') % (model.intercept_,model.coef_))
assocaiton_inference(mu = 0, sigma = 0.1, dot_color = 'blue', fit_color = 'red')
assocaiton_inference(mu = 0, sigma = 1, dot_color = 'green', fit_color = 'white')
可以看出当Z的分布发生变化后,线性回归结果差别较大。说明当训练样本和预测样本的同分布假设不满足时,模型的泛化效果比较差。
如何去除混淆变量 Z Z Z 的影响呢 ?
PDA中并没有介绍太多背景,直接给出了答案,这里适当做些背景知识补充,并推导出答案。
总结一下问题,目前我们有来自Figure 1图 b (后文表示为 G b G_b Gb)样本数据 S 1 S_1 S1,目标是估计出Figure 1 图 c (后文表示为 G c G_c Gc)对应关联关系 P G c ( C ∣ U , I ) P_{G_c}(C|U,I) PGc(C∣U,I)。
如果我们能从 G c G_c Gc的总体里采样出样本 S 2 S_2 S2,就可以采用普通的建模方式估计出 P G b ( C ∣ U , I ) P_{G_b}(C|U,I) PGb(C∣U,I),比如逻辑回归,树模型,矩阵分解等。但是 S 2 S_2 S2的获取成本非常高,有时候是不可操作。在推荐系统中就需要让曝光机制不受物品热度的影响,这点很难做到,或则成本很大。
换个思路,如果 P G c ( C ∣ U , I ) P_{G_c}(C|U,I) PGc(C∣U,I)与 G b G_b Gb中的某些概率值存在函数关系,那么就无需样本 S 2 S_2 S2了.
先给出一些Gb和Gc概率值间的关系:
P G c ( C ∣ U , I ) = P G b ( C ∣ U , d o ( I ) ) ( 1 ) P_{G_c}(C|U,I)= P_{G_b}(C|U,do(I)) \quad\quad (1) PGc(C∣U,I)=PGb(C∣U,do(I))(1)
等式(1)来自do操作的定义, d o ( I ) do(I) do(I)操作等价于将Ga图中指向随机变量 I I I的边全部去掉,本例中Ga去掉所有指向 I I I的边后,Ga就变成Gb,因此有等式(1)
P G b ( C ∣ U , d o ( I ) ) = ∑ Z P G b ( C ∣ U , I , Z ) P ( Z ) ( 2 ) P_{G_b}(C|U,do(I)) = \sum_ZP_{G_b}(C|U,I,Z)P(Z)\quad\quad (2) PGb(C∣U,do(I))=∑ZPGb(C∣U,I,Z)P(Z)(2)
为了证明等式(2),先证明在 G b G_b Gb中 P ( C ∣ d o ( I ) , Z ) = P ( C ∣ I , Z ) P(C|do(I),Z) = P(C|I,Z) P(C∣do(I),Z)=P(C∣I,Z),后面的证明都在因果图 G b G_b Gb上,因此省掉下标。
证明:
P ( C ∣ d o ( I ) , Z ) P(C | do(I), Z) P(C∣do(I),Z)
= P ( C , Z , d o ( I ) ) p ( Z , d o ( I ) ) =\frac{P(C,Z,do(I))}{p(Z,do(I))} \quad =p(Z,do(I))P(C,Z,do(I))
= P ( C , Z ∣ d o ( I ) p ( d o ( I ) ) ) P ( Z ∣ d o ( I ) p ( d o ( I ) ) ) =\frac{P(C,Z|do(I)p(do(I)))}{P(Z|do(I)p(do(I)))} =P(Z∣do(I)p(do(I)))P(C,Z∣do(I)p(do(I)))
= P ( C , Z ∣ d o ( I ) ) ∑ C P ( C , Z ∣ d o ( I ) ) =\frac{P(C,Z|do(I))}{\sum_CP(C,Z|do(I))} =∑CP(C,Z∣do(I))P(C,Z∣do(I))
= P ( C ∣ Z , I ) P ( Z ) ∑ C P ( C ∣ Z , I ) P ( Z ) =\frac{P(C|Z,I)P(Z)}{\sum_CP(C|Z,I)P(Z)} =∑CP(C∣Z,I)P(Z)P(C∣Z,I)P(Z)
= P ( C ∣ Z , I ) P ( Z ) p ( Z ) ∑ C P ( C ∣ Z , I ) =\frac{P(C|Z,I)P(Z)}{p(Z)\sum_CP(C|Z,I)} =p(Z)∑CP(C∣Z,I)P(C∣Z,I)P(Z)
= P ( C ∣ Z , I ) P ( Z ) P ( Z ) =\frac{P(C|Z,I)P(Z)}{P(Z)} =P(Z)P(C∣Z,I)P(Z)
= p ( C ∣ I , Z ) =p(C|I,Z) =p(C∣I,Z)
证明完成
接着证明 P ( C ∣ U , d o ( I ) ) = ∑ Z P ( C ∣ U , I , Z ) P ( Z ) P(C|U,do(I)) = \sum_ZP(C|U,I,Z)P(Z) P(C∣U,do(I))=∑ZP(C∣U,I,Z)P(Z)
证明:
P ( C ∣ d o ( I ) ) = ∑ Z P ( C , Z ∣ d o ( I ) ) P(C|do(I)) = \sum_ZP(C,Z|do(I)) P(C∣do(I))=∑ZP(C,Z∣do(I))
= ∑ Z P ( C , Z , d o ( I ) ) P ( d o ( I ) ) =\sum_Z\frac{P(C,Z,do(I))}{P(do(I))} =∑ZP(do(I))P(C,Z,do(I))
= ∑ Z P ( C , Z , d o ( I ) ) P ( Z , d o ( I ) ) P ( Z , d o ( I ) ) P ( d o ( I ) ) =\sum_Z\frac{P(C,Z,do(I))}{P(Z,do(I))}\frac{P(Z,do(I))}{P(do(I))} =∑ZP(Z,do(I))P(C,Z,do(I))P(do(I))P(Z,do(I))
= ∑ Z P ( C ∣ Z , d o ( I ) ) P ( Z ∣ d o ( I ) ) =\sum_ZP(C|Z,do(I))P(Z|do(I)) =∑ZP(C∣Z,do(I))P(Z∣do(I))
= ∑ Z P ( C ∣ Z , I ) P ( Z ) =\sum_ZP(C|Z,I)P(Z) =∑ZP(C∣Z,I)P(Z)
证明完成
可以发现等式(2)的右侧已经没有do操作了,而且每个组成部分都可以通过样本 S 1 S_1 S1估计得到。
原文中的因果推断部分介绍完成,其他的内容不再展开。
论文的关键优化是用 P ( C ∣ U , d o ( I ) ) P(C|U,do(I)) P(C∣U,do(I))替代 P ( C ∣ U , I ) P(C|U,I) P(C∣U,I),那么因果关系一定比相关关系优吗?几个个人观点:
- 不一定,看具体场景和应用类型
- 在同分布条件满足的情况下, P ( C ∣ U , I ) P(C|U,I) P(C∣U,I)不一定比 P ( C ∣ U , d o ( I ) ) P(C|U,do(I)) P(C∣U,do(I))差,在同分布条件不满足的情况下, P ( C ∣ U , I ) P(C|U,I) P(C∣U,I)的泛化性得不到保障
- 现实中同分布假设是一个挺强的假设
- 相关关系无法预测干预结果
补充:
其实上面的证明就是后门调整规则,这里正式介绍一下后门调整(Backdoor Adjustment)。
定义:关于变量T和Y的一组变量W,如果满足条件:
- W 阻断了所有从T到Y的路径
- W 不包含 T 的任何后代节点
则称 W 关于 T 和 Y 满足后门准则.
给定模块化假设和W关于T和Y满足后门准则,则可以通过下面的方式识别T对Y的因果影响:
P ( Y ∣ d o ( T ) ) = ∑ W P ( W ) P ( Y ∣ T , W ) P(Y|do(T)) = \sum_WP(W)P(Y|T, W) P(Y∣do(T))=∑WP(W)P(Y∣T,W)
reference:
https://arxiv.org/pdf/2105.06067.pdf