是否可以并行化匹配方法?

机器算法验证 匹配
2022-04-18 12:20:56

我正在按照本文(*.pdf) 中的说明进行匹配。我使用的数据集非常大,因此我必须从中提取一个(子)样本,才能真正到达任何地方。我在 R 中使用 MatchIt 包(与上述文章一起编写)。

我使用最近邻匹配,匹配从 logit 模型估计的倾向得分。

现在我一直在想;由于 logit 模型的估计非常快(8,000,000 obs 需要 2 分钟),并且数学搜索非常慢,是否可以并行化匹配算法?使用多个 CPU 来加快进程?

我意识到这在包装中是不可能的,就像现在一样,但它在理论上可行吗?伪代码或快速运行将不胜感激。

1个回答

最近邻匹配替换不能以直接的方式并行化。每个匹配取决于它之前发生的匹配(即,匹配必须按顺序执行)。这意味着无法在不相互通信的独立核心上执行匹配。一个例外是将最近邻匹配与一个或多个协变量上的精确匹配相结合;在这种情况下,您可以将匹配问题拆分为由要精确匹配的协变量层定义的单独匹配问题。例如,您可以请求对省份进行精确匹配(即,如果您有一个全国性的数据集),这会将匹配问题拆分为由省份定义的更小的问题。在这种情况下,

可以并行执行带替换的最近邻匹配,因为每个匹配不依赖于其他匹配的结果。一个控制单元是否已经与另一个处理单元匹配对于每个处理单元来说并不重要。处理过的单元可以进行分区,每个分区的匹配可以在其自己的核心上进行。

MatchIt自从提出这个问题以来已经更新,现在依赖于Rcpp匹配,这比提出这个问题时实现的原始基于 R 的代码要快得多。但是,如果有 800 万次观测,这仍然需要很长时间,并且可能会首选其他方法。