倾向得分匹配(PSM)的原理以及应用

这篇具有很好参考价值的文章主要介绍了倾向得分匹配(PSM)的原理以及应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

倾向得分匹配(PSM)的原理以及应用

该文章主要介绍倾向得分匹配(PSM, Propensity Score Matching)方法的原理以及实现。这是一种理论稍微复杂、但实现较为容易的分析方法,适合非算法同学的使用。可用于(基于观察数据的)AB实验、增量模型搭建等领域。

文章主要分为四部分:前置知识(因果推断)介绍、倾向得分计算与匹配与匹配质量检验、匹配示例与增量计算还有一些补充的小知识点。对因果推断有简单了解的同学可以跳过第一部分,直接从第二节开始阅读。

前置知识介绍

对因果推断概念‍有所了解或想直接学习PSM的同学可跳过这一节。

  概念一:干预效果 Treatment Effect

‍‍

干预效果(Treatment Effect):干预下的潜在结果减去未干预时的潜在结果(Rubin框架),即:

倾向得分匹配(PSM)的原理以及应用

其中倾向得分匹配(PSM)的原理以及应用表示潜在结果,1和0代表是否受到干预。

举个例子:我们想知道我养狗给我提升了多少幸福度,理想情况下就是用我养狗时的幸福度减去我不养狗时的幸福度。‍

  概念二:ATT Average Treatment Effect on the Treated

相较于个人的干预效果,我们更希望了解人群整体的干预效果,毕竟我们通常用策略干预的是一个人群。

应用PSM,我们通常希望计算得到被干预的用户的平均干预效果,即ATT(average treatment effect on the treated),即

倾向得分匹配(PSM)的原理以及应用

其中变量倾向得分匹配(PSM)的原理以及应用代表是否收到干预。

可以看到倾向得分匹配(PSM)的原理以及应用代表被干预的用户假如不被干预的情况下的潜在结果,是一个无法观测的数值。倘若可以建立AB测试,我们可以利用对照组得到该结果,在无法进行AB测试的情况(例如倾向得分匹配(PSM)的原理以及应用是一个主动的行为)我们可以通过PSM拟合一个虚拟的对照组进行计算。

  计算ATT所需满足的假设

‍‍

这里引入一个新的概念,倾向性得分(Propensity Score),即用户受到(参与)干预的概率倾向得分匹配(PSM)的原理以及应用

  1. 条件独立假设 CIA (Conditonal Independence Assumption)

给定一系列可观测的协变量倾向得分匹配(PSM)的原理以及应用,潜在结果和干预分配相互独立。

倾向得分匹配(PSM)的原理以及应用

可认为所有影响到干预分配与潜在结果的变量都同时被观测到。此时倾向得分匹配(PSM)的原理以及应用可能是高维度的。

若上式成立,则干预分配与潜在结果基于倾向得分匹配(PSM)的原理以及应用同样条件独立[可证明],即:

倾向得分匹配(PSM)的原理以及应用

  1. 共支撑 Common Support

在一些文献中,该条件也被称为strong ignotability.

除了独立外的另一个条件是存在重叠的部分,即:

倾向得分匹配(PSM)的原理以及应用

这个条件能够排除掉——给定倾向得分匹配(PSM)的原理以及应用时能准确确定倾向得分匹配(PSM)的原理以及应用的情况(也因为如此才有匹配的空间)。

  估算ATT

在满足CIA和common support的情况下,我们能够对ATT进行估算:

倾向得分匹配(PSM)的原理以及应用

即:在common support 上,以倾向分为权重、对实验组与对照组平均值的差值进行求和。

PSM实现

倾向得分匹配的实现步骤其实就如其名称中提到的,主要有两步:倾向得分的计算,以及基于倾向得分的匹配。

  倾向得分预测

预测用户被干预的概率,其实就是一个常见的二分类问题,常见的机器学习模型都可以在这里使用。

  • 特征选择

需要注意的是在特征选择上,具体需要哪些特征呢?有两个基本的原则是需要遵守的:

  1. 同时影响干预分配和结果的变量应该被包括(使CIA成立);

  2. 被干预项影响的变量应该排除(变量需要在干预项前计算)。

