首页 > 解决方案 > Spark 带替换采样法的原理是什么?

问题描述

我正在研究 Spark,我有一个关于 sample() 方法的问题。你可能知道,sample() 需要三个参数

sample( withReplacement : boolean, Fraction : Double, seed : Long )

fraction当 withReplacement 为 True 时,我无法理解第二个。

在 Document 中,它表示每个元素的替换提取的期望值。

如果我在分数中输入 2 并且 RDD 有 10 个元素,它如何在里面采样?原理是什么?(我知道它不能保证 20 的采样量)

请帮我理解。

标签: scalaapache-sparkpysparkrdd

解决方案


为了实现带替换的采样,Spark正在使用PoissonSampler. 它从泊松分布中生成数字,以确定采样器应该跳过多少项目,然后再产生新值。

分数越高,泊松分布的 lambda 参数越低,或者换句话说,步长为 0 的概率越高,我们再次采用相同的项目。

泊松分布取决于 lambda

图片来自Skbkekas维基百科

请参阅采样器源代码以查看确切的过程。


推荐阅读