假设我们有一个混合分布,由密度定义, 在哪里是一个标量权重。此外,我们有有效的方法来评估分布的 pdf 和 cdf/icdf对应于密度. 我想从这样的分布中取样。
我目前采用的方法是拒绝抽样的实现。我构建了一个提案函数, 在哪里(构造成至少 99% 的 cdf包含在其中,使用 icdf) 和是通过找到. 因为这样的提案功能包络, 我可以采样通过选择并拒绝如果[是的第二个坐标]。
但是,这样做很慢。不仅提案功能不合时宜(它是统一缩放的,这可能会导致许多拒绝),而且非常慢,因为最大化函数是一项不平凡的任务。有没有更有效的方法来采样这种分布?我曾考虑过 icdf 采样,但构建 icdf似乎并不简单。这种印象不正确吗?或者也许还有其他有效的方法?如果有帮助,我将在 python 中实现它,目前正在使用 scipy 和 pytorch 库。