而至于特征的量级,不同的文献中有不同的说法:

  1. 不应使用过多的参数,因为会导致如下两个问题:

    • 恶化support问题,导致存在某些倾向得分匹配(PSM)的原理以及应用使得倾向得分匹配(PSM)的原理以及应用

    • 不会增加bias但会增加variance,因为匹配困难一些treatment样本会被丢弃、或control样本被重复使用

  1. 尽可能使用更多的参数以满足CIA假设,除非有明确的共识特征与干预无关。

为方便起见,通常在实际应用中我们会选取尽量多的特征,同时也会用到一些机器学习中常规的特征筛选方法。

  • 重要特征

当我们已知一些特征十分重要(对干预、结果)时,我们可能通过一些方式加强这些特征对匹配的影响:

  1. 在匹配时在该特征上两组一致,如男性只跟男性匹配

  2. 在子人群中做匹配(男性、女性分别做匹配)

换句话说:就是在重要特征上做完全匹配,再辅助倾向分匹配(当预期在不同分组上会有不同的ATT时尤其推荐这么做)。

  匹配算法

当不使用propensity score时,可以直接基于协变量进行匹配,直接计算两个样本协变量之间的(马氏距离(Mahalanobis Distance) - 知乎 (zhihu.com)),这种方式通常称为CVM(Coviate Matching)。

完成倾向分模型及预测后,每个样本会得到一个propensity score,此时便可以进行匹配步骤了:为每个被干预的样本匹配一个(或多个)虚拟的对照样本

匹配的基础思路很简单,即找到一个距离最近的样本,实现的具体方法按照渐进的顺序阐述如下:

  • Nearest Neighbour Matching 最近邻匹配

这是最直接的一种方法,即:对干预组中的用户,选取对照组中在倾向分上相差最小的用户做匹配。

实现上,会有有放回和无放回两种实现方式:

  1. 有放回(对照组样本可重复使用):此时整体匹配质量上升,bias下降,当干预组与对照组倾向分分布差异较大时推荐应用。此时使用的对照组样本数会减少,导致variance上升;

  2. 无放回:此时匹配结果与匹配顺序有关,顺序需要保证随机。

除了是否放回之外,还有一个可调整的地方在于对单个用户是否可匹配多个样本(over-sampling):通过匹配最近的多个邻居降低了variance,提升了匹配的稳定性。但此时需要给每个邻居赋予权重(eg. 按距离衰减)。

  • Caliper and Radius Matching 有边界限制的半径匹配

当最近的邻居也相距很远的时候,NN匹配会存在低质匹配的风险。很自然的,我们想到可以限定样本间分数差值的上限,即Caliper。

  1. Caliper Matching:匹配时引入倾向分差值的忍受度,高于忍受度的样本丢弃。理论上通过避免低质量匹配降低了bias,但在样本数量较少时也可能因为匹配过少而升高了variance;

  2. Radius Matching:不止匹配caliper中的最近样本,使用caliper中的所有样本进行匹配。这种方法的优势在于,当有高质量匹配时使用了更多的样本、而当缺乏高质量匹配时则使用较少的样本。

  • Stratification and Interval Matching 分层区间匹配

分层匹配可以看作radius matching的一种相似版本,即将倾向得分分成多个区间,在每个区间内进行匹配。需要注意的是,分层的依据除了propensity score,也可以用一些我们认为重要的特征(如性别、地区),在相同特征的用户间进行匹配。


  匹配示例SQL

在计算复杂度不太高的情况下,我们通常能够使用sql进行匹配算法的实现,示例如下:

with matching_detail as (
    select t1.user_id as treatment_userid,
      t1.score as treatment_pscore,
      t2.user_id as control_userid,
      t2.score as control_pscore,
      row_number() over (partition by t1.user_id order by abs(t1.score-t2.score) asc) as rn
    from propensity_score_treatment t1
    left join propensity_score_control t2
      -- 分层匹配
        on t1.gender = t2.gender and round(t1.score, 1)*10 =  round(t2.score, 1)*10
    where abs(t1.score-t2.score) <= 0.05 -- caliper matching
)
select * from matching_detail where rn = 1  # rn大于1时为多邻居/radius匹配

上述的三种方法实际上都只使用了对照组中的部分样本,若希望使用对照组中的所有样本可对对照组中的样本整体赋权,计算整体的差值。

  匹配质量检验

鉴于我们基于倾向分做匹配,需要检测其他特征在实验组与对照组之间的分布是否相近。

理论依据:因为倾向得分匹配(PSM)的原理以及应用,在给定倾向得分匹配(PSM)的原理以及应用的情况下,倾向得分匹配(PSM)的原理以及应用倾向得分匹配(PSM)的原理以及应用应该相互独立。也就是说倾向得分相同时,倾向得分匹配(PSM)的原理以及应用的分布应该趋近一致。

  1. 可量化的指标——标准化偏差 Standardised Bias

通过标准化偏差我们可以衡量倾向得分匹配(PSM)的原理以及应用在实验组与对照组分布的差异大小,通常我们认为低于5%的偏差是可以接受的(当然越小越好)。

倾向得分匹配(PSM)的原理以及应用

我们也可以在匹配前后分别计算该值,去看看通过匹配让Standardised Bias减少了多少。

  1. 对样本均值的假设检验——T检验

我们也可以通过双侧T检验去判断两组的变量均值倾向得分匹配(PSM)的原理以及应用是否有显著差异。缺点是匹配前后偏差的减少量无法很直观的感受到。进一步的,我们也可以基于倾向分先做一个分层,再进行T-Test。这样可以看到不同分值下匹配的质量。

  1. 联合显著性/伪倾向得分匹配(PSM)的原理以及应用

另一种思路是我们把特征倾向得分匹配(PSM)的原理以及应用当作自变量,是否干预当作因变量,计算判定系数倾向得分匹配(PSM)的原理以及应用。在完成匹配后,两组间的协变量倾向得分匹配(PSM)的原理以及应用应该不存在系统性差异(即无法通过倾向得分匹配(PSM)的原理以及应用预测是否干预),从而倾向得分匹配(PSM)的原理以及应用应该很低。类似的,可以对所有变量做一个联合F-Test,匹配有效的话,匹配后会拒绝假设(即解释变量对被解释变量的共同影响不显著)。

除此之外,我们可以通过QQplot的可视化、计算匹配后两组方差的比值、计算匹配前后倾向分偏差减小量等方式衡量匹配质量。但总体来说还是推荐前两种方式——计算SB和T检验,兼具了可解释性和可量化性。假如匹配的质量达不到要求,那么我们就要回到上一步对匹配算法进行调整。

匹配结果+增量计算

示例数据均为虚拟构造数据,仅用于参考说明方法。

  匹配结果示例

匹配之后,常见的趋势会如下图一所示:

  1. 在干预之前,匹配后的实验组和对照组呈现几乎相同或平行的趋势(匹配质量较好的情况下)

  2. 在干预后,两组用户在目标指标上会开始出现差异,可以认为是干预带来的影响

倾向得分匹配(PSM)的原理以及应用

  增量计算

因为满足平行趋势假设,我们可以用双重差分法(DID)去计算干预带来的增量;需注意的是,计算实验组与对照组的差异时,我们通常需要取一段时间的均值,避免波动带来的影响。

最终得到的结论类似于:用户在购买商品后,能够给来访率带来1.5%(30天日均)的提升

  其他情况

在一些情况下,也会有其他结果的出现。

  1. 无显著增量

用户在干预之后来访率有一个短暂的提升,但随着时间的推移两组用户趋于一致。这种情况下我们通常认为干预并没有给用户来访带来显著的提升。为了识别出这种情况,我们也可以通过假设检验或计算差值中位数的方式进行验证。

倾向得分匹配(PSM)的原理以及应用

  1. 不满足平行趋势假设

从下图可以看到,左侧区域实验组与对照组的趋势不一致(不平行),这代表我们前面完成的匹配质量较差,需要优化匹配模型。对于平行趋势的检验,除了图示法(肉眼看是否平行)我们也可以通过T检验的方式来验证。

倾向得分匹配(PSM)的原理以及应用

其他值得一提的点

  ATT与ATE的区别

  1. ATE:average treatment effect

  2. ATT:average treatment effect on the treated

可以认为ATE是人群整体的干预增量效果,而ATT是实际被干预人群的干预增量效果。通常我们通过PSM+DID计算的是ATT,因为ATE还会涉及人群的干预率。更详细的解释可以参考stackexchange上的这个回答:https://stats.stackexchange.com/questions/308397/why-is-average-treatment-effect-different-from-average-treatment-effect-on-the-t

  Bias与Variance

在匹配算法的步骤,我们有提到bias与varianc:

  1. Bias 偏差:期望预测与真实结果之间的偏离程度,刻画算法本身的拟合能力

  2. Variance 方差:同样大小训练集的变动所导致的学习性能变化,刻画数据扰动所造成的影响

可以认为bias代表算法本身的拟合能力而variance代表算法的稳定性,在匹配的不同方法中它们也存在trade-offs:

算法

Bias

Variance

NN+多邻居

+

-

NN+最近邻

-

+

+边界值

-

+

无边界值

+

-

有放回

-

+

无放回

+

-

  敏感性测试 Sensitivity Analysis

在前置知识介绍的部分有提到,做PSM需要满足两个假设——条件独立和共支撑。

对于第一个条件,其含义便是我们需要观测到所有同时影响到treatment和outcome的特征,否则估算的ATT会存在偏差。对于common support,我们实际上计算的是倾向得分重叠区域的ATT,其实际上也可能是有偏的。在这种情况下,我们需要去进行sensitivity analysis。换句话说,我们计算得到的增量结果其实是不稳健的,我们可以通过纳入不确定性的来估算一个ATT的区间,使之稳定性得到提升。

总结

在文章的最后,我们对PSM的整体流程进行一个梳理(可以看到真的不复杂),同时对PSM的优点与缺点进行简单的介绍。

  完整流程

  1. 选择同时影响treatment与outcome的特征,基于特征对treatment进行二分类建模,得到倾向分;

  2. 在支撑集上,基于重要特征与倾向分进行匹配,为被干预用户找到匹配的样本;

  3. 对匹配结果的质量进行检验,检验通过的话进入下一步,否则返回第二步进行匹配的优化;

  4. 基于匹配的结果进行平行趋势验证,验证通过后通过双重差分法进行增量计算。

  PSM的优缺点

  • 优点

    1. 在无法进行随机试验的情况下,可构建虚拟的对照组并对增量进行可信的估算;

    2. 实现较为容易,实验组的样本能够充分的利用。

  • 缺点

    1. PSM最主要的一个缺点是——使用者永远无法保证所有的混淆变量都被包含在建模用的特征当中;

    • 但可通过敏感性分析校验:如增减混淆变量后重复完成计算步骤观测结果是否一致,或通过纳入不确定性对估算增量的区间值

    1. 当支撑集(实验、对照组的倾向分交集)较小时,PSM+DID估计的局部样本的增量,可能无法代表整体。

整体来说,若不过分追求准确性,PSM+DID是一个对因果增量预估的较为靠谱的方式。当实现过程中存在卡点或假设无法满足时,除了优化模型还可以尝试看看逆概率加权和合成控制法等其他方法。

参考文献

  1. Evaluating the performance of propensity score matching methods

  1. Some Practical Guidance for the Implementation of Propensity Score Matching

团队介绍

大淘宝技术用户平台数据洞察团队,利用数据科学能力助力淘宝用户增长、提升用户价值,从用户视角洞察用户需求,实现用户与平台的双赢。

✿  拓展阅读

倾向得分匹配(PSM)的原理以及应用

倾向得分匹配(PSM)的原理以及应用

作者|八卜

编辑|橙子君

倾向得分匹配(PSM)的原理以及应用文章来源地址https://www.toymoban.com/news/detail-455577.html

到了这里,关于倾向得分匹配(PSM)的原理以及应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生技术】云计算中,一些常见的Python框架以及它们对应的应用类型和主要用途

    Python有多个框架,每个框架适用于不同类型的应用程序。下面将介绍一些常见的Python框架以及它们对应的普通(普通应用)、原生(原生应用)、Mesh(Mesh应用)应用类型以及它们各自的主要用途: 1. Django: 应用类型: 普通应用:Django适用于构建各种类型的Web应用,包括博

    2024年01月21日
    浏览(59)
  • 【云原生技术】JavaScript在云计算中常用的一些框架,以及它们对应的应用类型和主要用途

    在云计算中,JavaScript语言主要用于前端Web开发和服务器端应用程序开发。以下是JavaScript在云计算中常用的一些框架,以及它们对应的应用类型和主要用途,按照您提供的格式进行详细介绍: 1. 前端框架: 框架: React, Angular, Vue.js 应用类型: 普通应用:前端框架如React、An

    2024年01月21日
    浏览(43)
  • 视频与图片检索中的多模态语义匹配模型 ——原理、启示、应用与展望

    三多前笔者在《万字长文漫谈视频理解》[1]一文中,曾经将自己对视频理解的认识进行过简单总结,幸而获得了朋友们的认可,能让读者认可是笔者最为骄傲的成就。现在看来文中观点有不少纰漏狭隘之处,特别是近年来多模态模型的流行,更让视频理解这个方向出现了诸多

    2024年02月14日
    浏览(140)
  • USBCodec芯片的工作原理以及应用

    USBCodec芯片通过USB接口从计算机中获取数字音频信号,并将其进行AO3401A采样处理。采样率通常为44.1kHz或48kHz,这是CD音质的标准采样率。高质量的USBCodec芯片还可以支持更高的采样率,例如96kHz或192kHz,以提供更好的音频体验。 USB耳机是一种数字音频设备,使用USB接口作为音频

    2024年02月09日
    浏览(31)
  • etcd概念及原理以及应用场景选型

    github:https://github.com/etcd-io/etcd 官方:https://etcd.io/ etcd是CoreOS团队于2013年6月发起的开源项目,授权协议为Apache。etcd是用于共享配置和服务发现的分布式,一致性的KV存储系统。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现 提供配置共享和服务发现的系统比较多,其

    2024年02月07日
    浏览(47)
  • 算法:图解位运算以及鸽巢原理应用

    本篇总结位运算中常见的算法题和思路,首先总结位运算中常见的题型 位运算主要包含 左移 右移 按位取反 ~ 按位与 按位或 | 按位异或 ^ 1. 给定一个数n,确认它的二进制表示中第x位是0还是1 解法: (nx) 1 原理: n 右移 x 个单位,就令所求元素的二进制位移动到了第一位,再

    2024年02月10日
    浏览(44)
  • Stable Diffusion原理以及CAC的应用

    添加本文记录 Stable Diffusion基于latent diffusion model(训练模型以生成图像的latent representations(压缩)) latent diffusion三个主要组件: An autoencoder (VAE).   VAE模型有编码器,解码器两部分。编码器用于将图像转换为低维潜在表示,作为U-Net模型的输入。解码器反过来,将潜在的表示转换

    2024年02月11日
    浏览(36)
  • ECC校验原理以及在Nand Flash中的应用

    ECC,全称为Error Correcting Code,错误纠正码,这是一种编码方式,用于在于可以在一定程度上自行发现和纠正传输过程中发生的错误。 纠错码能够检错或者纠错,主要靠码字之间的差别。这可以用汉明距离d(x,y)来衡量。一种纠错码的最小距离d定义为该种码中任意两个码字

    2024年02月02日
    浏览(44)
  • 51单片机原理及应用张毅刚版课后习题以及答案

    ①8位微处理器CPU ②数据存储器 128B RAM ③程序存储器 ④4个8位可编程并行I/O口 ⑤1个全双工的异步串行口 ⑥2个可编程的16位定时器/计数器 ⑦1个看门狗定时器WDT ⑧中断系统具有五个中断源 五个中断向量 ⑨特殊功能寄存器SFR 26个 ⑩ 低功耗节电模式有空闲模式和掉电保持模式

    2024年01月24日
    浏览(47)
  • 单级和串级pid原理分析以及pid应用与小车的技巧

    这篇文章主要是帮助理解和使用pid,不会讲复杂的代码公式。 重点在最后,一定要看到最后    pid可以看作是一种控制器,用来控制某个变量达到你想要的地步。 单级pid 这里我举个例子来理解一下: 假设有一个水缸,最终的控制目的是要保证水缸里的水位永远的维持在1米

    2024年02月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包